Bash: Comment déplacer mon curseur vers la gauche un mot à la fois?

14

Dans OSX, je peux simplement maintenir la optiontouche enfoncée et appuyer sur la touche de curseur gauche jusqu'à ce que j'arrive au mot que je dois modifier (ou dans Vi, je peux juste taper b, mais je n'ai pas pu comprendre comment le faire dans Terminal encore...

nipponese
la source
Vous pouvez voir la liste complète des liaisons de ligne de lecture sur cette page , y compris des instructions pour personnaliser vos propres liaisons.
jasonwryan

Réponses:

26

Pour définir la liaison de touches: Vous devez d'abord découvrir quels codes de touches la séquence de touches Ctrl+ Leftcrée. Utilisez simplement la commande catpour désactiver toute interférence avec les raccourcis clavier existants, puis tapez la séquence de touches. Dans mon système (Linux), cela ressemble à ça:

$ cat
^[[1;5D

Appuyez sur Ctrl+ dpour quitter le chat. Maintenant, vous avez découvert que Ctrl-Gauche émet 6 codes clés:

  • Échapper (^ [)
  • [
  • 1
  • ;
  • 5

Vous pouvez maintenant lancer la commande bind:

bind '"\e[1;5D": backward-word'
daniel kullmann
la source
6
Vous pouvez ajouter `` "\ e [1; 5D": backward-word '' dans $ HOME / .inputrc pour un effet permanent si vous le souhaitez.
llhuii
@llhuii +1, j'ai oublié de le mentionner!
daniel kullmann
2
+1 pour le moyen le plus flexible de lier des combinaisons de touches arbitraires n'importe où!
Irfy
14

La fonction bash que vous souhaitez est backward-word. Vous pouvez exécuter bind -q backward-wordpour obtenir une liste des clés liées à cette fonction. Une liaison commune est Esc+b

En outre, de nombreux terminaux prennent en charge Ctrl+ Left(le même raccourci clavier que vous pouvez utiliser dans X pour revenir en arrière par mot)

Michael Mrozek
la source
1
Ok, ça revient backward-word can be invoked via "\eb".mais comment lier control + Left au lieu de Esc + b? De plus, un inconvénient de Esc + b que je peux déjà voir est que je dois relâcher la touche Esc à chaque fois que je peux revenir en arrière, n'y a-t-il pas une meilleure façon?
nippon à 7h13
1
Y a-t-il une meilleure façon? Naturellement: set editing-mode vi:)
jasonwryan
3
@nipponese "esc b" peut également être utilisé sur le clavier comme ALT-b. Cela peut devoir être spécifiquement l'alt gauche ou droit selon votre configuration, essayez donc les deux.
Random832
8

Le raccourci clavier par défaut dans Bash pour backword-wordest Alt+ b. Le même résultat peut être obtenu avec Esc+ b. Vous devriez les essayer avant de modifier vos raccourcis clavier.

Utilisez la bindcommande pour modifier ou bind -q [name]pour obtenir le raccourci clavier actuel d'une action spécifique.

Marius Cotofana
la source
2
... et avant -Alt + f
Putnik