Как заставить 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
в мой терминал, когда я нажал сочетание клавиш.
Вместо этого я использовал следующие решения:
Cmd-left/right
: iTerm 2: Как настроить сочетания клавиш для перехода к началу / концу строки?Option-left/right
так же какoption-delete
: http://hackaddict.blogspot.co.at/2007/07/skip-to-next-or-previous-word-in-iterm.html
YMMV, не уверен, почему один набор решений будет работать, а другой нет
У меня нет MacOS, поэтому я не могу точно знать вашу ситуацию, но я распознаю проблему в других ОС.
По сути, это будет означать, что терминал отправляет коды клавиш, которые не понимаются vim. Я исправил это в прошлом, делая
TERM=something
export TERM
перед вызовом vim
Например, чтобы все ключи и подсветка синтаксиса работали в AIX 5.3 через Putty/screen, мне нужно было использовать
TERM=iris-ansi vim
Существует список встроенных типов терминалов, если вы пропустите неверный срок