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

Я хочу иметь возможность использовать 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 to Esc-[h), но Vim вообще не отвечает на это, пока я не сопоставлю ключи снова (например, Esc-[h to ^).

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

Ответы [ 3 ]

12 голосов
/ 08 марта 2012

Чтобы имитировать поведение 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 отображениями

10 голосов
/ 10 апреля 2012

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

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

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

1 голос
/ 07 марта 2012

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

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

 TERM=something
 export TERM

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

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

 TERM=iris-ansi vim

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

...