好的,这可能是一个非常基本的问题,但我刚刚学会了如何进行自定义键映射。
我试图让 vim 在输入“class”时自动“结束”下面两行,因此我写了以下内容.vimrc
:
:imap class class<CR><CR>end
所以这工作得很好,除了现在当我开始输入“class”时,vim 会重复输入“class”的每个字母,直到我输入完毕或我输入的内容不再与“class”匹配。
有没有办法避免这种行为,我希望能够在输入时看到我正在输入的内容,即使它与映射的键序列匹配?
不确定我是否解释正确。
感谢帮助
答案1
您正在寻找
:inoreab class class<cr><cr>end
相同的 ( nore
) 也可以用于映射,但是映射不太适合这样的片段。
顺便说一句,缩写应该根据您将使用它的文件类型进行声明(Ruby?)->
" in ~/.vim/ftplugin/ruby/my_snippets.vim
:inoreab <buffer> class class<cr><cr>end
请注意,在字符串或注释中输入“class”时,它不会展开。你要么必须依靠处理上下文的函数或片段(这将更容易维护)
例如,使用 lh-bracket,您可以定义:
:Inoreab <buffer> class <c-r>=InsertSeq('class', 'class !cursorhere!\<cr\>!mark!\<cr\>end!mark!')<cr>
但我真的建议您使用代码片段引擎(mu-template、utilsnip、snipmate 等,还有很多)