vim – 如何在命令行模式下映射键,但不在搜索模式下映射
发布时间:2020-12-15 21:01:05 所属栏目:安全 来源:网络整理
导读:我想在命令行模式下映射VIM中的键,但不是在搜索模式下(带有前导/),如下所示: 将Q映射到q 将W映射到w 有时我在VIM中键入了错误的命令,例如:Q和:W,我想让这些错误的命令正确. 如果我可以将Q映射到q并将W映射到w,我可以使错误的命令正确. 我试过cmap Q q和cm
我想在命令行模式下映射VIM中的键,但不是在搜索模式下(带有前导/),如下所示:
>将Q映射到q 有时我在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' 最安全的可能是捷径. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |