VIM: отключение курсора / клавиш со стрелками, но только для навигации - PullRequest
55 голосов
/ 20 марта 2011
inoremap  <Up>     <NOP>
inoremap  <Down>   <NOP>
inoremap  <Left>   <NOP>
inoremap  <Right>  <NOP>
noremap   <Up>     <NOP>
noremap   <Down>   <NOP>
noremap   <Left>   <NOP>
noremap   <Right>  <NOP>

Это то, что я использую для отключения навигации курсора, чтобы помочь мне придерживаться hjkl:)

Но это также отключает курсор на панели команд ... обычно клавиши со стрелками позволяют циклически переключатьсячерез историю

Можно ли отключить клавиши курсора ТОЛЬКО для навигации, а не для истории?

Ответы [ 7 ]

28 голосов
/ 14 сентября 2013

Добавьте в файл .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>
25 голосов
/ 15 октября 2012

Вы можете прокрутить историю, используя C-n и C-p (Ctrl + n и Ctrl + p соответственно).

10 голосов
/ 20 марта 2011

Код, который вы опубликовали, не должен отключать навигацию по истории в режиме командной строки. Вы уверены, что у вас нет cnoremap <Up> <Nop> или noremap! <Up> <Nop> где-нибудь?Попробуйте verbose cmap <Up>, она покажет вам, переопределена ли клавиша <Up> для режима командной строки.


Если, говоря «командная строка», вы имели в виду окно командной строки, вы можете попробовать следующее:

nnoremap <expr> <Up> ((bufname("%") is# "[Command Line]")?("\<Up>"):(""))
6 голосов
/ 26 апреля 2013

Для меня это работает:

map <Left> <Nop>
map <Right> <Nop>
map <Up> <Nop>
map <Down> <Nop>

Взято из: https://github.com/garybernhardt/dotfiles/blob/master/.vimrc#L148

1 голос
/ 11 февраля 2015

Используйте q:, чтобы открыть разделенное окно вашей командной строки.Вы можете перемещаться по нему в обычном режиме, так как это обычное окно vim, используя hjkl и другие обычные движения vim, и нажмите Enter, чтобы запустить команду под курсором.

Не используйте клавиши со стрелками для навигации вистория командной строки.

Кстати, вы также можете получить доступ к своей истории поиска, используя q/ или q?.

0 голосов
/ 09 февраля 2017

Вы также можете подумать о том, чтобы переназначить их для перемещения между разделенными окнами. Это отключает клавиши со стрелками для направленного перемещения внутри файла, но позволяет перемещаться между разделенными окнами.

noremap <up> <C-w><up>
noremap <down> <C-w><down>
noremap <left> <C-w><left>
noremap <right> <C-w><right> 
0 голосов
/ 20 марта 2011

Измените noremap на nnoremap, чтобы применить сопоставления к обычному режиму, в противном случае это глобальные сопоставления всех режимов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...