inoremap <Up> <NOP>
inoremap <Down> <NOP>
inoremap <Left> <NOP>
inoremap <Right> <NOP>
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>
Run Code Online (Sandbox Code Playgroud)
这是我用来禁用光标导航,帮我坚持hjkl :)
但它也会禁用命令栏上的光标...通常,使用箭头键可以循环显示历史记录
是否可以仅禁用光标键进行导航,而不是历史记录?
小智 28
在您的.vimrc文件中添加以下内容:
" Disable Arrow keys in Escape mode
map <up> <nop>
map <down> <nop>
map <left> <nop>
map <right> <nop>
" Disable Arrow keys in Insert mode
imap <up> <nop>
imap <down> <nop>
imap <left> <nop>
imap <right> <nop>
Run Code Online (Sandbox Code Playgroud)
ZyX*_*ZyX 10
您发布的代码不应该在命令行模式下禁用历史记录导航,您确定没有cnoremap <Up> <Nop>或在noremap! <Up> <Nop>某处?尝试verbose cmap <Up>它应该显示是否<Up>为命令行模式重新定义了键.
如果说"命令栏"你的意思是命令行窗口,你可以尝试以下方法:
nnoremap <expr> <Up> ((bufname("%") is# "[Command Line]")?("\<Up>"):(""))
Run Code Online (Sandbox Code Playgroud)
对我来说,这有效:
map <Left> <Nop>
map <Right> <Nop>
map <Up> <Nop>
map <Down> <Nop>
Run Code Online (Sandbox Code Playgroud)
取自:https: //github.com/garybernhardt/dotfiles/blob/master/.vimrc#L148