可以强制执行精确(非最大)行长度的编辑器?

时间:2009-07-01 17:32:40

标签: windows editor

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

精确行长度的意思是编辑器将始终保存每行填充到最大行长度(由用户定义)。例如,如果文件的行长度为120个字符,则文件中的每一行长度为120个字符,如果需要填充空格,请使用相应的换行符指示符。当有人编辑一行时,如果行长度达到最大长度,编辑器将阻止他们输入。

平台是Win XP / Vista。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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位置,只要启用了语法突出显示,这些规则就会自动应用于您打开的任何*.foo文件在Vim。

(如果您要添加到现有语法文件,请参阅:h mysyntaxfile-add,并在平台上查看:h rtp以获取默认$VIMRUNTIME路径。)

答案 2 :(得分:0)

Zeus editor无法强制执行此规则,但通过使用两阶段搜索并替换,可以将文件转换为此格式的半自动时尚。

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

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

注意:上面显示的替换字符串应该包含 120个空白字符,而不仅仅是显示的30个字符。

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

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

此时文件中的所有行的长度恰好为120个字符。

但要确保这些长度不变,请确保修剪上的白色线条的Zeus选项已禁用;)

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

最后Zeus可以选择在触发器上运行宏脚本,以便可以将宏添加到save trigger以使其半自动。

我确信可以配置任何可编写脚本的编辑器来执行类似的操作。