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
Krishna
la source

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
periket2000
la source
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`
Ingo Karkat
la source
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

Tebe
la source