我正在寻找一种方法来防止修改vim缓冲区的一部分。我知道锁定缓冲区是可能的,以防止内部的所有修改,但我也想对几行或一段进行同样的修改。
知道这有可能吗?
干杯,V
发布于 2011-05-02 13:58:24
嗯,我知道,维姆不能这么做。vim缓冲区中的文本只是一个“字符串”,没有任何属性可以附加到它们上。所以“只读”只能是对整个缓冲区,而不是特定的字符,虽然emacs可以添加文本属性让一些字符在缓冲区只读。
在另一个句柄上,如果您真的想编辑某些内容并使其不影响其他缓冲区内容。应该有另一种方式,虽然不优雅。
1.使用"setlocal buftype=nofile“创建临时缓冲区,将要编辑的文本插入到该缓冲区中。
2.在其他窗口上显示缓冲区(首先需要拆分)
3.编辑临时缓冲区。
4.关闭该缓冲区时,将结果“合并”到实际缓冲区中,并替换要编辑的文本。
因此,您需要通过一些键绑定和vim脚本来实现这一点,这不是一种简单的方法。
发布于 2011-05-03 07:44:13
如果文本的“受保护”区域易于定义(即根据其在文件中的位置或正则表达式),您可以尝试编写一个检查该区域的BufWritePre函数,并在修改该区域时抛出一个错误。当我想要防止保存具有无效折叠结构的文件时,我就采用了这种方法。
这可能包括在加载文件时将原始文本保存在变量中,这可能会对性能产生影响。
希望这能有所帮助。
发布于 2011-05-02 15:54:11
有一个名为窄区的插件,它编辑选定的文本,其余的保留不变。
https://stackoverflow.com/questions/5854390
复制相似问题