ALT + стрілка, що рухається між словами в zsh та iTerm2


19

Я ввійшов на один з серверів провайдерів хостингу і помітив, що ALT + ліворуч і ALT + праворуч перемістилися між словами в підказці оболонки на екрані GNU.

Які ключові прив’язки мені потрібно налаштувати і де отримати цю поведінку до моєї локальної ОС X zsh, що працює в iTerm2?


Людям, зацікавленим у цьому питанні, також може бути цікаво знати, що слова zsh - це не баш слова. FOO=BARце одне слово до zsh і 2 слова bash. Аналогічно, якщо ви встановите курсор на кінець foo --barта зробите alt + backspace, у bash ви будете мати, foo --а в zsh - матимете foo . Zsh додає багато можливостей для башти, але він також має безліч божевільних значень за замовчуванням.
weberc2

Відповіді:


28

Я знайшов рішення тут: https://coderwall.com/p/h6yfda . Скопіює найважливіші частини цього випадку, якщо посилання перейде вниз.

  1. Перейдіть у розділ Налаштування, профіль, клавіші.
  2. Встановіть ліву клавішу to, щоб діяти як символ втечі.
  3. Знайдіть поточний ярлик для ⌥ ← або створіть новий із наступними налаштуваннями:
    • Комбінація клавіш: ⌥ ←
    • Дія: Надішліть послідовність втечі
    • Esc +: b
  4. повторіть для комбінації клавіш ⌥ → з наступними налаштуваннями:
    • Комбінація клавіш: ⌥ →
    • Дія: Надішліть послідовність втечі
    • Esc +: f

1
Варто зазначити, що він характерний для одного конкретного термінального емулятора - не zsh взагалі.
Привіт-Ангел

7

Ви шукаєте ключові слова backward-wordта forward-word. Тож якщо ви знаходитесь в оболонці, де не працюють клавіші, спробуйте bindkey -L | grep backward-wordперевірити, чи вони навіть налаштовані. Більше інформації про це є в zshzle (1) .

Ви можете встановити в'язку клавіш вручну, ввівши щось подібне:

перехідне слово " Ctrl+ v Alt+ Right" вперед

зворотне слово " Ctrl+ v Alt+ Left"

У мене також були проблеми з клавіатурними вкладками, і проблема майже завжди полягала в тому, що клавіша Option / Alt надсилала щось інше, ніж очікувана мета / Escape.


Ви також можете використовувати emacs-forward-wordі emacs-backward-word. Різниця полягає в тому, що ви стрибаєте вперед до кінця слова і назад до початку слова, а не стрибайте завжди на початку слова.
Алекс Габі

Цей варіант є найбільш надійним і чистим рішенням. Він може адаптуватися до різного виду відображення ключів та / або всіляких комбінацій ssh-tmux-zsh. Інші рішення, що передбачають жорстко закодовану послідовність втечі, вирішують лише деякі випадки в певній системі.
HKTonyLee

3

Я не можу говорити за iTerm, але це клавішні зв’язки, які я використовував для вирішення цієї проблеми в терміналі GNOME, на Fedora 19, що працює з ZSH 5.0.7 з Oh-my-zsh:

bindkey "\e[1;3C" forward-word
bindkey "\e[1;3D" backward-word

де \e== послідовність ключа-ключа (як це зафіксовано у розділі 4.1.1 )

і [== O(великі регістри O; як це зафіксовано у розділі 4.2.1 ), у деяких випадках. Бо, наприклад, tmuxця заміна мені потрібна, проте без tmuxнеї не потрібно робити заміни і [==[

Ключові коди послідовності можна отримати, використовуючи catта натискаючи потрібну послідовність. Наприклад, результати пресування <Alt+Right>слід інтерпретувати так:

$ cat
^[[1;3C

^[== \e== Послідовність ключа-ключа

[== [без tmuxАБО [== O(великі регістри о) зtmux

1;3 == Я не впевнений у цьому, але це має логічно означати <Alt>

C == Права клавіша зі стрілкою

Потім ця послідовність задається bindkeyу ~/.zshrcфайлі для збереження, як перший аргумент, і пов'язана , що означає, що натискання клавіші в аргументі 1 виконує певну команду редактора (або віджет в zsh термінах), до віджета, який у першому рядок наведеного вище прикладу є forward-word.

Після ~/.zshrcповторного використання цих двох команд до нього слід додати:

$ source ~/.zshrc

Тепер одне роздратування в моїй системі полягає в тому, що саме ця комбінація викликала емулятор терміналу видавати звуковий сигнал щоразу, коли команда була видана, це я усунув, відключивши

'Edit'->'Profile Preferences'->'Terminal Bell' прапорець.


2

Що найкраще працювало для мене, щоб зробити навігацію командного рядка iTerm2 більш інтуїтивно зрозумілою для мене (я молодий дорослий, який не виріс у командному рядку, але багато часу провів у текстових редакторах та IDE) до:

  • Перейдіть до Налаштування -> Профіль -> Ключі
  • У списку ключових відображень є поле для додавання / видалення або завантаження пресетів (комбінований вікно)
  • Оберіть Natural Text Editingопцію у спадному меню "Попередні налаштування".

Це за замовчуванням ключі редактора до більш стандартного розташування, не змінюючи кожен варіант окремо.


0

Я пропоную вам скористатися zkbdдля налаштування клавіш. Я його використовую і Alt+ Left/ Alt+ Rightпрекрасно працює на iTerm2. Див zshcontrib(1)докладної інформації про zkbd.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.