在Vim中给定列之前阻止编辑文本

时间:2016-06-19 07:58:29

标签: vim scripting text-editor vim-plugin

我正在编写一个向用户提供表单的插件。一切都运作良好,但是如果我能阻止对前两个列的编辑进行完全成功,那将会很棒。基本上,这等于:<Nop>col(".") < X,但我不知道如何连接到插入模式下按下的每个键。我的方向是否正确,如何连接击键?

此外,我还想阻止从第一行7行编辑选定的行。

1 个答案:

答案 0 :(得分:1)

您可以在modifiable自动命令中使用选项CursorMoved,例如:

au CursorMoved * call CheckCursorPos()

function! CheckCursorPos()
    " This code has to be improved, it's just an example:
    if col('.') <= 2
        set nomodifiable
    else
        set modifiable
    endif
endf

您可以在函数内添加更复杂的测试(例如,处理7个第一行)。

要使其完整,您还必须根据自己的喜好处理CursorMovedI自动命令,否则版本可能会进入编辑模式(例如,如果您按第4列上的i,则可修改,然后回到行的开头,版本将是可能的)