Как отправить сигнал ESC в vim, когда мой ключ не работает?
20
У меня проблема с Escключом, когда я хочу вернуться в интерактивный режим из режима вставки. Существует ли еще один ключ, используемый для отключения режима вставки.
Несмотря на существующие решения, традиционным решением в Vim является переназначение ключей в вашей .vimrcконфигурации. На самом деле, многие пользователи Vim имеют более удобный доступ к ключу Esc. Популярные варианты: Ctrl+ Enter, или jj, и т. Д.
Чтобы включить это, просто вставьте в свой файл что-то вроде следующего .vimrcи перезагрузите / перезапустите Vim:
Эй, это путь 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ключ. Последнее, как правило, просто ярлык для первого.
У меня когда-то был настоящий терминал vt220, а на его клавиатуре нет Escapeклавиши. Нажатие Ctrl+[было единственным способом генерировать Escape.
Кусалананда
11
Если вы хотите использовать один ключ, в качестве решения * nix (без сопоставлений Vim) вы можете определить другой ключ как Esc. Так же , как пользователи Emacs переназначить CapsLockдля Ctrlнекоторых пользователей Vim (включая меня) переназначить CapsLockк Esc. Это работает для любого * nix, использующего X11.
Используйте xev -event keyboard(и затем нажмите CapsLock), чтобы получить код CapsLockклавиши для ключа (для меня это код клавиши 66). Затем вы можете использовать xmodmapдля переназначения ключа:
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.
[
Ответы:
Несмотря на существующие решения, традиционным решением в Vim является переназначение ключей в вашей
.vimrc
конфигурации. На самом деле, многие пользователи Vim имеют более удобный доступ к ключу Esc. Популярные варианты: Ctrl+ Enter, или jj, и т. Д.Чтобы включить это, просто вставьте в свой файл что-то вроде следующего
.vimrc
и перезагрузите / перезапустите Vim:Больше информации и альтернатив
источник
inoremap jk <Esc>
inoremap <C-j> <Esc>
должно работать. :-)Ctrl- [отправляет в терминал тот же символ, что и физический Escключ. Последнее, как правило, просто ярлык для первого.
источник
Escape
клавиши. НажатиеCtrl+[
было единственным способом генерироватьEscape
.Если вы хотите использовать один ключ, в качестве решения * nix (без сопоставлений Vim) вы можете определить другой ключ как Esc. Так же , как пользователи Emacs переназначить CapsLockдля Ctrlнекоторых пользователей Vim (включая меня) переназначить CapsLockк Esc. Это работает для любого * nix, использующего X11.
Используйте
xev -event keyboard
(и затем нажмите CapsLock), чтобы получить код CapsLockклавиши для ключа (для меня это код клавиши 66). Затем вы можете использоватьxmodmap
для переназначения ключа:Чтобы получить это при входе в систему, вы можете добавить следующие
xmodmap
выражения~/.Xmodmap
:Хотя для второй части YMMV, так как не все дисплеи работают
~/.Xmodmap
. Вам может понадобиться добавитьxmodmap .Xmodmap
в.xinitrc
некоторых из них.источник
Вы можете попробовать Ctrl-C, который работает для меня и, на мой взгляд, проще, чем ESC. Однако я не уверен, включен ли он по умолчанию.
источник
0x03
, отправляет SIGINT в оболочку - не то же самое, что ESC.vim
. извиняюсь! ¯_ (ツ) _ / ¯Ctrl + F2
Включено по умолчанию. Не нужно настраивать какие-либо настройки.
Вы перейдете в обычный режим, где вы можете сделать
:q! or :wq
.источник
Ctrl+F2
может отправить побег, но это также отправит другие вещи.