iTerm 2: Как настроить сочетания клавиш для перехода к началу / концу строки? - PullRequest
336 голосов
/ 01 июня 2011

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

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

Ответы [ 14 ]

633 голосов
/ 07 мая 2012

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

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

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

iTerm add key visual

335 голосов
/ 11 марта 2014

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отменить

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

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

  • Открыть вкладку «Профили»
  • Щелкните на подвкладке «Ключи»
  • Удалите сопоставления для комбинаций клавиш + и +
223 голосов
/ 02 апреля 2015

Я вижу, что уже есть много хороших ответов, но это должно обеспечить максимально возможную функциональность 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 ← Удалить или + Удалить → Отправить шестнадцатеричные коды: 0x1b 0x64

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

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

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

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

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

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

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

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

Undo

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

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

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

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

Для zsh вы можете установить привязку для еще не функционирующего + ← Удалить и + + 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, поэтому, если кто-то знает решение для любого из них, пожалуйста, прокомментируйте ниже, и я постараюсь добавить их в.

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

45 голосов
/ 16 июня 2011

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

  1. Создайте новую комбинацию клавиш
  2. Выберите «Отправить escape-последовательность»как действие
  3. Затем установить cmd-left в тексте ниже:
    • Введите [ H для начало строки
      ИЛИ
    • Введите [ F для конец строки
33 голосов
/ 03 марта 2017

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

enter image description here

iTerm → Предпочтения → Профили → Ключи

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

12 голосов
/ 29 июня 2013

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

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

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

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

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

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

7 голосов
/ 29 декабря 2018

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

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

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

3 голосов
/ 22 августа 2016

Старые привязки Emacs могут работать в терминалах iterm2 и os x:

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

  • Set Left/Right option <kbd>⌥</kbd> key acts as +Esc (аналогично терминалу os x)

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

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

2 голосов
/ 22 октября 2018

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

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

...