Perché esportare vim come EDITOR in zsh disabilita le scorciatoie da tastiera?


23

Il mio .zshrcassomiglia a questo:

export EDITOR="/usr/bin/vim"

Ora quando apro un terminale e inserisco una scorciatoia da tastiera come ctrlaper andare all'inizio della riga, non funziona. Invece, la stringa ^A(o qualche altra stringa, a seconda della scorciatoia che ho inserito) viene inserita nel terminale:

emlai:~ % ^A

Rimuovendo la parola exportdalla mia .zshrc, le scorciatoie da tastiera funzionano correttamente:

EDITOR="/usr/bin/vim"

L'esportazione EDITORcome qualcos'altro oltre a far vimfunzionare anche le scorciatoie da tastiera, ad esempio:

export EDITOR="/usr/bin/nano"

Perché succede?

Ho provato anche con questo bash, e le scorciatoie da tastiera funzionano correttamente in tutti i casi lì.

Risposte:


27

zshcome la maggior parte delle shell moderne ha una scelta tra due diverse mappature della tastiera per l'editing da riga di comando: viuno e emacsuno. In alcune shell (come quelle basate su tcsho readlinesimili bash), emacsquella è quella predefinita e probabilmente quella che ti aspetti.

Con zsh, ottieni la emacsmodalità di default a meno $EDITORche non $VISUALcontenga vi(se sei un utente vi/ nvi/ vim/ elvis(anche vimacsse e se $EDITORè ...), presumi che tu preferisca la modalità)./home/victor/bin/emacszshvi

Per forzare una modalità particolare indipendentemente dal valore di $EDITOR, aggiungi:

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

o il loro equivalente più portatile:

set -o emacs
set -o vi

al tuo ~/.zshrc. Vedere

info -f zsh -n Keymaps

per dettagli.


Interessante. C'è qualche motivo per usare bindkeysopra set -o?
Zenith,

@zenith, probabilmente no. bindkeyè il modo tcsh e il modo originale. Oggi dovrebbero essere equivalenti.
Stéphane Chazelas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.