J'utilise vim pour les scripts bash. la chose est parfois que je ne veux pas créer un nouveau fichier, le rendre exécutable, l'exécuter puis le supprimer. Je veux dire les scripts qui ne seront utilisés qu'une seule fois.
Par exemple, j'ouvre vim et tape ceci:
#!/bin/bash
ll | while read line
do
echo $line
done
Je n'ai pas enregistré ce fichier, j'utilise simplement vim pour simplifier le script bash. Je sais que je peux exécuter une commande bash via !
dans vim. Mais qu'en est-il de l'exécution de tout ce qui se trouve dans le tampon?
command-line
external-command
bash
St.Antario
la source
la source
<C-x><C-e>
et l'exécuter en écriture, non?set -o vi
, vous pouvez appuyer surEsc-v
pour modifier la ligne de commande dans vi. Ensuite,Esc-:wq
pour exécuter.Réponses:
J'ai écrit une réponse assez détaillée à ce sujet sur stack-overflow . L'idée de base est que, puisque la commande d' écriture concerne l' écriture et non l' enregistrement , vous pouvez écrire le texte de votre tampon dans un programme externe, tel que python ou bash. Dans votre cas, vous voudriez faire quelque chose comme:
ou
Ces commandes écrivent littéralement le texte de votre tampon directement dans le programme que vous spécifiez
!
, ce qui est pratique car vous n'avez pas besoin d'enregistrer un fichier. Bien sûr, vous pouvez également faire quelque chose comme:qui enregistre votre fichier, puis l'exécute en tant que script bash. Vous pouvez choisir celui qui vous convient le mieux.
la source
:w !bash -a test
mais j'ai obtenu "ne peut pas exécuter le fichier binaire"test
fichier vide , cela fonctionne bien pour moi. Que doit faire la commande et que doit-elletest
contenir?test
contenir?test
est juste un argument pour-a
.test
c'était censé être un fichier. Je ne sais pas trop quoi faire. Si vous essayez quelque chose de complexe, il peut être préférable de simplement l'enregistrer dans un fichier. Il pourrait être utile de poser une question distincte afin que vous puissiez fournir plus de détails. Ce serait probablement aussi une bonne question pour Unix et LinuxScénario: vous travaillez dans le shell bash. Tout d'abord, assurez-vous que le mode d'édition local est vi:
Maintenant, lorsque vous vous retrouvez à travailler sur une commande longue comme la suivante, appuyez sur Esc+ v.
Cela chargera votre commande dans une
vi
session temporaire . Maintenant, vous pouvez le modifier comme vous le souhaitez, et même ajouter une autre commande ...Une fois la modification terminée, tapez Esc
:wq
et la ou les commandes seront exécutées, par exemple:la source
Esc
clé;)Esc
clés!? Comment peuvent-ils alors utiliser Vim?Esc
clé lors de l' exécution Vim dans un terminal.