J'utilise grep -e Peugeot -e PeuGeot carlist.txt
pour rechercher dans carlist.txt et extraire quelques éléments et je suppose que grep -e Peugeot -e PeuGeot carlist.txt | vi
cela me permettrait de le faire passer pour moi, mais voici ce que je reçois:
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
:read !grep -e Peugeot -e PeuGeot carlist.txt
.:read !cmd...
inclura la sortie de cmd ... dans le fichier (à l'emplacement du curseur)grep ... > /tmp/foo
. Vous pouvez ajouter&& vi /tmp/foo
à la fin si vous souhaitez modifier ce fichier immédiatement.vi
fonctionne sur des fichiers texte arbitraires; les fichiers eux-mêmes ne sont pas directement associés àvi
. (Ou, comme je viens de l'apprendre,vi -
feravi
fonctionner le contenu destdin
;vim
fait ceci, mais pas toutes les versions de levi
fait.)Réponses:
L'exécution de vi ou vim avec '-' en argument fait lire le fichier à éditer à partir de l'entrée standard. Par conséquent:
fera ce dont vous avez besoin.
la source
stdin
. Dans certains cas, vous devrez rediriger destderr
versstdin
, par exemple:valgrind my_file.out 2>&1 | vi -
grep
la coloration de recherche (composée de caractères non imprimables) dans Vim? Vous pouvez toujours faire une recherche dans Vim.Vous devriez utiliser la redirection de sortie :
En outre, je pense que votre
grep
peut être amélioré:la source
En dehors de cela
vim -
, vous pouvez également utiliser la substitution de processus en utilisant la<(command)
syntaxe, par exemple:Voir également:
la source
La redirection de sortie peut également être utilisée comme ceci:
Même plusieurs sorties de commande peuvent être redirigées, comme si elles avaient été enregistrées dans des fichiers séparés:
la source
Dans
~/bin/r
:dans
~/.vimrc
:Ensuite:
et j'ai
dans mon
~/.bashrc,
genrela source
Il existe de nombreux moyens efficaces de faire ce que vous voulez, que ce soit dans vi (m) ou en dehors de vi (m).
Exécutez votre commande, créez un fichier (temporaire), puis éditez-le ( voir la réponse de Joseph R. )
Exécutez votre commande (en arrière-plan) pour générer un fichier temporaire et éditez-le à l'aide de ": e!" pour actualiser votre fichier au fur et à mesure de sa production (utile pour les fichiers journaux et les autres fichiers produits par un autre processus, par exemple cron?),
Exécutez vi (m), puis exécutez un processus enfant pour créer le fichier temporaire, puis lisez-le.
Ou, passez simplement au fichier,
Exécutez vi (m) et utilisez le double-coup "!!" vi exécuter la commande enfant en prenant les résultats et en les insérant à l'emplacement actuel (écrase la ligne en cours, assurez-vous donc d'avoir une ligne vide),
Et maintenant, vous pouvez écrire le fichier (si vous le souhaitez) sous n’importe quel nom de fichier,
Et la réponse de Petr Uzel est également bonne,
Qui lit stdin
la source