将不可修改的文本插入vim缓冲区

时间:2018-01-19 08:20:18

标签: vim vim-plugin

有没有办法将不可修改的文本插入可修改的缓冲区。如果可能的话,我也希望更改插入文本的语法高亮。

示例(我想要实现的目标):

缓冲区的内容:

text...
/* this is a script which can be replaced
the second line of the script */
other text...

我突出显示第二行和第三行并运行我的插件,将行替换为不可修改的文本。

text...
[non-modifiable text]
other text...

如果我再次在不可修改的文本上运行我的插件,它将替换回其原始内容。

text...
/* this is a script which can be replaced
the second line of the script */
other text...

1 个答案:

答案 0 :(得分:1)

您无法强制Vim命令不会更改某些行。缓冲区只能被锁定"完全,但清除'modifiable'选项。

您可以实现的最佳目标是恢复这些线条的原始内容。这可以通过:autocmd完成。合适的触发事件是BufWritePre;可以进行更改,但会在持久化缓冲区之前立即恢复。演示:

:autocmd BufWritePre <buffer> call setline(2, '[non-modifiable text]')

要突出显示,您可以扩展语法突出显示,或使用基于语法的(窗口本地):match

:match NonText /^\[non-modifiable text\]$/