Как отправить сигнал ESC в vim, когда мой ключ не работает?

20

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

Сандра Росс
источник
13
Управление прессой[
Томас Дики
3
Несколько предложений на сайте vi.stackexchange.com/q/300/9708 .
Парень
2
новый Macbook Pro? <grin>
Руи Ф Рибейро
2
нет, ThinkPad X1 карбон
Сандра Росс

Ответы:

7

Несмотря на существующие решения, традиционным решением в Vim является переназначение ключей в вашей .vimrcконфигурации. На самом деле, многие пользователи Vim имеют более удобный доступ к ключу Esc. Популярные варианты: Ctrl+ Enter, или jj, и т. Д.

Чтобы включить это, просто вставьте в свой файл что-то вроде следующего .vimrcи перезагрузите / перезапустите Vim:

" Shift-Enter
inoremap <S-CR> <Esc>
" Double-j
inoremap jj <Esc>

Больше информации и альтернатив

Конрад Рудольф
источник
1
Эй, это путь Vim. Еще один распространенный способ, который продвигает Learn Vim the Hard Way (книга),inoremap jk <Esc>
grochmal
Это хорошее решение, но в чем проблема использовать только Ctrl + Enter + j?
Сандра Росс
@SandraRoss Вы действительно можете использовать любую комбинацию клавиш, которая вам нравится (хотя учтите, что некоторые из них, например, Ctrl-Enter, не работают в macOS). Тем не менее, Ctrl + Enter + j кажется мне более трудным для ввода, и я, честно говоря, не знаю, можно ли даже настроить комбинации трех клавиш с двумя немодифицированными клавишами (Enter, j) в Vim.
Конрад Рудольф
Хорошо, я берусь На самом деле, Ctrl + Enter + jj не работает для меня, потому что, действительно, я использую macos X. По крайней мере, не могли бы вы сказать мне, что я должен ввести только для Ctrl + j.
Сандра Росс
@SandraRoss Для этого inoremap <C-j> <Esc>должно работать. :-)
Конрад Рудольф
32

Ctrl- [отправляет в терминал тот же символ, что и физический Escключ. Последнее, как правило, просто ярлык для первого.

DopeGhoti
источник
3
У меня когда-то был настоящий терминал vt220, а на его клавиатуре нет Escapeклавиши. Нажатие Ctrl+[было единственным способом генерировать Escape.
Кусалананда
11

Если вы хотите использовать один ключ, в качестве решения * nix (без сопоставлений Vim) вы можете определить другой ключ как Esc. Так же , как пользователи Emacs переназначить CapsLockдля Ctrlнекоторых пользователей Vim (включая меня) переназначить CapsLockк Esc. Это работает для любого * nix, использующего X11.

Используйте xev -event keyboard(и затем нажмите CapsLock), чтобы получить код CapsLockклавиши для ключа (для меня это код клавиши 66). Затем вы можете использовать xmodmapдля переназначения ключа:

xmodmap -e 'remove Lock = Caps_Lock' -e 'keycode 66 = Escape'

Чтобы получить это при входе в систему, вы можете добавить следующие xmodmapвыражения ~/.Xmodmap:

remove Lock = Caps_Lock
keycode 66 = Escape

Хотя для второй части YMMV, так как не все дисплеи работают ~/.Xmodmap. Вам может понадобиться добавить xmodmap .Xmodmapв .xinitrcнекоторых из них.

grochmal
источник
Я точно знаю, что вы имеете в виду. Я видел это ранее на этой неделе
Сандра Росс
Я бы сделал это, но я использую CapsLock в качестве своего ключа Compose (:
DopeGhoti
6

Вы можете попробовать Ctrl-C, который работает для меня и, на мой взгляд, проще, чем ESC. Однако я не уверен, включен ли он по умолчанию.

vatsug
источник
CTRL-C - это ASCII 0x03, отправляет SIGINT в оболочку - не то же самое, что ESC.
кот
@cat В vim все работает в основном так же. Я всегда использую Ctrl-C вместо Esc
Erik W
1
@cat: Вы получаете это бесплатно, потому что у vim есть этот обработчик. Вам не нужно ничего делать самостоятельно. Этот ответ работает из коробки; Я только что попробовал это. Работает ли это вообще для любого приложения? Нет, но это не то, о чем просили.
Легкость гонки с Моникой
2
@cat: Действительно? Заголовок: «Как отправить сигнал ESC в vim, когда мой ключ esc не работает?» , единственный тег - это vim , и проблема, описанная в этом вопросе, связана с выходом из режима вставки Vim. Вот краткая часть вопроса: «Существует ли еще один ключ, используемый для отключения режима вставки». Если это не относится к Vim и его режиму вставки, то я не знаю, что это!
Легкость гонок с Моникой
1
@LightnessRacesinOrbit Ну, когда я увидел название изначально, это был «Еще один ключ, используемый для Esc», и вопрос вообще не выглядел специфичным vim. извиняюсь! ¯_ (ツ) _ / ¯
кошка
-3

Ctrl + F2

Включено по умолчанию. Не нужно настраивать какие-либо настройки.

Вы перейдете в обычный режим, где вы можете сделать :q! or :wq.

Радж
источник
3
Ctrl+F2может отправить побег, но это также отправит другие вещи.
Кусалананда