Я бачу, що 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
для дому та ⌘→ "SEND ESC SEQ" OF
для кінця (це великі регістри "це не нулі"). Це імітує фактичне натискання клавіш Home та End, і як таке буде працювати в bash, vim тощо.
Для переходу між словами та початком / кінцем рядків у iTerm2 виберіть одне із двох рішень нижче.
Якщо ви не хочете використовувати "природне редагування тексту", зазначене вище, ви можете зіставити потрібні ключі вручну:
[+]
піктограмуПеремістіть курсор одним словом ліворуч
0x1b 0x62
Перемістіть курсор одним словом праворуч
0x1b 0x66
Перемістити курсор до початку рядка
0x01
Перемістити курсор до кінця рядка
0x05
Видалити слово
0x1b 0x08
Видалити рядок
0x15
Скасувати
0x1f
Не забудьте видалити попередні прив’язки :
Says send Hex Codes: 0x1b 0x1b 0x5b 0x44
. Було б добре знати, якщо люди не захочуть цього зняти.
Я бачу, що вже багато хороших відповідей, але це має забезпечити максимально близький до рідної ОСX функціонал у більш ніж просто вашій оболонці. Я перевірив, що це працює в сесіях ZSH, Bash, node, python -i, iex та irb / pry (використовуючи gb rb-readline gem для readline, але має працювати для всіх).
Відкрийте налаштування iTerm ⌘+ ,та перейдіть на Profiles
вкладку ( Keys
вкладку можна використовувати, але додавання прив'язки клавіш до вашого профілю дозволяє зберегти свій профіль та синхронізувати його на декількох комп'ютерах) та keys
підвкладку та ввести наступне:
Видаліть усі символи, що залишилися від курсору
⌘+ ←DeleteНадіслати Hex коди:
0x15
Більш сумісно, але функціоналом іноді є видалення цілого рядка, а не лише символів зліва від курсора. Я особисто використовую це, а потім замінюю свій zsh bindkey для^U
видалення лише речей зліва від курсору (див. Нижче).або
0x18 0x7f
Менш сумісний, не працює у вузлі і не працює в zsh за замовчуванням, див. Нижче, щоб виправити zsh (bash / irb / pry має бути добре), виконує потрібну функціональність, коли він працює.
Видаліть усі символи праворуч від курсору
⌘+ fn+ ←Deleteабо ⌘+ Delete→Надіслати шістнадцяткові коди:
0x0b
Видаліть одне слово зліва від курсору
⌥+ ←DeleteНадіслати Hex коди:
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
. Я переконався, що обидва працюють на мене. Я дійсно думаю, що у вас i ⌥
+ ←
переписано в 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:
Я використав відповідь Травіса і створив динамічний профіль, який ви можете імпортувати, грунтуючись на його інструкціях.
GabLeRoux / iterm2-macos-dynamic-profile
Інструкції є у readme, і імпортувати це набагато швидше, ніж додати їх уручну. Я відповів на це відповідь на запит @ gooli, оскільки це було приховано в коментарі. Сподіваюся, вам сподобається це 🍻
Просто для того, щоб допомогти тому, у кого виникає та сама проблема, але спеціально використовується оболонка Zsh з iTerm 2. Виявляється, Zsh не читає /etc/inputrc
належним чином , і тому не розуміє жодних ключових прив’язок, які ви встановили за допомогою налаштувань!
Щоб виправити це, вам потрібно додати до .zshrc
файлу деякі ключові прив’язки , наприклад:
# key bindings
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
Зверніть увагу на зворотні риски в прикладі вище перед "e", пов'язана стаття не відображає їх, тому додайте їх у свій .zshrc
файл, додаючи прив'язки.
Старі вкладки emacs моди все ще можуть працювати в iterm2 і os x-терміналі:
Налаштування -> Профілі -> Клавіші (вкладка в профілях)
Left/Right option <kbd>⌥</kbd> key acts as +Esc
(схожий на ОС x x термінал)Це повинно дозволяти alt- fі alt- bдля переміщення слів за словами. (Ще ctrl- aі ctrl- eзавжди працюй як завжди)
Якщо встановлено як meta
ці старі прив'язки, вони працюватимуть, коли деякі прив'язки iterm2 недоступні.
Як пояснюється тут , ви можете це зробити простими кроками:
За замовчуванням слова стрибки (опція + → або ←) та вилучення слів (опція + зворотна область) не працюють. Щоб увімкнути це, перейдіть до «iTerm → Налаштування → Профілі → Клавіші → Завантажити попередньо ... → Натуральне редагування тексту → Бум! Голова вибухає»
bind -p
покаже перелік зв’язаних клавіш, що втікають у оболонці, що може допомогти вам отримати більше ідей / пошукових термінів
bind -p
працює лише в оболонках Борна (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 |