Bash: Як перемістити курсор ліворуч на слово?


14

В OSX я можу просто утримувати optionклавішу і натискати ліву клавішу курсору, поки я не доберуся до слова, яке мені потрібно відредагувати (або у Vi я можу просто натиснути b, але я не зміг зрозуміти, як це зробити у Терміналі ще ...


Ви можете побачити повний список прив'язок читання на цій сторінці , включаючи інструкції, як налаштувати власні прив’язки.
Jasonwryan

Відповіді:


26

Щоб встановити прив'язку клавіш: спочатку потрібно з’ясувати, який ключ створює послідовність клавіш Ctrl+ Left. Просто скористайтеся командою, catщоб вимкнути будь-які перешкоди для існуючих прив'язок клавіш, а потім введіть послідовність клавіш. У моїй системі (Linux) це виглядає приблизно так:

$ cat
^[[1;5D

Натисніть Ctrl+, dщоб вийти з кота. Тепер ви дізналися, що Ctrl-Left видає 6 ключових кодів:

  • Втеча (^ [)
  • [
  • 1
  • ;
  • 5
  • D

Тепер ви можете задати команду bind:

bind '"\e[1;5D": backward-word'

6
Ви можете додати `` "\ e [1; 5D": зворотне слово '' в $ HOME / .inputrc для постійного ефекту, якщо хочете.
llhuii

@llhuii +1, я забув це згадати!
Даніель Кульман

2
+1 - найбільш гнучкий спосіб прив’язати довільну комбінацію клавіш де завгодно!
Ірфі

14

Баш-функція, яку ви хочете, є backward-word. Ви можете запустити, bind -q backward-wordщоб отримати список ключів, прив’язаних до цієї функції. Одне поширене зв’язування - Esc+b

Крім того, багато терміналів підтримують Ctrl+ Left(та сама гаряча клавіша, яку ви можете використовувати в X, щоб стрибати назад за словом)


1
Гаразд, він повертається, backward-word can be invoked via "\eb".але як я зв'язати контроль + ліворуч замість Esc + b? Крім того, один недолік Esc + b, який я вже бачу, - це те, що мені потрібно щоразу, коли я можу повертатися до слова, лягати на клавішу Esc, чи немає кращого способу?
nipponese

1
Чи є кращий спосіб? Природно: set editing-mode vi:)
jasonwryan

3
@nipponese "esc b" також може використовуватися на клавіатурі як ALT-b. Це може знадобитися спеціально лівим або правим альтом залежно від конфігурації, тому спробуйте обидва.
Випадково832

8

Комбінація клавіш за замовчуванням у Bash for backword-word- Alt+ b. Цей же результат можна досягти і з Esc+ b. Ви повинні спробувати цим, перш ніж редагувати свої клавіші.

Використовуйте bindкоманду для редагування або bind -q [name]отримання поточної зв'язки клавіш певної дії.


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