Activer le mode vi pour le shell et application en mode texte.

Introduction

J'utilise presque uniquement des applications en ligne de commande ou mode texte. Actuellement, je n'avais pas activé l'option pour que mon shell soit en mode Vi. Tant-donné que je suis un utilisateur de Vim, je me suis dis que ça serait plus sympa.

Activation

Pour l'activer uniquement pour le shell bash, zsh ou autre, il suffit d'ajouter une ligne au fichier de configuration *.rc:

set -o vi

Ensuite il faut relancer un terminal ou faire un source *.rc dans le terminal courant.

Pour l'activer de manière global et que ça fonctionne aussi avec les applications en mode texte, il faut ajouter une ligne dans le fichier .inputrc:

set editing-mode vi

Attention ça fonctionne uniquement avec les applications qui utilise readline.

Fixe pour zsh

Avec zsh, il faut ajouter une ligne dans son zshrc pour que ça fonctionne correctement:

bindkey -v

Autrement, il y aura des petits problème, par exemple lorsqu'on active le mode normal qu'on fait un mouvement, il repasse directement en mode insertion, ce qui est très embêtant à l'utilisation.

Indication du mode

Pour avoir une indication du mode, insertion ou normal, il est possible d'ajouter une fonction:

function zle-line-init zle-keymap-select {
    RPS1="$/(main|viins)/-I-}"
    RPS2=$RPS1
    zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select

Ceci ajoutera N pour le mode normal et I pour le mode insertion. Par défaut lorsqu'on ouvre un shell le mode est insertion.

Conclusion

Pour le moment, je suis assez satisfait, et c'est plutôt intéressant d'avoir les même raccourcis dans son shell et dans Vim. Merci à gdott9 pour m'avoir indiquer la fonction et la ligne à ajouter dans mon zshrc pour que ça fonctionne correctement, et à Marmotte pour m'avoir donné l'idée d'utiliser ce mode.

Vus : 1436
Publié par Hobbestigrou : 195