Как изменить ESC по умолчанию для выхода из режима вставки в Vim LightTable?
Я публикую этот вопрос в основном, чтобы дать ответ, к которому я пришел (потому что я больше ничего не нашел в Интернете и не вижу вопросов, спрашивающих, как это сделать), чтобы, надеюсь, немного сэкономить будущим пользователям LightTable vim. Но я также хотел бы услышать о любых других решениях, которые люди нашли для этой проблемы, или о проблемах LightTable в целом.
Я влюбился в LightTable, но хотя бы минимальная поддержка vim обязательна, прежде чем я даже рассмотрю IDE. LightTable имеет это. В настоящее время, тем не менее, вы в значительной степени застряли с опциями vim по умолчанию и небольшой возможностью изменять конфигурацию. Мне было бы очень интересно услышать о планах на будущее в этой области (ты там, Крис?). Экспонировать.vimrc в локальном каталоге конфигурации, даже если он сильно ограничен в функциональности, было бы просто потрясающе, но я понимаю, что он очень рано еще находится в разработке и во многом зависит от того, что может предоставить CodeMirror.
Одной вещью, которую я не могу терпеть, является необходимость отправить мой мизинец вверх и влево, чтобы нажать клавишу ESC, чтобы выйти из режима вставки. Это слишком медленно и требует, чтобы ваши левые пальцы покинули домашний ряд, что никогда не бывает хорошо. Я обычно обращаюсь с этим в vim, чтобы отобразить ii для выхода из режима вставки в.vimrc. Другая альтернатива, которая существует по умолчанию, это нажать CTRL-[. Это лучше, но для меня это вхождение в зону записи emacs, и по какой-то причине мой правый мизинец почти всегда бьет по клавишам брекетинга.
Это немного хак, но это терпимый обходной путь, пока в LightTable/CodeMirror не появится лучшая поддержка vim. Я протестировал его только на последней версии LightTable (0.4.9), поэтому я не уверен, насколько она применима к более ранним версиям (которые вы, вероятно, не должны быть в любом случае), или, в этом отношении, к более поздним версиям, которые придет.
Существует опция команды под названием "Vim: переключить режим vim". Это включает и выключает vim в редакторе (или в инстарепле). Вы можете привязать эту команду к комбинации горячих клавиш с помощью команды "Настройки: Изменить привязки клавиш / сочетания клавиш". Это откроет новую вкладку, где вы можете ввести новые привязки клавиш слева. Текущие привязки клавиш показаны справа.
Я использую SHIFT-i, в контексте:editor.keys.normal. (Это означает, что я не могу использовать заглавную букву "I" непосредственно в тексте, но на практике при редактировании программы - особенно в clojure - это почти никогда не вызывает проблем, и если это так, вы можете просто использовать строчные буквы i, а затем вернуться назад. и замените char.) Это фактически делает "II" (SHIFT-i SHIFT-i) средством выхода из режима вставки. Первый SHIFT-i выходит из vim и помещает вас в обычный редактор WYSIWYG. Следующий SHIFT-я возвращает вас в Vim, но в командном режиме. Вуаля! Вы перешли из режима вставки vim в режим команд vim.
Надеюсь, что это поможет другим пользователям LightTable vim.
3 ответа
Обновление: я думаю, что последняя версия LightTable поддерживает это. Кто-то, пожалуйста, прокомментируйте, если добавляете следующее к их user.behaviors
файл работает (поведение пользователя доступно через панель команд (ctrl-space)):
[:editor :lt.plugins.vim/set-options {"enableInsertModeEscKeys" true,
"insertModeEscKeys" "jk",
"insertModeEscKeysTimeout" 200}]
Старый ответ:
Последний источник плагинов LT поддерживает это, но еще не выпущен.
Для легкой установки сделайте следующее:
- Откройте папку с плагинами LT, например, на OSX
~/Library/Application Support/LightTable/plugins/Vim/
- (Необязательно) Сохраните резервную копию папки Vim (плагин) в другом месте
- Удалить папку Vim
- Загрузить https://github.com/LightTable/Vim/archive/master.zip
- Разархивируйте его, переименуйте разархивированную папку в Vim и переместите / скопируйте в папку плагинов LT (т.е. она заменяет только что удаленный официальный плагин Vim)
- Добавьте следующие параметры в
:editor
раздел вашего файла user.behaviors:(:lt.plugins.vim/set-options {"enableInsertModeEscKeys" true, "insertModeEscKeys" "jk" "insertModeEscKeysTimeout" 200})
- Перезапустите LT, и вы сможете использовать jk (или любые другие ключи, которые вы установили в insertModeEscKeys) для выхода из режима вставки.
API CodeMirror разработан таким образом, что добавить привязки клавиш не очень сложно, но добавление поддержки для файла конфигурации и расширение привязок клавиш по умолчанию для охвата большей части набора функций Vim не совсем похоже на тривиальную задачу, И, учитывая тот факт, что LT даже не имеет поиска / замены, вероятно, что-то, что находится в нижней части их списка TODO.
Это и CodeMirror - это сторонняя "библиотека", на которую команда LT, вероятно, не имеет большого влияния.
Для пользователей Windows ваша папка плагина LT находится в скрытой папке AppData, расположенной в вашей директории пользователя. например C:\Users\_username_\AppData\Local\LightTable