13

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

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

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

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

Это работает, но только для ALT слева

Как сделать так, чтобы стрелка вправо работала?

5 ответов5

9

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

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

5

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

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

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

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

Добавьте к vimrc:

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

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

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

0

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

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

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

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

-1

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

:help word-motions

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .