Как заставить Cmd левый / правый работать с iTerm2 и Vim (не требуя изменений.vimrc)?

Я хочу иметь возможность использовать Option-left и Option-right для пропуска слов (и Cmd-left/right для перехода к началу и концу строк) в Vim, как это происходит в моем приглашении оболочки. Мои предпочтения Iterm2 имеют сопоставления для этого (например, Option-left в Esc-H и один для option-right в Esc-F пропустить слова), и это работает в оболочке локально или когда ssh'd на удаленный сервер.

Когда я использую Vim локально или удаленно, option-left работает, но option-right не. Я подозреваю, что это потому, что Vim естественно слушает Esc-H, но нет Esc-F, Я могу обойти это, изменив файл.vimrc на Esc-b в b а также Esc-f в f, но я не хочу делать это с каждым сервером, к которому я подключаюсь.

Точно так же у меня есть такая же желаемая настройка для Cmd-left/right для перехода к началу и концу строки. Я могу заставить это работать в оболочке через отображения Iterm2 (например, Cmd-left в Esc-[h), но Vim вообще не отвечает на это, если я не сопоставлю ключи снова (например, Esc-[h в ^).

Обновление: я только что выяснил, как заставить работать опции влево / вправо. Я изменил отображение в iTerm2, чтобы они были escape-[1;5D а также escape-[1;5C соответственно. Я все еще хочу решить проблему Cmd-влево / вправо (я изменил название моего вопроса, чтобы отразить это). Есть идеи?

3 ответа

Решение

Для имитации поведения отправки OS X Cmd-left/right к началу / концу строки я добавляю следующие соответствия в iTerm2:

  • Cmd-left escape-последовательность [1~
  • Cmd-right escape-последовательность [4~

Для имитации поведения отправки OS X Option-left/right к предыдущему / следующему слову я добавляю следующие отображения в iTerm2:

  • Option-left escape-последовательность [1;5D
  • Option-right escape-последовательность [1;5C

Отдельное спасибо этому посту в блоге за отслеживание того, что мне не хватало с cmd-left/right отображения

Я использую iTerm2 3.4.2, и на самом деле есть предустановка, которую вы можете выбрать для своего профиля, которая позволяет это сделать. ht tps://s tackru.com/images/3d81c6f7a0cf4eab72ba606b758de6c6a827b6db.png ht tps://s tackru.com/images/1af909a7813724a6e2b4dd81b9f2a3d6db38c172.png

Кстати, ответ Долана у меня не сработал на iTerm 2 1.0.0.20120203 на Mac OS X 10.7.3. Его решение только вставлено ~ а также 5D/5C в мой терминал, когда я нажал сочетание клавиш.

Вместо этого я использовал следующие решения:

YMMV, не уверен, почему один набор решений будет работать, а другой нет

У меня нет MacOS, поэтому я не могу точно знать вашу ситуацию, но я распознаю проблему в других ОС.

По сути, это будет означать, что терминал отправляет коды клавиш, которые не понимаются vim. Я исправил это в прошлом, делая

 TERM=something
 export TERM

перед вызовом vim

Например, чтобы все ключи и подсветка синтаксиса работали в AIX 5.3 через Putty/screen, мне нужно было использовать

 TERM=iris-ansi vim

Существует список встроенных типов терминалов, если вы пропустите неверный срок

Другие вопросы по тегам