Я вижу, что Ctrl + left/right переходит к началу/концу строки. Как изменить это на Cmd + left/right arrow?
Чтобы получить правильную работу Alt + left/right arrow для перехода по словам, следуйте этой статье.
Я вижу, что Ctrl + left/right переходит к началу/концу строки. Как изменить это на Cmd + left/right arrow?
Чтобы получить правильную работу Alt + left/right arrow для перехода по словам, следуйте этой статье.
Добавьте в iTerm2 следующие сочетания клавиш быстрого доступа
FOR ACTION SEND
⌘← "SEND HEX CODE" 0x01
⌘→ "SEND HEX CODE" 0x05
⌥← "SEND ESC SEQ" b
⌥→ "SEND ESC SEQ" f
Вот визуальный для тех, кто в ней нуждается.
Чтобы перейти между словами и началом/концом строк в iTerm2, выполните следующие действия:
Переместить курсор на одно слово слева
0x1b 0x62
Переместить курсор на одно слово справа
0x1b 0x66
Переместить курсор в начало строки
0x01
Переместить курсор в конец строки
0x05
Удалить слово
0x1b 0x08
Удалить строку
0x15
Undo
0x1f
Не забывайте удалить предыдущие привязки:
Я вижу там уже много хороших ответов, но это должно обеспечить максимально возможную функциональность 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, поэтому, если кто-то знает решение для любого из них, пожалуйста, прокомментируйте ниже, и я постараюсь добавить их.
Для тех, кто ищет справочную таблицу о том, как преобразовать последовательности ключей в шестнадцатеричные, я считаю эту таблицу очень полезной.
Следуйте инструкциям, перечисленным выше, чтобы настроить ключевые параметры в iterm2.
В 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:
Просто чтобы помочь кому-то, у кого есть такая же проблема, но, в частности, с использованием оболочки Zsh с iTerm 2. Оказывается, Zsh не читает /etc/inputrc
правильно, и поэтому не понимает никаких привязок клавиш, которые вы настроили с помощью настроек!
Чтобы исправить это, вам нужно добавить некоторые привязки ключей к вашему файлу .zshrc
, например:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
Обратите внимание на обратную косую черту в примере выше перед "e", связанная статья не показывает их, поэтому добавьте их в свой .zshrc
файл при добавлении привязок.
Я использовал ответ Travis и создал динамический профиль, который вы можете импортировать на основе его инструкций.
GabLeRoux/iterm2-MacOS-динамический профиль
Инструкции находятся в файле readme, и импортировать их намного быстрее, чем добавлять их все вручную. Я сделал это ответом на запрос @gooli, потому что это было скрыто в комментарии. Надеюсь, вам понравится это 🍻
Связи старого стиля 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 недоступны.
bind -p
покажет список связанных экранированных ключей в вашей оболочке, что может помочь дать вам больше идей/поисковых терминов.
Как объясняется в здесь, вы можете сделать это с помощью простых шагов:
По умолчанию перескакивают слова (опция + → или ←) и удаляются слова (опция + backspace) не работают. Чтобы включить их, перейдите в раздел "iTerm → Настройки → Профили → Ключи → Загрузка предустановок... → Редактирование естественного текста → Стрела! Глава взрывает"
объяснено в https://aaronaddleman.com/articles/hexcodes-and-iterm/
Вы можете использовать xxd -psd
для получения шестнадцатеричного кода ключа.
Единственные вещи, которые подходят для перехода в начало и конец строки, это
⌘← "SEND ESC SEQ" OH
- для перехода к началу строки ⌘→ "SEND ESC SEQ" OF
- перейти к концу строки
Для меня работала следующая комбинация:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |