Как заставить Cmd-left/right работать с iTerm2 и Vim (не требуя изменений .vimrc)?
Я хочу иметь возможность использовать Option-left и Option-right, чтобы пропускать слова (и Cmd-left/right, чтобы перейти к началу и концу строк) внутри Vim, как это происходит в моей командной строке. У моих настроек Iterm2 есть сопоставления для этого (например, Option-left
to Esc-H
и один для option-right
до Esc-F
, чтобы пропустить слова), и это работает в оболочке локально или когда ssh'd на удаленный сервер.
Когда я использую Vim локально или удаленно, Option-left
работает, но option-right
не работает. Я подозреваю, что это потому, что Вим естественно слушает Esc-H
, но не Esc-F
. Я могу обойти это, изменив файл .vimrc на Esc-b
на b
и Esc-F
на f
, но я не хочу делать это на каждом сервере, к которому я подключаюсь.
Аналогично, у меня есть та же самая желаемая настройка для Cmd-left/right для перехода к началу и концу строки. Я могу заставить это работать в оболочке с помощью сопоставлений Iterm2 (например, Cmd-left
до Esc-[h
), но Vim вообще не отвечает на это, если я не буду снова перенаправлять ключи (например, Esc-[h
to ^
).
Обновление: Я только что понял, как работать с параметрами - влево/вправо. Я изменил отображение в iTerm2, чтобы они были escape-[1;5D
и escape-[1;5C
соответственно. Я все еще хочу решить проблему Cmd-left/right, хотя (я изменил название вопроса, чтобы это отразить). Любые идеи?
Ответы
Ответ 1
Чтобы воспроизвести поведение 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
сопоставлений
Ответ 2
FWIW, ответ долан не работал у меня на iTerm 2 1.0.0.20120203 на Mac OS X 10.7.3. Его решение только вставило ~
и 5D
/5C
в мой терминал, когда я нажал клавиши быстрого доступа.
Вместо этого я использовал следующие решения:
YMMV, не уверенный, почему один набор решений будет работать, а не другой
Ответ 3
У меня нет MacOS, поэтому я не могу точно знать вашу ситуацию, но я распознаю проблему из других ОС.
В принципе, это означало бы, что терминал отправляет коды ключей, которые не поняты vim. Я исправил это в прошлом, выполнив
TERM=something
export TERM
перед вызовом vim
например. для того чтобы получить подсветку синтаксиса клавиш и, работающую над AIX 5.3 через Putty/screen, мне нужно было использовать
TERM=iris-ansi vim
Существует список встроенных типов терминалов, если вы передаете плохой TERM