Как отключить Esc и клавиши курсора в vim - PullRequest
10 голосов
/ 13 декабря 2011

Существует мнение, что при работе в vim вы не должны использовать клавишу Esc (вместо этого используйте ctrl + c) и не используйте клавиши со стрелками (h, j, k, l) на клавиатуре.Но трудно не использовать эти ключи.Я думал, что есть способ отключить эти ключи в .vimrc, поэтому не будет другого выбора, кроме как использовать ctrl + c и hjkl.

Я немного искал и нашел решение по этому ссылка .Поэтому я вставил в свой файл .vimrc следующее:

 inoremap  <Up>     <NOP>
 inoremap  <Down>   <NOP>
 inoremap  <Left>   <NOP>
 inoremap  <Right>  <NOP>
 inoremap  <Esc>    <NOP>
 noremap   <Up>     <NOP>
 noremap   <Down>   <NOP>
 noremap   <Left>   <NOP>
 noremap   <Right>  <NOP>
 noremap   <Esc>    <NOP>

Но это не работает.Добавление этого к моему .vimrc нарушает мое отображение на функциональные клавиши.Другая проблема заключается в том, что он не блокирует функцию клавиш со стрелками, а когда я нажимаю Вниз в обычном режиме, выполняется несколько действий - курсор поднимается на одну строку, создается новая строка и вставляется символ «B».

Как я могу отключить в моем vim 7.2 клавиши курсора и клавишу Esc, не ломая ничего?

Ответы [ 3 ]

17 голосов
/ 13 декабря 2011

Если вы используете vim в терминале, вы абсолютно не должны переназначать Escape.Из-за того, как ключи обрабатываются в vim (и, возможно, в терминалах в целом), переназначение его приведет к поломке всех видов ключей, которые вы не собирались менять.Чтобы понять, что я имею в виду, сделайте следующее.

  1. Откройте vim без файлов запуска: vim -u NONE --noplugin -N.
  2. Войдите в режим вставки.
  3. Нажмите Ctrl-v сопровождаемый любой из функциональных клавиш, таких как <F2>.

Обратите внимание на введенную последовательность.Скорее всего, он начинается с ^[, который является буквальным Escape.

Теперь откройте, попробуйте следующее:

  1. :inoremap <esc> NO ESCAPE FOR YOU
  2. Войдите в режим вставки.
  3. Нажмите любую из функциональных клавиш, например <F2>.

Если в предыдущей последовательности был символ выхода как часть нажатия клавиши <F2>, вы увидитенаша новая строка выводится на экран.Фактически, теперь, когда у вас есть отображение, попробуйте перемещаться с помощью клавиш курсора.Вы, вероятно, заметите то же самое странное поведение.

В заключение, не переназначайте побег, я почти гарантирую, что у вас будут неожиданные последствия.

7 голосов
/ 13 декабря 2011

Вот нехитрый способ добиться того, чего вы хотите: Скомкать кусочки бумаги до размера большого пальца и прикрепить их к клавишам. В тот момент, когда ваш палец попытается добраться до них, вы наткнетесь на бумагу. Они станут хорошим напоминанием. Держите их там, пока вы не перестанете врезаться в них.

3 голосов
/ 21 февраля 2013

То, что у вас было близко:

inoremap <esc>   <NOP>
inoremap <Left>  <NOP>
inoremap <Right> <NOP>
inoremap <Up>    <NOP>
inoremap <Down>  <NOP>
nnoremap <Left>  <NOP>
nnoremap <Right> <NOP>
nnoremap <Up>    <NOP>
nnoremap <Down>  <NOP>

Эта линия доставляла вам неприятности:

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