我有一个映射
:cnoremap ch call ShowHistoryMatching
问题是ch
个字符在任何情况下都会被输入,无论是在cmap输入的开头还是后面,都会扩展到正确的句子。
问题是当我尝试使用/
或?
在vim中搜索单词时,例如对于
/cache
- 它将使用上面的映射进行扩展。
如何将映射ch设置为仅在命令开头出现时才会被扩展?
答案 0 :(得分:1)
cmap
是出了名的狡猾,因为它们经常在错误的环境中执行。一些更好的选择:
nnoremap <leader>ch :call ShowHistoryMatching()<cr>
command Ch call ShowHistoryMatching()
就个人而言,我只想创建一个新命令。
答案 1 :(得分:0)
您可以使用getcmdpos()
功能确定您是否在该行的开头或其他地方。这种技术可以replace a built-in command using an abbreviation或者您可以调整它以用于映射,可能使用<expr>
映射。