Я вижу, что уже есть много хороших ответов, но это должно обеспечить максимально возможную функциональность 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 ← Удалить или ⌥ + Удалить → Отправить шестнадцатеричные коды: 0x1b 0x64
Переместить курсор на начало строки
⌘ + ← Отправить шестнадцатеричные коды: 0x01
Переместить курсор в конец строки
⌘ + → Отправить шестнадцатеричные коды: 0x05
Переместить курсор на одно слово влево
⌥ + ← Отправить шестнадцатеричные коды: 0x1b 0x62
Переместить курсор на одно слово вправо
⌥ + → Отправить шестнадцатеричные коды: 0x1b 0x66
Undo
⌘ + z Послать шестнадцатеричные коды: 0x1f
Повторить обычно не привязаны в bash, zsh или readline, поэтому мы можем установить для него неиспользуемый шестнадцатеричный код, который мы затем можем исправить в zsh
⇧ + ⌘ + Z или ⌘ + y Отправить шестнадцатеричные коды: 0x18 0x1f
Теперь как исправить то, что не работает
Для zsh вы можете установить привязку для еще не функционирующего
⌘ + ← Удалить и ⇧ + ⌘ + 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, поэтому, если кто-то знает решение для любого из них, пожалуйста, прокомментируйте ниже, и я постараюсь добавить их в.
Для тех, кто ищет справочную таблицу о том, как преобразовать последовательности ключей в шестнадцатеричные, я нахожу эту таблицу очень полезной.