我想在命令行模式下映射VIM中的键,但不是在搜索模式下(带有前导/),如下所示:
>将Q映射到q
>将W映射到w
有时我在VIM中键入了错误的命令,例如:Q和:W,我想让这些错误的命令正确.
如果我可以将Q映射到q并将W映射到w,我可以使错误的命令正确.
我试过cmap Q q和cmap W w,但是这也会影响搜索模式,即/ Query为/ query(实际上你不能输入上面的Q).
我也试过了cabbrev Q q,这也会影响搜索模式.
那么,还有其他命令可以满足我的要求吗?
谢谢.
解决方法
有很多方法可以做到,而且两者都不是很简单.
使用命令,您需要处理属性:
command! -nargs=* -complete=file -range=% -bang -bar W w command! -bang -bar Q q
使用cabbrev,wiki中描述了陷阱,因此您需要这样做:
cnoreabbrev W <C-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'w' : 'W')<CR>
function! s:CAbbrev(from,to) execute 'cnoreabbrev ' . a:from . ' <C-r>=(getcmdtype()==#'':'' && getcmdpos()==1 ? ' . string(a:to) . ' : ' . string(a:from) . ')<CR>' endfunction
使用cmap,您需要< expr>限定符,你需要或多或少与cabbrev相同的预防措施:
cnoremap <Nowait> <expr> W getcmdtype() ==# ':' && getcmdpos() == 1 ? 'w' : 'W'
最安全的可能是捷径.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。