Activer le keybinding de Vim dans Zsh

J’ai enfin trouvé la réponse à une de mes vieilles questions ! Est-ce qu’il y a une façon simple (des raccourcis claviers ou commandes) pour se déplacer et éditer mes lignes de commandes dans zsh ?

Ma problématique est la suivante : c’est souvent galère d’éditer une ligne de commande. Et plus la ligne est longue plus c’est galère. À tel point que souvent je préfère retaper la ligne complète pour y apporter mes quelques petites modifications.

J’avais déjà fait des recherches sur le sujet, mais rien de probant. J’ai cherché s’il était possible d’avoir dans zsh les mêmes commandes de déplacement que dans Vim.

Aujourd’hui j’ai la réponse et la réponse est oui, mais vous l’aviez sans doute déjà deviné avec le titre. (Pour ceux qui préfèrent bash et se sont retrouvés sur cet article par mégarde, un autre article vous explique comment faire la même chose dans bash. Pour les autres vous pouvez aussi allez lire l’article : je préfère son introduction à celle-là.)

J’ai découvert que par défaut la plupart des terminaux utilisaient le keybinding d’Emacs et qu’il était possible de le changer pour celui de Vim. Entre apprendre Emacs ou utiliser ce que je sais déjà de Vim, j’ai vite choisi.

Manipulation

Ajoutez la ligne suivante à votre ~/.zshrc

bindkey -v

Et redémarrez votre terminal (ou login/logout ou encore source peuvent être suffisant).

Résultat

Vous pouvez maintenant utiliser votre terminal comme si vous étiez dans Vim. En mode normal (Esc pour y accéder) :

  • a insérer du texte après le curseur
  • A insérer du texte à la fin de la ligne
  • i insérer du texte avant le curseur
  • x supprimer la lettre sous le curseur
  • dd supprimer la ligne
  • e déplacer le curseur à la fin du mot où est le curseur (ou le mot suivant)
  • w déplacer le curseur au début du mot suivant
  • b déplacer le curseur à la fin du mot précédent
  • / suivi d’un terme, recherche le terme dans l’historique des commandes

Et encore pleins d’autres keybindings que vous connaissez surement déjà puisque après tout, si vous avez décidé d’activer les keybindings de vim c’est que vous le connaissiez surement déjà.

Vous ne connaissez vraiment pas les autres keybinding de vim et vous souhaiteriez savoir ? Voici la documentation de vim.