iTerm 2: Как настроить сочетания клавиш для перехода к началу / концу строки?

Я вижу, что Ctrl + левый / правый переход к началу / концу строки. Как изменить это на Cmd + стрелка влево / вправо?

Для того, чтобы Alt + стрелка влево / вправо работала правильно для прыжков, следуйте этой статье.

13 ответов

Решение

Добавьте в iTerm2 следующие сочетания клавиш профиля

FOR  ACTION         SEND
⌘←  "SEND HEX CODE"      0x01 
⌘→  "SEND HEX CODE"      0x05
⌥←  "SEND ESC SEQ"  b
⌥→  "SEND ESC SEQ"  f

Вот визуал для тех, кому это нужно

iTerm добавить визуальные

Для перехода между словами и началом / концом строк в iTerm2 выполните следующие действия:

  • iTerm2 -> Настройки ( + ,)
  • Откройте вкладку "Ключи"
  • Добавьте следующие глобальные сочетания клавиш

Переместить курсор на одно слово влево

  • Сочетание клавиш: +
  • Действие: Отправить шестнадцатеричный код
  • Код: 0x1b 0x62

Переместить курсор на одно слово вправо

  • Сочетание клавиш: +
  • Действие: Отправить шестнадцатеричный код
  • Код: 0x1b 0x66

Переместить курсор в начало строки

  • Сочетание клавиш: +
  • Действие: Отправить шестнадцатеричный код
  • Код: 0x01

Переместить курсор в конец строки

  • Сочетание клавиш: +
  • Действие: Отправить шестнадцатеричный код
  • Код: 0x05

Удалить слово

  • Сочетание клавиш: + ← Удалить
  • Действие: Отправить шестнадцатеричный код
  • Код: 0x1b 0x08

Удалить строку

  • Сочетание клавиш: + ← Удалить
  • Действие: Отправить шестнадцатеричный код
  • Код: 0x15

расстегивать

  • Сочетание клавиш: + z
  • Действие: Отправить шестнадцатеричный код
  • Код: 0x1f

Не забудьте удалить предыдущие привязки:

  • Откройте вкладку "Профили"
  • Нажмите на вкладку "Ключи"
  • Удалите сопоставления для сочетаний клавиш + и +

Я вижу, что уже есть много хороших ответов, но это должно обеспечить максимально возможную функциональность OSX больше, чем просто ваша оболочка. Я проверил, что это работает в сессиях ZSH, Bash, node, python -i, iex и irb/pry (используя гем rb-readline для readline, но должен работать для всех).

Откройте настройки iTerm + и перейдите к Profiles вкладка (Keys вкладку можно использовать, но добавление привязки клавиш в ваш профиль позволяет сохранить ваш профиль и синхронизировать его с несколькими компьютерами) и keys подвкладка и введите следующее:

Удалить все символы слева от курсора

+ ← Удалить Отправить Шестнадцатеричные коды:

0x15 Более совместимо, но функциональность иногда заключается в удалении всей строки, а не только символов слева от курсора. Я лично использую это, а затем перезаписать мой zsh bindkey для ^U удалить только материал слева от курсора (см. ниже).

или же

0x18 0x7f Менее совместимый, не работает в узле и не будет работать в zsh по умолчанию, см. Ниже, чтобы исправить zsh (bash / irb/pry должно подойти), выполняет желаемую функциональность, когда он работает.

Удалить все символы справа от курсора

+ fn + ← Удалить или + Удалить → Отправить шестнадцатеричные коды: 0x0b

Удалить одно слово слева от курсора

+ ← Удалить Отправить Шестнадцатеричные коды:

0x1b 0x08 Перерывы в IEX в Elixir, кажется, работают нормально везде

или же

0x17 Работает везде, но не останавливается на нормальных разрывах слов в IRB и вместо этого будет удалять, пока не увидит буквальное пространство.

Удалить одно слово справа от курсора

+ fn ← Удалить или + Удалить → Отправить шестнадцатеричные коды: 0x01b 0x64

Переместить курсор в начало строки

+ Отправить шестнадцатеричные коды: 0x01

Переместить курсор в конец строки

+ Отправить шестнадцатеричные коды: 0x05

Переместить курсор на одно слово влево

+ Отправить шестнадцатеричные коды: 0x1b 0x62

Переместить курсор на одно слово вправо

+ Отправить шестнадцатеричные коды: 0x1b 0x66

расстегивать

+ z Отправить шестнадцатеричные коды: 0x1f

Повторить обычно не привязаны в bash, zsh или readline, поэтому мы можем установить для него неиспользуемый шестнадцатеричный код, который мы затем можем исправить в zsh

+ + Z или + y Отправить шестнадцатеричные коды: 0x18 0x1f

Теперь, как исправить то, что не работает

Для zsh вы можете установить привязку для еще не функционирующих + ←Delete и + + Z / + y, выполнив:

# changes hex 0x15 to delete everything to the left of the cursor,
# rather than the whole line
$ echo 'bindkey "^U" backward-kill-line' >> ~/.zshrc

# binds hex 0x18 0x7f with deleting everything to the left of the cursor
$ echo 'bindkey "^X\\x7f" backward-kill-line' >> ~/.zshrc

# adds redo
$ echo 'bindkey "^X^_" redo' >> ~/.zshrc

# reload your .zshrc for changes to take effect
$ source ~/.zshrc

Я не могу найти решение для добавления повторов в bash или readline, поэтому, если кто-то знает решение для любого из них, пожалуйста, прокомментируйте ниже, и я постараюсь добавить их.

Для тех, кто ищет справочную таблицу о том, как преобразовать последовательности ключей в шестнадцатеричные, я нахожу эту таблицу очень полезной.

В iTerm 3.0.12 вы можете переключиться на Natural Text Editing предустановка:

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

iTerm → Настройки → Профили → Ключи

Предупреждение Поскольку это предустановка, она может переопределять ключи, которые вы связали ранее. Поэтому лучше сохранить текущие привязки клавиш перед применением пресета.

Для быстрой ссылки на любого, кто хочет перейти к концу строки или началу строки в iTerm2, ссылка выше http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word-in-iterm.html отмечает, что в iTerm2:

  • Ctrl+A, переход к началу строки, в то время как
  • Ctrl+E, переход к концу строки.

Следуйте инструкциям, перечисленным выше, чтобы настроить ключевые параметры в iterm2.

  1. Создать новый ярлык
  2. Выберите "Отправить escape-последовательность" в качестве действия
  3. Затем, чтобы установить cmd-left, в тексте ниже это:
    • Введите [ H для начала строки
      ИЛИ ЖЕ
    • Введите [ F для конца строки

Я использовал ответ Travis и создал динамический профиль, который вы можете импортировать на основе его инструкций.

GabLeRoux / iterm2-MacOS-динамический профиль

Инструкции находятся в файле readme, и импортировать их намного быстрее, чем добавлять их все вручную. Я сделал это ответом на запрос @gooli, потому что это было скрыто в комментарии. Надеюсь, вам понравится это

Просто для того, чтобы помочь любому, у кого возникла та же проблема, но в частности при использовании оболочки Zsh с iTerm 2. Оказывается, что Zsh не читает /etc/inputrc правильно, и поэтому не может понять любые привязки клавиш, которые вы установили через настройки!

Чтобы это исправить, вам нужно добавить некоторые привязки клавиш к вашему .zshrc файл, такой как:

# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line

Обратите внимание на обратную косую черту в приведенном выше примере перед "е", связанная статья не показывает их, поэтому добавьте их в свой .zshrc файл при добавлении привязок.

Единственные вещи, которые подходят для перехода в начало и конец строки, это

⌘← "SEND ESC SEQ" OH - перейти к началу строки
⌘→ "SEND ESC SEQ" OF - перейти к концу строки

Привязки старой моды emacs по-прежнему могут работать в терминалах iterm2 и os x:

Настройки -> Профили -> Ключи (вложенная вкладка в профилях)

  • Задавать Left/Right option <kbd>⌥</kbd> key acts as +Esc (аналогично терминалу OS X)

Это должно включить alt- f и alt- b для перемещения слов по словам. (Тем не менее Ctrl-A и Ctrl- E всегда работают как обычно)

Если установлено как meta эти старые привязки будут работать, пока некоторые привязки iterm2 будут недоступны.

Как объясняется здесь, вы можете сделать это с помощью простых шагов:

По умолчанию переходы по словам (опция + → или ←) и удаление слов (опция + возврат) не работают. Чтобы включить их, перейдите к "iTerm → Настройки → Профили → Ключи → Загрузить предустановки... → Редактирование естественного текста → Стрела! Голова взрывается"

Для меня сработала следующая комбинация:
| Key Action Esc+ End result | |-----------------------------------------------------| | Send Escape Sequence a Send ^[ a | | Send Escape Sequence e Send ^[ e |

bind -p покажет список связанных экранированных ключей в вашей оболочке, что может помочь дать вам больше идей / поисковых терминов.

Объяснено в https://aaronaddleman.com/articles/hexcodes-and-iterm/

ты можешь использовать xxd -psd получить ключ шестнадцатеричный код.

Другие вопросы по тегам