2009-07-01 64 views
2

有没有人知道一个编辑器能够执行精确的行长度(如果允许通过文件名/扩展名关联最大行长度,那么奖金)?可以强制执行精确(不是最大)行长度的编辑器?

我的意思是确切的行长度是编辑器总是会保存每行填充到最大行长度(由用户定义)。例如,如果文件的行长度应为120个字符,则文件中的每行将为120个字符,如果需要填充空白,请按照适当的换行符指示符进行操作。当某人编辑一行时,如果行长度达到最大长度,编辑器将阻止他们输入。

平台是Win XP/Vista。

+0

我会咬人:为什么? – Beska 2009-07-01 18:26:26

+0

简短的回答是:我们将系统从z/OS移植到WIN32。一个模块处理从定制文件系统将数据加载到内存中。我们有很多其他模块依赖于正在加载的数据的结构。由于大型机上数据集的性质,记录被填充到数据集的LRECL属性中。在大型机上,用户可以使用ISPF Edit编辑这些数据表。我们需要给用户一种像往常一样编辑数据的方式,但是不用担心非精明的用户会搞砸数据。 – 2009-07-01 20:24:23

+0

我也在寻找阻力最小的解决方案。在这一点上,时间不在我们这边。 – 2009-07-01 20:25:18

回答

0

Vim

 
:syn match Error /^.{,119}$/ 
:syn match Error /.{121,}/ 

这将导致长的任何线!= 120到与固体红色背景(在默认颜色方案)被高亮显示。

如果你写这个(没有前导冒号)为$VIMRUNTIME/syntax/foo.vim,并放置

 
:au BufRead,BufNewFile *.foo set filetype=foo 
:au Syntax foo source $VIMRUNTIME/syntax/foo.vim 
vimrc

或通常ftdetectsynload.vim位置,然后只要语法高亮显示已启用,这些规则就会自动将适用于您在Vim中打开的任何*.foo文件。

(见:h mysyntaxfile-add如果要添加到现有的语法文件,看看:h rtp你的平台上的默认路径$VIMRUNTIME

0

我不知道有一个编辑器处理这种类型的输入,但是,我可以说,总的来说,实际创建一个以这种方式工作的系统并不难。

0

Zeus editor不能强制执行这一规则,而是通过使用2阶段搜索和替换它将有可能将文件转换为半自动时尚这种格式。

第一步:通过运行以下正则表达式搜索并替换以填充字符串,使所有行长度超过120个字符。

Search: (.*)\n 
Replace: \1        \n 

注:的取代如上所示应有120空白字符而不仅仅是30中所示的字符串。

第二步:使用此正则表达式搜索和替换,修剪120个字符标记处的行。

Search: ^(.{120,120})(.*)\n 
Replace: /1\n 

此时文件中的所有行长度都是120个字符。

但是,为了确保这些长度棒,确保宙斯选项的白装饰线条上保存被禁用;)

此外,由于宙斯是编写脚本,这将是可能的半自动化这个过程通过编写一个简单的宏脚本来运行这两个操作。

最后Zeus有一个选项可以在触发器上运行一个宏脚本,这样就可以将该宏添加到save trigger以使其成为半自动。

我确定可以配置任何脚本编辑器来做类似的事情。

相关问题