Vim 在插入模式下映射字符

Vim 在插入模式下映射字符

好的,这可能是一个非常基本的问题,但我刚刚学会了如何进行自定义键映射。

我试图让 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 等,还有很多)

相关内容