Comment puis-je rediriger la sortie d'une commande shell dans un nouveau tampon dans Vim? Ce qui suit évidemment ne fonctionnerait pas, mais vous pouvez voir ce que je veux dire:
:!echo % | :nouvelonglet
Comment puis-je rediriger la sortie d'une commande shell dans un nouveau tampon dans Vim? Ce qui suit évidemment ne fonctionnerait pas, mais vous pouvez voir ce que je veux dire:
:!echo % | :nouvelonglet
Vous ne pouvez pas rediriger la sortie d'une commande shell vers une commande qui crée un nouveau tampon, mais vous pouvez créer un nouveau tampon et lire la sortie d'une commande shell dans ce tampon avec une seule entrée sur la ligne de commande de Vim. Une version fonctionnelle de votre exemple serait
:tabnew | r !echo =bufname("#")
Notez que le symbole de barre verticale dans ce cas est un séparateur entre les commandes ex de Vim, et non le pipe du shell. Voir aussi
:help :tabnew
:help :r!
:help :bar
Voici ce que je fais. C'est mentionné dans les commentaires des réponses ci-dessus.
:new | r !
:new | r ! # (# est remplacé par le nom du fichier)
Exemple 1 : Trouvez tous les fichiers texte dans /tmp
:new | r ! find /tmp -name '*.txt'
Exemple 2 : Vous modifiez le fichier foo.txt et vous voulez exécuter ls -la foo.txt
et obtenir la sortie dans un tampon :
:new | r ! ls -la #
Le #
est remplacé par le nom du fichier du tampon d'origine que vous modifiez. C'est particulièrement utile pour les commandes de contrôle de source ad hoc, par exemple :
:new | r ! hg annotate -un #
:new
crée une division horizontale, utilisez :vnew
si vous voulez une division verticale à la place et :tabnew
pour un nouvel onglet.
Si vous avez vraiment besoin de stocker le résultat dans un nouveau tampon, mais que vous avez besoin d'informations du vieux tampon actuel, alors vous pouvez utiliser system()
:
:let res = system('echo '.expand('%'))
:tabnew
:put=res
ou stocker le nom du tampon actuel pour plus tard:
:let bn = expand('%')
:tabnew | :r!echo =bn
@Ciro Santilli a lié la réponse https://stackoverflow.com/a/3826018/9306292
:enew | .!
Si vous voulez garder votre configuration simple, utilisez l'un de ceux-ci :
v / s / votre raccourci touche de tabulation, c'est-à-dire t
et ensuite
:%!command
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.