Подтвердить что ты не робот

VIM: отключить курсор/клавиши со стрелками, но только для навигации

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:)

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

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

4b9b3361

Ответ 1

Добавьте в файл .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>

Ответ 2

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

Ответ 3

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


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

nnoremap <expr> <Up> ((bufname("%") is# "[Command Line]")?("\<Up>"):(""))

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

noremap <up> <C-w><up>
noremap <down> <C-w><down>
noremap <left> <C-w><left>
noremap <right> <C-w><right>