有没有办法将不可修改的文本插入可修改的缓冲区。如果可能的话,我也希望更改插入文本的语法高亮。
示例(我想要实现的目标):
缓冲区的内容:
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...
答案 0 :(得分:1)
您无法强制Vim命令不会更改某些行。缓冲区只能被锁定"完全,但清除'modifiable'
选项。
您可以实现的最佳目标是恢复这些线条的原始内容。这可以通过:autocmd
完成。合适的触发事件是BufWritePre
;可以进行更改,但会在持久化缓冲区之前立即恢复。演示:
:autocmd BufWritePre <buffer> call setline(2, '[non-modifiable text]')
要突出显示,您可以扩展语法突出显示,或使用基于语法的(窗口本地):match
:
:match NonText /^\[non-modifiable text\]$/