锁定vim中的一些文本以防止修改

时间:2011-05-02 07:07:41

标签: vim locking buffer

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

知道这是否可行?

干杯, V

3 个答案:

答案 0 :(得分:1)

嗯,据我所知,vim无法做到这一点。 vim缓冲区中的文本只是一个“字符串”,没有任何属性可以附加到它们。所以“readonly”只能是整个缓冲区,而不是特定的字符,虽然emacs能够添加文本属性,让缓冲区中的某些字符只读。

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

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

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

答案 1 :(得分:0)

有一个名为narrow region的插件可以编辑所选文本,而其他文本则完整无缺

答案 2 :(得分:0)

如果文本的“受保护”区域很容易定义(即通过它在文件中的位置或正则表达式),您可以尝试编写一个BufWritePre函数来检查该区域并抛出错误(如果有)被修改了。当我想阻止保存具有无效折叠结构的文件时,我使用了这个。

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

希望这有帮助。