iTerm2 Vim alt + стрелка вправо / влево


13

Как пользователь Linux, я очень привык переходить от слова к слову в vim / nano, используя ALT+ leftили right.

Это не работает должным образом с помощью iTerm, я использую zsh, я попытался добавить;

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

Это работает, но только внутри zsh, затем я прокомментировал эти строки и добавил в iTerm сочетание клавиш;

введите описание изображения здесь

Это работает, но только для ALTleft

Как я могу заставить его работать и для правой стрелки?

Ответы:


10

В свойствах iTerm зайдите в Профили -> Ключи и настройте там

  • Для ⌥→отправки Escape-последовательности[1;5C
  • Для ⌥←отправки Escape-последовательности[1;5D

введите описание изображения здесь


Это не работает для меня. Escape-последовательности отправляются, но vim перемещает только один пробел вперед и назад. Запуск vim 7.3 по умолчанию, который идет с OS X 10.8. В идеале я хотел бы изменить его на стороне vim, не изменяя настройки по умолчанию эмулятора терминала (так как это приведет к лучшей переносимости).
Slhck

Это странно, он работает как в vim (из homebrew, а не по умолчанию), так и в zsh с конфигурацией по умолчанию из oh-my-zsh (в ~ / .oh-my-zsh / lib / key-bindings.sh).
eiennohito

Здесь тоже не работает, я могу использовать alt + arrow внутри zsh, в Vim он работает только с shift + arrow :(
seds

Я проверил это еще раз на доступных удаленных системах (Ubuntu 13.04, стабильный Debian и Scientific Linux), и он работает везде. Что выводится при нажатии Control + V, ⌥ →? Для меня это ^ [[1; 5C
eiennohito

У меня работает: iTerm / Vi + zsh
Петр Семенюк

7

Начните с просмотра кода ключа, который ваш терминал отправляет в vim:

$ sed -n l
^[[1;9D 

В приведенном выше примере я запустил команду sed и нажал Alt + Left.

^[[1;9DЭто сбежавший последовательность отправляется в Vim, поэтому мы можем пользователь , что для нашего отображения.

Добавьте к vimrc:

map <Esc>[1;9D :tabn<CR>

Спасибо, это сработало для меня.
j5shi

1

Я прочитал другой пост, описывающий, что для option-left и option right вам необходимо связать их с действиями ^ [b и ^ [f соответственно. То есть вы связываете их с «Отправить escape-последовательность» и связываете клавиши b и f.

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/


1
+1! Я нашел подобные инструкции здесь: coderwall.com/p/h6yfda/…
Кэм Джексон

0

Ни один из этих ответов не работал для меня. В итоге я загрузил виртуальную машину Linux и проверил, что получу <Alt-ARROW>.

4 escape-последовательности, которые работали для меня, таковы:

  • <Alt+Up>: [1;3A
  • <Alt+Down>: [1;3B
  • <Alt+Right>: [1;3C
  • <Alt+Left>: [1;3D

Будьте внимательны при редактировании ключей профиля, а не основных, которые будут переопределены ключами профиля (где Alt + Arrows по умолчанию установлены в шестнадцатеричную последовательность, которая не работает с vim).


-1

В качестве другого возможного решения vim предлагает движение слов самостоятельно, смотрите:

:help word-motions

2
Вы должны включить необходимую информацию вместо того, чтобы просто поставить ссылку здесь.
pabouk
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.