Comment changer le raccourci du mot précédent / suivant dans bash?

20

Comment configurer Ctrl-Gauche et Ctrl-Droite comme raccourcis de mot précédent / suivant pour bash (actuellement alt-b et alt-f)?

ripper234
la source
Hum, cette question ne vous dit rien ?
Gilles 'SO- arrête d'être méchant'
@ Gilles - Je pensais avoir déjà demandé quelque chose de similaire, oui, désolé. Fermé l'original en dup (car il appartient plus ici qu'à Super User).
ripper234

Réponses:

26

La bonne réponse dépend du terminal que vous utilisez.

Pour Gnome Terminal ou les versions récentes de xterm, mettez ceci dans ~ / .inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word

Pour PuTTY, mettez ceci dans votre ~ / .inputrc:

"\eOC": forward-word
"\eOD": backward-word

Pour rxvt, mettez ceci dans votre ~ / .inputrc:

"\eOc": forward-word
"\eOd": backward-word

Vous pouvez probablement vous en sortir en rassemblant tous ces éléments dans ~ / .inputrc.

Dans tous les cas, vous devez également le mettre dans votre ~ / .bashrc (ou ~ / .zshrc):

export INPUTRC=~/.inputrc

Si cela ne fonctionne pas ou si vous avez un terminal différent, accédez à votre terminal et tapez Ctrl+ V Ctrl+ ->. Utilisez ensuite cela au lieu de "\e[1;5C"ou "\eOC"au - dessus. Répétez l'opération pour Ctrl+ <-.

Notez que vous devez écrire les séquences d'échappement du clavier en utilisant la syntaxe inputrc , par exemple

  • \C signifie contrôle
  • \esignifie échapper (qui apparaît comme ^[lors de la frappe en utilisant Ctrl + V ci-dessus)
Mikel
la source
Ctrl + V, Ctrl -> imprime "^ [[1; 5C", et j'utilise gnome-terminal.
ripper234
2
Alors essayez "\e[1;5C": forward-word. Et faire la Ctrl+ Vchose pour Ctrl+ Left Arrowaussi.
Mikel
Merci, fonctionne comme un charme. Lentement mais sûrement, j'apprendrai à nager sous Linux. Pourquoi ont-ils dû le rendre si non intuitif en premier lieu? (Vous devez admettre que ctrl-gauche, ctrl-droite sont de meilleurs choix)
ripper234
1
Si vous pensez que Linux n'est pas intuitif pour commencer, essayez une installation par défaut de FreeBSD ou même de Solaris. Avoir bash comme coquille de départ est un rêve. De plus, comme les claviers n'avaient pas toujours de touches fléchées, Emacs, et donc bash, prennent également en charge les raccourcis. Essayez d'utiliser Ctrl-b et Ctrl-f pendant un certain temps.
penguin359
2
La beauté des systèmes UNIX / Linux est qu'il est facile de déplacer les paramètres. Une fois que vous avez configuré vos programmes préférés comme vous les aimez, copiez-les simplement. J'utilise en fait le contrôle de version pour mes fichiers de répertoire personnel comme .inputrc, .bashrc, .vimrc, etc. J'utilise mercurial pour cloner et garder tous les paramètres de mon répertoire personnel à jour entre les ordinateurs. Je prévois également à un moment donné de publier mon dépôt afin que d'autres puissent partager tout mon travail acharné.
penguin359
3

Si vous utilisez ZSH, vous devez adopter une méthode différente, car, en citant les parties pertinentes du guide ZSH d' ArchLinux :

Zsh n'utilise pas readline #like bash #, au lieu de cela, il utilise son propre et plus puissant zle.

Il ne lit pas / etc / inputrc ou ~ / .inputrc.

Après avoir lu ce guide, je me suis dit que j'avais besoin d'une source modren de ZSH pour avoir une idée générale de la façon de le faire, et j'ai donc trouvé ce fichier oh-my-zsh qui décrit le comportement que je voulais, j'ai copié les parties pertinentes que j'ai voulu dans mon ~ / .zshrc:

bindkey -e #Use emacs mode, it's more sane for beginners
bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
# Also, If you want to copy paste this into your zshrc,
# I'm pretty sure you would have to add this at the top : 
# setopt interactive_comments
mirandalol
la source
j'essayais ctrl + rightarrow, mais ça ne voyage pas un mot sur Mac
TomSawyer