Comment ouvrir un fichier dans vim à l'aide de pipe


15

J'arrive à utiliser la locatecommande très souvent.

Donc, si j'exécute la commande suivante.

locate updatedb | head -1

Ensuite, cela me donne la O/p

/usr/updatedb.conf

Je me demande s'il existe une telle commande qui peut me permettre d'ouvrir ce fichier directement?

J'espère quelque chose comme ça.

locate updatedb | head -1 | vim

Réponses:


22

Vous avez presque terminé:

$ locate updatedb | head -1 | xargs vim

Parfois (sous certains terminaux), vous devez réinitialiser le terminal après l'édition.

$ reset

2
Très probablement votre version d' locateavoir -l/ --limit/ -noption de sorte que vous n'avez pas besoin head -1:locate -n 1 updatedb | xargs vim
Dmitry Alexandrov

1
Pourquoi cette corruption de terminal se produit-elle? Existe-t-il un moyen de l'éviter?
Jacobo de Vera

16

En tant qu'éditeur interactif, Vim a besoin à la fois de stdin et de stdout, donc son utilisation dans un canal est problématique et oblige Vim à le signaler. Pour un seul fichier, la substitution de processus résout facilement ceci:

vim "$(locate updatedb | head -1)"

Vous pouvez également utiliser des backticks, et cela fonctionne même dans Vim lui-même:

:edit `locate updatedb | head -1`

Cela fonctionne également sur les chaînes avec des espaces, ce qui est bien pour les noms de fichiers comme "version 2 - final.csv".
Alex Moore-Niemi

0

Je sais que c'est une mauvaise solution mais je l'ai utilisé pour créer un alias dans .bashrc:

locate updatedb  > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch

Inconvénients: moche

Avantage: aucun effet secondaire avec terminal

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.