Comment désinstaller set -o vi?

26

Je voulais essayer le mode vi en bash mais maintenant je voudrais le ramener à la normale.

Comment puis-je désarmer -o vi?

Patryk
la source

Réponses:

30

Les deux interfaces ligne en cours d' édition disponibles bashsont le vimode et le emacsmode, tout ce que vous devez faire est de définir le emacsmode nouveau.

set -o emacs
Chris Down
la source
Il convient de noter que je lisais entre les lignes plutôt que de répondre directement à la question. emacsest le mode d'édition de ligne par défaut dans bash. Le réglage du emacsmode désactive le vimode comme effet secondaire, mais comme mentionné par jlliagre ci-dessous, vous pouvez réellement les désactiver tous les deux.
Chris Down du
25

Cela dépend de ce que vous définissez "normal". Si vous désactivez l'édition en ligne, la méthode documentée pour annuler la -o vidéfinition consiste à définir+o vi

$ set -o vi
$ set -o|egrep -w "(vi|emacs)"
emacs           off
vi              on
$ set +o vi
$ set -o|egrep -w "(vi|emacs)"
emacs           off
vi              off

Chris a déjà répondu si votre mode normal est emacs.

jlliagre
la source
désactiver le (s) mode (s) supprime également la fonction d'historique du shell, maintenant je ne peux pas utiliser les touches fléchées haut / bas pour voir l'historique des commandes :(
rsjethani
2
Cela n'enlève pas la fonction d'historique du shell. Vous pouvez toujours afficher votre historique avec la historycommande et exécuter les commandes précédentes en préfixant leur numéro avec le !caractère.
jlliagre
oui 'historique' et les commandes de la famille fonctionnent toujours mais les touches fléchées haut / bas que j'utilise le plus souvent ne fonctionnent pas. Dès que j'active l'un des modes sur les touches commence à fonctionner ... Je ne comprends pas?
rsjethani
3
Les flèches haut / bas ne sont gérées par le shell que si l'édition de ligne est activée (c'est-à-dire que l'un des modes emacs ou vi est défini). Sinon, les touches fléchées envoient simplement leur séquence d'échappement non traitée.
jlliagre