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.
- Создать новый ярлык
- Выберите "Отправить escape-последовательность" в качестве действия
- Затем, чтобы установить 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 → Настройки → Профили → Ключи → Загрузка предустановок... → Редактирование естественного текста → Стрела! Глава взрывает"
Ответ 12
объяснено в https://aaronaddleman.com/articles/hexcodes-and-iterm/
Вы можете использовать xxd -psd
для получения шестнадцатеричного кода ключа.
Ответ 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 |