我有一个映射
:cnoremap ch 调用 ShowHistoryMatching
问题是 ch
字符在任何情况下都会扩展为正确的句子,无论是在 cmap 输入的开头还是后面。
问题是当我尝试使用 /
或 ?
在 vim 中搜索单词时,例如为了
/cache
- 它将使用上面的映射进行扩展。
如何设置仅当映射 ch 出现在命令开头时才扩展?
最佳答案
cmap
众所周知,它们非常棘手,因为它们经常在错误的上下文中执行。一些更好的选择:
- 使用法线贴图,例如
nnoremap <leader>ch :call ShowHistoryMatching()<cr>
- 创建一个命令,例如
command Ch call ShowHistoryMatching()
- 使用 cmdalias.vim插件
- 使用更巧妙的缩写,如 vim change :x function to delete buffer instead of save & quit 中所述。邮政。与 cmdailias.vim 类似的技术。
就我个人而言,我只会创建一个新命令。
关于vim cmap lhs 仅在开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279859/