Pourquoi l'exportation de vim en tant qu'EDITEUR dans zsh désactive les raccourcis clavier?


23

Mon .zshrcressemble à ceci:

export EDITOR="/usr/bin/vim"

Maintenant, lorsque j'ouvre un terminal et que j'entre un raccourci clavier comme ctrlapour aller au début de la ligne, cela ne fonctionne pas. Au lieu de cela, la chaîne ^A(ou une autre chaîne, selon le raccourci que j'ai entré) est entrée dans le terminal:

emlai:~ % ^A

Supprimer le mot exportde mon .zshrcfait que les raccourcis clavier fonctionnent correctement:

EDITOR="/usr/bin/vim"

L'exportation EDITORcomme autre chose que vimles raccourcis clavier fonctionne également, par exemple:

export EDITOR="/usr/bin/nano"

Pourquoi cela arrive-t-il?

J'ai également testé cela avec bash, et les raccourcis clavier fonctionnent correctement dans tous les cas.

Réponses:


27

zshcomme la plupart des shells modernes, vous avez le choix entre deux mappages de clavier différents pour l'édition en ligne de commande: un viet un emacs. Dans certains shells (comme ceux basés sur tcshou readlinesimilaires bash), celui- emacsci est celui par défaut et probablement celui que vous attendez.

Avec zsh, vous obtenez le emacsmode par défaut sauf si $EDITORou $VISUALcontient vi(si vous êtes un utilisateur vi/ nvi/ vim/ elvis(mais aussi vimacset si $EDITORc'est ...), suppose que vous préférez le mode)./home/victor/bin/emacszshvi

Pour forcer un mode particulier quelle que soit la valeur de $EDITOR, ajoutez:

bindkey -e # for emacs
bindkey -v # for vi

ou leur équivalent plus portable:

set -o emacs
set -o vi

à votre ~/.zshrc. Voir

info -f zsh -n Keymaps

pour plus de détails.


Intéressant. Y a-t-il une raison d'utiliser bindkeyplus set -o?
zénith du

@zenith, probablement pas. bindkeyest la voie tcsh et la voie originale. De nos jours, ils devraient être équivalents.
Stéphane Chazelas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.