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
Вот визуал для тех, кому это нужно
Для перехода между словами и началом / концом строк в 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.
- Создать новый ярлык
- Выберите "Отправить escape-последовательность" в качестве действия
- Затем, чтобы установить cmd-left, в тексте ниже это:
- Введите [ H для начала строки
ИЛИ ЖЕ - Введите [ F для конца строки
- Введите [ H для начала строки
Я использовал ответ 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
получить ключ шестнадцатеричный код.