我想在命令行模式下而不是在搜索模式下(带有前导/)映射 VIM 中的一个键,如下所示:
有时我在 VIM 中输入了错误的命令,例如:Q和:W,我想让这些错误的命令正确。
如果我可以映射Q到q和W到w,我可以使错误的命令正确。
我试过cmap Q qand cmap W w,但这也会影响搜索模式,即/Queryto be /query(实际上你不能输入上面的 Q)。
而且我也试过cabbrev Q q,这也会影响搜索模式。
那么,有没有其他命令可以满足我的要求?
谢谢。
有很多种方法可以做到这一点,但没有一种方法是真正简单的。
您需要command注意以下属性:
command! -nargs=* -complete=file -range=% -bang -bar W w
command! -bang -bar Q q
Run Code Online (Sandbox Code Playgroud)
由于wikicabbrev中描述了这些陷阱,因此您需要这样做:
cnoreabbrev W <C-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'w' : 'W')<CR>
Run Code Online (Sandbox Code Playgroud)
我有一个用于此目的的函数:
function! s:CAbbrev(from, to)
execute 'cnoreabbrev ' . a:from . ' <C-r>=(getcmdtype()==#'':'' && getcmdpos()==1 ? ' . string(a:to) . ' : ' . string(a:from) . ')<CR>'
endfunction
Run Code Online (Sandbox Code Playgroud)
cmap您需要限定符,并且<expr>您需要或多或少与以下相同的预防措施cabbrev:
cnoremap <nowait> <expr> W getcmdtype() ==# ':' && getcmdpos() == 1 ? 'w' : 'W'
Run Code Online (Sandbox Code Playgroud)
最安全的方法可能是cabbrev。
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |