Основная причина, по которой я люблю vim, а не emacs, заключается в том, что расстояние перемещения моей руки от домашнего ряда очень мало (даже для программиста). Однако основное время, которое я делаю, это выход из режима вставки нажатием клавиши Escape.
Недавно я узнал, что могу также использовать Ctrl + C, чтобы выйти из режима вставки. Тем не менее, это не совсем улучшение.
Как выйти из режима вставки без того, чтобы мои руки покинули домашний ряд, и без значительного влияния на то, что я могу печатать? Примечание: я использую в основном vanilla vim с раскладкой клавиатуры дворака, хотя я бы тоже хотел услышать решения для раскладки qwerty.
key-bindings
insert-mode
keyboard-layout
escape
durron597
источник
источник
Ответы:
Обычная привязка, которую вы увидите, это jj , потому что она хорошо работает для раскладок QWERTY, если вы используете домашнее позиционирование строк.
В этом случае, чтобы набрать литерал
jj
- вы должны подождать 1 секунду (по умолчанию) между вводом второго символа. (:help 'timeout'
подробности см. )Есть также,
c-o
который вытащит вас из вставки, позволит вам выполнить одну обычную команду, а затем вернет вас обратно во вставку.http://vim.wikia.com/wiki/Avoid_the_escape_key
источник
j
этоc
ключ. Так что это не так уж плохо (напечататьcc
). Я мог также связатьhh
(qwertyj
key = dvorakh
), который загрузил бы меня, только если я печаталshhhhhhh
или что-то еще.jk
? Найдите две клавиши, которые находятся рядом в Дворжаке, но не являются общими комбинациями на предпочитаемом вами языке.tn
Например, позиционный эквивалентjk
.jk
/kj
выходить из нормального режима даже в Дворжаке; это клавиши «c» и «v» на QWERTY-клавиатуре, поэтому они удобны для моего левого указателя и среднего пальца.ii
вместо этого. Да, вы должны убрать пальцы с домашнего ряда, но это все еще удобно. И что еще более важно, вы можете переключаться между режимами, не двигая пальцем.Помимо встроенных альтернатив
<C-[>
и<C-c>
к<Esc>
ключу цитируемого другими, еще одним популярным решением является переназначить в<CapsLock>
качестве дополнительного Escape. Это как на клавиатуре Qwerty, так и на двораке.Таким образом, вы можете очень легко нажимать Esc левым мизинцем, не отрывая рук от HomeRow (кстати, CapsLock - это то место, где Escape находился на клавиатурах, когда был изобретен vi).
Преобразование может быть сделано:
в Linux меняется в зависимости от среды рабочего стола. Например, в Linux Mint / Cinnamon достаточно выбрать правильный параметр в меню-> Клавиатура-> Раскладки клавиатуры-> Поведение Caps Lock. В качестве альтернативы, но не так просто, его можно переназначить на уровне Xorg с помощью программы xmodmap и запустить следующий
.Xmodmap
файл:Систему можно настроить так, чтобы она автоматически запускалась при каждом входе в систему, стратегически размещая следующие строки сценариев оболочки (предположительно
.Xmodmap
, в вашей домашней~
директории) в цепочке файлов с автоматическим источником входа в систему:Однако это непросто, поскольку файлы на самом деле зависят от используемой среды (рабочего стола). В качестве примера у меня есть xmodmap, называемая записью в Cinnamon «Startup Applications» (что позволяет мне делать больше, чем обычная настройка переназначения ключей GUI).
Некоторые люди идут еще дальше и программируют ключ CapsLock так:
Ctrl
ключ, нажав и удерживая его,Esc
ключ, нажав и быстро отпустив его.Это можно сделать в Windows и Mac, правильно установив / запрограммировав соответствующую утилиту переназначения (в частности, подсказки для AutoHotkey можно найти здесь, а для проверки KeyRemap4MacBook здесь ). На Linux используется программа xcape .
источник
Ctrl
клавиши (в обычном положении) без скручивания мизинца: вы можете нажать ее внешней ладонью, как это хорошо описано здесь (я нашел этот хороший умный трюк в сети, время дать ему назад :) и слава тому, кто это придумал)Ctrl
наAlt
(Cmd
) и наоборот, то<C-[>
действительно светит. Пинки слабые, большой палец сильный. На QWERTY вам даже не нужно выходить из дома, для этого на Dvorak это не так хорошо, но приемлемо.Отображения, которые я использую:
Таким образом, вы можете просто нажать jи kодновременно, не беспокоясь о том, что вы нажмете первым.
источник
<C-[>
и<C-c>
две родные альтернативы<Esc>
.Смотрите,
:help i_<esc>
и:help i_ctrl-c
чем объясняется разница между<C-c>
и<Esc>
.источник
<C-[>
имеет хорошую симметрию (оба мизинца движутся в противоположных направлениях).<C-c>
это не совсем то же самое, что<Esc>
.<C-c>
может тонко сломать плагины и autocmds.Вы можете отобразить Caps Lockна Control без использования каких - либо внешних программ :
setxkbmap -option caps:ctrl_modifier
Это приносит Controlна дому подряда, что делает его легче нажимать все управление модифицированы инсультов, в том числе Ctrl-[и Ctrl-Cкоторые оба выхода из режима вставки в Vim.
В качестве альтернативы, в нижней части своего ответа Джованни предлагает составить карту Caps Lockдля выполнения и того, Control и другого в Escapeзависимости от длины печати, но это требует установки дополнительного программного обеспечения.
источник
Я бы предложил использовать мой плагин vim-easyescape .
Проблема с простой последовательностью сопоставления
inoremap jj <ESC>
заключается в том, что Vim будет приостанавливать всякий раз, когда вы печатаете jили kв режиме вставки (он ожидает, когда следующий ключ определит, применять ли сопоставление). Пауза вызывает зрительное отвлечение, которое вы можете заметить или не заметить. vim-easyescape не имеет такой проблемы и поддерживает пользовательское время ожидания.источник
В терминале vi и Vim alt+
single-normal-mode-key
будет работать для быстрого редактирования в большинстве терминалов.Это работает, потому что большинство терминалов отправляют модификатор alt в качестве escape-символа. Например, при alt+kвводе эмулятор терминала отправляет два символа в запущенную программу:
esc
,k
. Ви и Вим истолковывают это так, как вы ожидаете; он выходит из режима вставки (из-за выхода) и выполняет команду нормального режима (в примере, перемещая курсор вверх на одну строку).Это может быть удобным способом выхода из режима вставки, если на клавиатуре есть клавиша alt рядом с пробелом (чтобы ее можно было нажимать большим пальцем, оставляя пальцы на домашнем ряду), если вы используете эмулятор терминала. с таким поведением и не прочь запустить команду нормального режима.
источник
single-normal-mode-key
? Вы имеете в виду побег?Я использую:
Это похоже на попадание в Return. Я использую
;
как лидер для других отображений в режиме вставки.Единственный раз, когда мне нужно было набрать ';' + буква это когда код игра в гольф; У меня не было никаких конфликтов в противном случае.
источник
Я использую Ctrl+ 3уже довольно давно, мне легче набирать текст, чем большинству альтернатив, и, кажется, он работает хорошо (по крайней мере, в Linux). Мой Caps Lockсопоставлен Ctrl, так что очень удобно набирать его.
Я пытался использовать Ctrl+ в cтечение некоторого времени, но у меня были некоторые проблемы, которые я сейчас точно не помню, но я не получал точно такое же поведение Esc, как и сейчас с Ctrl+ 3.
источник
Esc
в ванильном Vim. Я нашел это опытным путем, проверяя комбинации, не знаю деталей о том, как работают внутренние устройства.Если у вас есть клавиатура на американском английском языке, нажатие Ctrl- [эквивалентно нажатию Esc. Это обеспечивает простой способ выхода из режима вставки. Также можно использовать Ctrl- c.
Если вы используете vim в легком режиме (
-y
), то вы должны нажать Ctrl- l(Control-L), чтобы выйти из режима вставки.Также есть Ctrl+, oкоторый будет только временно выходить из режима вставки только для того, чтобы выполнить одну команду и вернуться обратно в режим вставки (см .
:help i_CTRL-O
:)Или Ctrl+ r, но это только для вставки содержимого регистра или выражения, например Ctrl+ r, =5*5(см .:
:help i_CTRL-R
,:help c_CTRL-R
и запись stackoverflow ).Читайте больше на: Избегайте escape-ключа на vim wikia
источник
Ctrl+r
для вставки реестров (включая выражение=
reg). Если вы хотите временно выполнить однократную команду, используйтеCtrl+o
.Я согласился на
<A-e>
побег:Редактировать: только что нашел,
<C-\><C\n>
который отправляет вас в обычный режим из любого другого режима. Это также имеет лучшее общее поведение. Отображения становятся:источник
Я переназначаю вкладку для выхода. Исторически сложилось так, что раньше там была клавиша esc, поэтому я использовал ее и никогда не оглядывался назад. Мне почти никогда не нужно вставлять вкладки в документе, и когда я это делаю, я просто нажимаю Shift + Tab. Я ни разу не пропустил первоначальную привязку вкладки.
источник