2011-05-02 72 views
3

我正在寻找一种方法来防止修改的vim缓冲区的一部分。我知道可以锁定缓冲区来防止内部的所有修改,但我想只为几行或一个段落做同样的事情。在vim中锁定一些文本以防止修改

任何想法,如果这是可能的?

干杯, V

回答

1

好了,因为我知道,VIM不能做到这一点。 vim缓冲区中的文本只是一个“字符串”,没有任何属性可以附加到它们。因此,“只读”可以仅用于整个缓冲区,但不是特定的字符,尽管emacs能够添加文本属性以使缓冲区中的某些字符只读。

在另一个句柄上,如果你真的想编辑一些东西并且使其不影响其他缓冲区内容。应该有一种替代方式,虽然不够高雅。

1.使用“setlocal buftype = nofile”创建临时缓冲区,将要编辑的文本插入该缓冲区。
2.在其他窗口显示缓冲区(需先拆分)
3.编辑临时缓冲区。
4.关闭该缓冲区时,将结果“合并”到实际缓冲区中,并替换要编辑的文本。

所以,你需要通过一些键绑定和vim脚本来做到这一点,而不是一个简单的方法。

0

有一个名为narrow region插件,一个编辑所选文本保留完好,其余

+0

这不完全是我所需要的,但很高兴知道这个插件,谢谢! – Vinz 2011-05-06 09:19:13

0

如果“保护”文本的区域容易定义(通过其在文件中的位置,或正则表达式IE),你可以尝试编写一个BufWritePre函数来检查这个区域,如果它已被修改则抛出一个错误。当我想防止保存具有无效折叠结构的文件时,我采取了这种措施。

推测这可能涉及将文件加载时将原始文本保存在变量中,这可能会影响性能。

希望这会有所帮助。