Я вижу, что 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
Вот картинка для тех, кому это нужно
⌘← "SEND ESC SEQ" OH
для Home и ⌘→ "SEND ESC SEQ" OF
для End (это прописные буквы, а не нули). Это имитирует фактическое нажатие клавиш Home и End, и, как таковое, будет работать в bash, vim и т. Д.
Для перехода между словами и началом / концом строк в iTerm2 выберите одно из двух решений ниже.
Если вы не хотите использовать предустановку «Редактирование естественного текста», упомянутую выше, вы можете сопоставить нужные вам ключи вручную:
[+]
иконкуПереместить курсор на одно слово влево
0x1b 0x62
Переместить курсор на одно слово вправо
0x1b 0x66
Переместить курсор в начало строки
0x01
Переместить курсор в конец строки
0x05
Удалить слово
0x1b 0x08
Удалить строку
0x15
Отменить
0x1f
Не забудьте удалить предыдущие привязки :
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
. Было бы полезно знать, если бы люди не хотели это убрать.
Я вижу, что уже есть много хороших ответов, но это должно обеспечить максимально возможную функциональность OSX больше, чем просто ваша оболочка. Я проверил, что это работает в сессиях ZSH, Bash, node, python -i, iex и irb / pry (используя rb-readline gem для readline, но должно работать для всех).
Откройте настройки iTerm ⌘+ ,и перейдите на Profiles
вкладку ( Keys
вкладку можно использовать, но добавление привязки клавиш в свой профиль позволяет сохранить профиль и синхронизировать его с несколькими компьютерами) и вложенную keys
вкладку и ввести следующее:
Удалить все символы слева от курсора
⌘+ ←DeleteОтправить шестнадцатеричные коды:
0x15
Более совместимо, но функциональность иногда заключается в удалении всей строки, а не только символов слева от курсора. Я лично использую это, а затем перезаписываю свой zsh bindkey для^U
удаления только содержимого слева от курсора (см. Ниже).или
0x18 0x7f
Менее совместимый, не работает в узле и не будет работать в zsh по умолчанию, см. Ниже, чтобы исправить zsh (bash / irb / pry должно подойти), выполняет желаемую функциональность, когда работает.
Удалить все символы справа от курсора
⌘+ fn+ ←Deleteили ⌘+ Delete→Отправить шестнадцатеричные коды:
0x0b
Удалить одно слово слева от курсора
⌥+ ←DeleteОтправить шестнадцатеричные коды:
0x1b 0x08
Перерывы в IEX в Elixir, кажется, работают нормально вездеили
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, поэтому, если кто-то знает решение для любого из них, пожалуйста, прокомментируйте ниже, и я постараюсь добавить их.
Для тех, кто ищет таблицу соответствия о том, как преобразовать последовательности ключей в шестнадцатеричные, я нахожу эту таблицу очень полезной.
$
перед echo
(просто удалить?). Кроме этого, это прекрасно. Спасибо.
bindkey | grep "\^\[b"
и он скажет вам, если что-то еще перезаписывает его после того, как он был установлен. Это должно только вернуться #=> "^[b" backward-word
. Если он будет перезаписан, вам нужно будет найти, где он будет перезаписан, и удалить его. Если это невозможно, вы можете запустить echo 'bindkey "^[b" backward-word' >> ~/.zshrc
его, добавив его в последнюю строчку .zshrc
, затем перезапустите iTerm, и он должен работать
keys
вкладку в Iterm настройках , чтобы увидеть , если это также отображение ⌥
+ ←
к чему - то. Если так, удалите это. Вы можете проверить b
правильность работы вашего устройства, быстро нажав и esc
отпустив, а затем нажав b
. Это должно прыгнуть слово влево. Кроме того, вы можете сопоставить ⌥
+ ←
с гекс 0x1b 0x42
или 0x1b 0x5b 0x31 0x3b 0x35 0x44
. Я проверил, что оба из них работают для меня. Я действительно думаю, что вы ⌥
+ ←
перезаписаны в iTerm, либо на profile
keys
вкладке, либо на keys
вкладке.
Следуйте инструкциям, перечисленным выше, чтобы настроить ключевые параметры в 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:
Я использовал ответ 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
файл при добавлении привязок.
Привязки старой моды 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 → Настройки → Профили → Ключи → Загрузка предустановок ... → Редактирование естественного текста → Стрела! Голова взрывается»
bind -p
покажет список связанных экранированных ключей в вашей оболочке, что может помочь дать вам больше идей / поисковых терминов.
bind -p
работает только в оболочках Bourne (bash, sh) для zsh, csh tcsh, use bindkey
.
объяснено в https://aaronaddleman.com/articles/hexcodes-and-iterm/
Вы можете использовать, xxd -psd
чтобы получить ключ шестнадцатеричный код.
Для меня сработала следующая комбинация:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |