Вы знаете, что такое код / последовательность для Command + Delete? (уберите подсказку)
Стивен Лу
10
Я ответил на мой первый комментарий в другом месте, в основном шестнадцатеричный код 0x15 дает Ctrl + U, который очищает строку. Однако я нахожу 0x01 Ctrl + A, чтобы мешать использованию Tmux. Поэтому я намереваюсь сопоставить его вместо клавиши Home (та же функциональность, что и Fn + Left на клавиатуре Mac).
Стивен Лу
7
Escape-последовательность для Home - [1 ~, а Escape-последовательность для End - [4 ~
Steven Lu
3
Работает как шарм, потрясающе!
Juto
25
Правильная привязка ⌘← "SEND ESC SEQ" OHдля Home и ⌘→ "SEND ESC SEQ" OFдля End (это прописные буквы, а не нули). Это имитирует фактическое нажатие клавиш Home и End, и, как таковое, будет работать в bash, vim и т. Д.
Timothy Zorn
435
Для перехода между словами и началом / концом строк в iTerm2 выберите одно из двух решений ниже.
1. Простое решение (рекомендуется)
Открыть настройки
Нажмите вкладку «Профиль»
Выберите профиль в списке слева (например, «По умолчанию») и нажмите вкладку «Ключи»
Нажмите внизу «Presets» и выберите «Редактирование естественного текста»
2. Назначение клавиш вручную (Дополнительно)
Если вы не хотите использовать предустановку «Редактирование естественного текста», упомянутую выше, вы можете сопоставить нужные вам ключи вручную:
Открыть настройки
Нажмите вкладку «Ключи»
Нажмите на [+]иконку
Теперь вы можете добавить следующие сочетания клавиш:
Переместить курсор на одно слово влево
Сочетание клавиш: ⌥+←
Действие: Отправить шестнадцатеричный код
Код: 0x1b 0x62
Переместить курсор на одно слово вправо
Сочетание клавиш: ⌥+→
Действие: Отправить шестнадцатеричный код
Код: 0x1b 0x66
Переместить курсор в начало строки
Сочетание клавиш: ⌘+←
Действие: Отправить шестнадцатеричный код
Код: 0x01
Переместить курсор в конец строки
Сочетание клавиш: ⌘+→
Действие: Отправить шестнадцатеричный код
Код: 0x05
Удалить слово
Сочетание клавиш: ⌥+←Delete
Действие: Отправить шестнадцатеричный код
Код: 0x1b 0x08
Удалить строку
Сочетание клавиш: ⌘+←Delete
Действие: Отправить шестнадцатеричный код
Код: 0x15
Отменить
Сочетание клавиш: ⌘+z
Действие: Отправить шестнадцатеричный код
Код: 0x1f
Не забудьте удалить предыдущие привязки :
Откройте вкладку «Профили»
Нажмите на вкладку «Ключи»
Удалить сопоставления для сочетаний клавиш ⌥+ ←и ⌥+→
Это хорошо сработало для меня в iTerm2 и было очень легко понять, спасибо!
Natetronn
3
Просто поясняю, что делают оригинальные привязки для ⌥ ←? Я вижу это Says send Hex Codes: 0x1b 0x1b 0x5b 0x44. Было бы полезно знать, если бы люди не хотели это убрать.
августа
5
Переход к началу и концу строки у меня не работает с помощью zsh. Использование «шестнадцатеричного кода» «0x01» / «0x05», как подсказывает главный ответ, сработало для меня.
Флип
2
Переход к началу и концу строки не работает для меня тоже. Топ ответ сработал.
Hisabimbola
3
Есть ли у iTerm способ объединить их в предустановку, которую мы можем просто загрузить? Кажется, раздражает вводить вручную, но это сработало для меня и было здорово. Спасибо за это!
Август
259
Я вижу, что уже есть много хороших ответов, но это должно обеспечить максимально возможную функциональность 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 должно подойти), выполняет желаемую функциональность, когда работает.
Повторить обычно не привязаны в bash, zsh или readline, поэтому мы можем установить для него неиспользуемый шестнадцатеричный код, который мы затем можем исправить в zsh
Для 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(просто удалить?). Кроме этого, это прекрасно. Спасибо.
Эдмундо
1
@Christophe Похоже, что связывание клавиш там, как и должно быть. Либо вы допустили ошибку при добавлении шестнадцатеричных значений в, либо перепрограммирование клавиш для обратного слова перезаписывается. Запустите, bindkey | grep "\^\[b"и он скажет вам, если что-то еще перезаписывает его после того, как он был установлен. Это должно только вернуться #=> "^[b" backward-word. Если он будет перезаписан, вам нужно будет найти, где он будет перезаписан, и удалить его. Если это невозможно, вы можете запустить echo 'bindkey "^[b" backward-word' >> ~/.zshrcего, добавив его в последнюю строчку .zshrc, затем перезапустите iTerm, и он должен работать
Travis
2
@Christophe проверить keysвкладку в Iterm настройках , чтобы увидеть , если это также отображение ⌥+ ←к чему - то. Если так, удалите это. Вы можете проверить bправильность работы вашего устройства, быстро нажав и escотпустив, а затем нажав b. Это должно прыгнуть слово влево. Кроме того, вы можете сопоставить ⌥+ ←с гекс 0x1b 0x42или0x1b 0x5b 0x31 0x3b 0x35 0x44 . Я проверил, что оба из них работают для меня. Я действительно думаю, что вы ⌥+ ←перезаписаны в iTerm, либо на profilekeysвкладке, либо на keysвкладке.
Трэвис
3
Удивительно! Только что узнал об отменах и повторных привязках отсюда.
Экброди
3
Я сделал это вручную, и я подумал, почему я не могу импортировать профиль для этого? Затем я создал GabLeRoux / iterm2-macos-dynamic-profile на основе этих инструкций. Это работает безупречно, спасибо 🍻
GabLeRoux
48
Следуйте инструкциям, перечисленным выше, чтобы настроить ключевые параметры в iterm2 .
Создать новый ярлык
Выберите «Отправить escape-последовательность» в качестве действия
Затем, чтобы установить cmd-left , в тексте ниже это:
Люблю это! другие решения не работали для меня. Я часами расстраиваюсь, что не могу использовать ctrl + a и ctrl + e в iterm2. Но я не хотел бросать рыбу за это. Это полностью работает, спасибо!
FLY
Другие решения также не работали для меня, но это сработало.
Брахам Снайдер
42
В iTerm 3.0.12 вы можете переключиться на Natural Text Editingпресет:
iTerm → Настройки → Профили → Ключи
Предупреждение Поскольку это предустановка, она может переопределять ключи, которые вы связали ранее. Поэтому лучше сохранить текущие привязки клавиш перед применением пресета.
Не могли бы вы более подробно изложить свой ответ? Как в том, что этот пресет включает и может перезаписать?
Carles Alcolea
Спасибо за ответ. Также пробили в нем, вероятно , лучше практика , чтобы применить это на свой собственный пользовательский профиль , который , как вы не завинчивания с параметрами по умолчанию и может переключить профиль в качестве естественного редактирования текста «Режим»
Инструкции находятся в файле readme, и импортировать их намного быстрее, чем добавлять их все вручную. Я сделал это ответом на запрос @ gooli, потому что это было скрыто в комментарии. Надеюсь, вам понравится это 🍻
Вернулся сюда год спустя и так счастлив найти это!
elifiner
9
Просто для того, чтобы помочь любому, у кого возникла та же проблема, но в частности с использованием оболочки Zsh с iTerm 2. Оказывается, что Zsh не читает /etc/inputrcправильно , и поэтому не может понять любые привязки клавиш, которые вы установили с помощью настроек!
Чтобы это исправить, вам нужно добавить некоторые привязки клавиш в ваш .zshrcфайл, например:
Обратите внимание на обратную косую черту в приведенном выше примере перед «е», связанная статья не показывает их, поэтому добавляйте их в свой .zshrcфайл при добавлении привязок.
Как объясняется здесь , вы можете сделать это с помощью простых шагов:
По умолчанию переходы по словам (опция + → или ←) и удаление слов (опция + возврат) не работают. Чтобы включить их, перейдите к «iTerm → Настройки → Профили → Ключи → Загрузка предустановок ... → Редактирование естественного текста → Стрела! Голова взрывается»
Для меня сработала следующая комбинация:
| Key Action Esc+ End result |
|-----------------------------------------------------|
| ⌘← Send Escape Sequence a Send ^[ a |
| ⌘→ Send Escape Sequence e Send ^[ e |
Ответы:
Добавьте в iTerm2 следующие сочетания клавиш профиля
Вот картинка для тех, кому это нужно
источник
⌘← "SEND ESC SEQ" OH
для Home и⌘→ "SEND ESC SEQ" OF
для End (это прописные буквы, а не нули). Это имитирует фактическое нажатие клавиш Home и End, и, как таковое, будет работать в bash, vim и т. Д.Для перехода между словами и началом / концом строк в iTerm2 выберите одно из двух решений ниже.
1. Простое решение (рекомендуется)
2. Назначение клавиш вручную (Дополнительно)
Если вы не хотите использовать предустановку «Редактирование естественного текста», упомянутую выше, вы можете сопоставить нужные вам ключи вручную:
[+]
иконкуТеперь вы можете добавить следующие сочетания клавиш:
Переместить курсор на одно слово влево
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
вкладку и ввести следующее:Удалить все символы слева от курсора
Удалить все символы справа от курсора
Удалить одно слово слева от курсора
Удалить одно слово справа от курсора
Переместить курсор в начало строки
Переместить курсор в конец строки
Переместить курсор на одно слово влево
Переместить курсор на одно слово вправо
Отменить
Повторить обычно не привязаны в bash, zsh или readline, поэтому мы можем установить для него неиспользуемый шестнадцатеричный код, который мы затем можем исправить в zsh
Теперь, как исправить то, что не работает
Для zsh вы можете установить привязку для еще не функционирующих ⌘+ ←Deleteи ⇧+ ⌘+ Z/ ⌘+ y, выполнив:
Я не могу найти решение для добавления повторов в 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
пресет:Предупреждение Поскольку это предустановка, она может переопределять ключи, которые вы связали ранее. Поэтому лучше сохранить текущие привязки клавиш перед применением пресета.
источник
Для быстрой ссылки на любого, кто хочет перейти к концу строки или началу строки в 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
файл, например:Обратите внимание на обратную косую черту в приведенном выше примере перед «е», связанная статья не показывает их, поэтому добавляйте их в свой
.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 будут недоступны.источник
Как объясняется здесь , вы можете сделать это с помощью простых шагов:
источник
Единственные вещи, которые подходят для перехода в начало и конец строки, это
⌘← "SEND ESC SEQ" OH
- перейти к началу строки⌘→ "SEND ESC SEQ" OF
- перейти к концу строкиисточник
bind -p
покажет список связанных экранированных ключей в вашей оболочке, что может помочь дать вам больше идей / поисковых терминов.источник
bind -p
работает только в оболочках Bourne (bash, sh) для zsh, csh tcsh, usebindkey
.объяснено в 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 |
источник