web-dev-qa-db-fra.com

Avantages de l'utilisation de set -o vi

J'ai vu de nombreux développeurs utiliser cette commande pour définir l'option sur vi. Je n'ai jamais compris l'utilité réelle de cela?

Lorsque vous utilisez les commandes bash, quelle aide fournit le passage à vi?

61
Chander Shivdasani

En définissant la modification de votre ligne de lecture sur emacs (valeur par défaut) ou vi (set -o vi) vous standardisez essentiellement vos commandes d'édition, à travers le Shell et l'éditeur de votre choix1.

Ainsi, si vous souhaitez éditer une commande dans le Shell, vous utilisez les mêmes commandes2 que vous feriez si vous étiez dans votre éditeur de texte. Cela signifie qu'il ne faut se souvenir que d'une seule syntaxe de commande et (si cela n'était pas suffisamment avantageux) rendrait probablement votre édition dans les deux environnements plus rapide et moins sujette aux erreurs ...

Vous pouvez tirer parti de cette relation en mode vi en tirant n'importe quelle commande de votre historique Shell, en appuyant sur Escape pour entrer en mode commande puis frapper v, qui ouvrira votre $ EDITOR avec la commande chargée pour une édition plus complexe avec toute la puissance de vim. Une fois que vous avez terminé de modifier la commande à votre satisfaction, :wq et la commande est exécutée dans votre Shell.


1. En supposant, bien sûr, que vous utilisez Emacs ou Vi/m comme éditeur.
2. Ou, plus précisément, un sous-ensemble de ceux-ci ...

60
jasonwryan

Le mode Vi est une énorme amélioration de la convivialité si vous utilisez un client SSH mobile comme ConnectBot pour Android.

Cela est dû à une dépendance réduite aux touches de modification.

Vim est beaucoup plus facile à utiliser avec un clavier virtuel sur un smartphone ou une tablette que ... toute autre chose, y compris les méthodes d'édition natives intégrées à l'interface utilisateur Android. Ironiquement, il est plus facile d'éditer C sources avec Vim dans une session SSH que d'éditer, disons, un message instantané avec le propre widget d'édition de la plate-forme à cet effet.

Le mode Shell vi apporte un avantage similaire.

10
Kaz

Il vous permet de modifier des éléments sur la ligne de commande en utilisant les modes et opérations vi.

Un exemple aidera à le rendre beaucoup plus clair:

Vous tapez cp tmp/some_other_long_directory/file1.xt /tmp2/some_other_xtra_long_dir/

mais vous obtenez une erreur - vous devriez avoir tapé file1.txt ne pas file1.xt

Sans cet ensemble d'options, vous appuyez sur la flèche vers le haut, puis sur la flèche vers la gauche et laissez-le répéter pendant ... 35 fois, jusqu'à ce que vous arriviez à .xt et vous tapez ensuite le t supplémentaire. Nombre total de touches: 7.

Avec cette option définie, vous pouvez (par exemple) appuyer une fois sur la flèche vers le haut, puis sur Échap pour le mode commande, sur 0 pour aller au début de la ligne, puis sur /xt[return] pour accéder au xt, puis vous pouvez taper i pour le mode d'insertion et taper le t manquant. Cela peut sembler incroyablement compliqué à certains égards, mais si vous êtes un utilisateur de Vim, ces commandes sont déjà très bien connues. Nombre total de touches: 9

6
Michael Durrant

Je ne sais pas s'il y a un avantage direct. Je suis un utilisateur de vi depuis plus de 20 ans. Je suis également un utilisateur de screen depuis encore plus longtemps, et d'autres programmes qui utilisent les touches vi. C'est naturel pour moi de préférer mettre le mode "vi" en bash. Mais je travaille également sur des centaines de serveurs dans mon travail, la plupart sont réglés sur le mode "emacs" par défaut. J'ai donc besoin d'utiliser les deux modes. Mais c'est vraiment juste une question de préférence.

5
Arcege

Le principal avantage est l'édition modale de votre ligne de commande. Si vous connaissez Vim et aimez sa philosophie, les avantages doivent être évidents. Si vous en avez l'habitude, la mémoire musculaire de votre doigt vous fera éditer vos commandes bash à une vitesse fulgurante.

[~ # ~] nb [~ # ~] : Si vous n'aimez pas l'édition modale, vous devriez quand même apprendre à profiter de la (par défaut ) mode emacs. Voici quelques raccourcis clavier astucieux qui fonctionnera sur n'importe quel processus avec readline, comme bash.

4
rahmu

Probablement en retard à la fête, mais pour moi, utiliser le mode vi concerne plus la création de scripts interactifs .. par exemple

for i in `ls | grep -v gz`
do
    echo $i
    gzip $i
done

un exemple très simple de ce qui pourrait être assez compliqué. ESCkv vous place dans une session vi où vous pouvez modifier le script, puis :wq et ça marche.

1
Walter Werner

Si vous vous habituez à vi, vous le définissez donc en mode vi comme éditeur Shell. Ce serait la raison évidente. L'autre est lorsque le bash n'est pas disponible par défaut dans certains systèmes d'exploitation (principalement UNIX comme AIX, Solaris), de sorte que la fonction d'historique du Shell n'est pas disponible, donc la façon dont vous obtenez les anciennes commandes en définissant le Shell éditeur à vi, et EscCtrl+K ou Ctrl+L

1
Shâu Shắc

Il peut vous permettre de naviguer et de modifier facilement la ligne de commande à l'aide des raccourcis de vim, par ex. passer rapidement à un mot à droite, supprimer un mot.

Par les raccourcis par défaut, lorsque vous devez aller à la fin de la ligne, vous devez Ctrl+e, alors qu'avec set -o vi, vous venez d'appuyer sur $, comme dans vim.

1
Hahn