Activer le keybinding de Vim dans Bash

J’utilise vim et mon terminal tous les jours. Des fois, j’aimerais bien avoir les fonctionnalités de l’un dans l’autre et inversement.

Par exemple, lorsque je souhaite éditer une ligne de commande de plusieurs metres de long : je trouve que ça devient un peu trop vite fastidieux... C’est un peu compliqué de ne pouvoir se déplacer qu’avec les touches de direction gauche et droite de son clavier pour modifier un mot mal-orthographié au début de la commande.

Du coup, en tant qu’utilisateur de vim, je me dis des fois que ce serait top d’avoir les mêmes "raccourcis" que dans le mode normal de vim :

  • avancer de 6 mots et se positionner à la fin du sixième mot
  • se placer au début du troisième mot suivant
  • supprimer à partir de mon curseur jusqu’a la fin du dixième mot suivant
  • passer en mode REPLACE

Je gagnerais déjà beaucoup de temps si j’avais seulement ces fonctionnalités, mais il y en a encore plein dans vim.

La grande nouvelle est la suivante : C’est possible. Vous pouvez activer un mode Vim dans votre bash. (Pour ceux qui comme moi, utilise plutôt zsh, un autre article vous explique comment faire la même chose dans zsh)

Manipulation

Je l’ai appris dernièrement, mais les modes d’édition des principaux terminaux sont tirés des deux grands editeurs en ligne de commande : vim et emacs.

Par défaut, c’est le mode d’édition d’emacs qui est utilisé partout, mais vous pouvez indiquer à votre interpréteur de ligne de commande que vous préférez vim.

Pour ce faire, ouvrez votre précieux .bashrc et ajouter cette ligne :

set -o vi

Ensuite redémarrez votre terminal. Le login/logout ou le sourcing sont suffisants et utiles sur serveur distant.

Résultat

Amusez-vous avec vim dans votre bash. Tout est comme dans vim :

  • ESC pour changer de mode (passer en mode normal)
  • $ aller à la fin de la ligne de commande
  • b aller au début du mot précédant
  • w aller au débit du mot suivant
  • e aller à la fin du mot suivant
  • etc.

Il y en a plein d’autres et vous devez surement déjà les connaitre. Sinon rendez-vous dans la doc de vim !