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

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

Чтобы получить правильную работу Alt + left/right arrow для перехода по словам, следуйте этой статье.

Ответ 1

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

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

Вот визуальный для тех, кто в ней нуждается.

iTerm add key visual

Ответ 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Undo

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

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

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

Ответ 3

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

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

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

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

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

или же

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

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

+ fn + ←Delete или + Delete→ Послать шестнадцатеричные коды: 0x0b

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

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

0x1b 0x08 Перерывы в Elixir IEX, кажется, работает хорошо везде

или же

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

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

+ fn ←Delete или + Delete→ Послать шестнадцатеричные коды: 0x1b 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, поэтому, если кто-то знает решение для любого из них, пожалуйста, прокомментируйте ниже, и я постараюсь добавить их.

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

Ответ 4

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

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

Ответ 5

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

enter image description here

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

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

Ответ 6

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

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

Ответ 7

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

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

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

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

Ответ 8

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

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

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

Ответ 9

Связи старого стиля emacs могут работать в iterm2 и os x terminal:

Настройки → Профили → Клавиши (вкладка в профилях)

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

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

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

Ответ 10

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

Ответ 11

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

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

Ответ 13

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

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

Ответ 14

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