2009-05-20 8 views
0

Vim j'ai les commandes suivantes dans un fichier README:Impossible d'exécuter de nombreuses commandes en mode visuel de l'extérieur

./Setup ... 
./Setup ... 
./Setup ... 

Je veux les exécuter en sélectionnant les codes visuels puis de les exécuter.

Je cours sans succès

: '<,'> ! 

Code actuel après les commentaires de Luc dans sa réponse

Mon code Vimrc que je ne l'ai pas réussi à faire fonctionner:

vmap <silent> <leader>v y:exe '!'.join(split(@", "\n"),';')<cr> 

J'essaie de faire une combinaison de clavier pour

v yy 

Comment pouvez-vous obtenir le travail de commande ci-dessus, de sorte que vous pouvez exécuter les commandes de fichier directement dans vim?

Répondre

1

Cela pourrait être trop simplifier les choses, mais pourquoi ne pas simplement faire:

 
:e README 
:%!bash 

Ceci filtre le fichier en cours via bash, en exécutant chaque ligne comme une commande. Le tampon actuel est remplacé par la sortie de l'exécution de toutes les commandes du fichier.

Il pourrait être utile de faire :w RESULTS l'enregistrer comme un autre fichier d'abord, afin de ne pas écraser accidentellement l'original:

 
:e README 
:w RESULTS 
:%!bash 

Vous aviez dit que vous vouliez faire avec une sélection visuelle, qui fonctionnerait aussi bien Après avoir sélectionné ce que vous voulez exécuter, tapez :. '<,'> sera automatiquement ajoutée à la commande en cours. '< est la marque du début de la sélection en cours, alors que '> est la marque à la fin de la sélection en cours. Vous pouvez simplement exécuter seulement les commandes que vous avez sélectionné comme ci-dessus:

 
:'<,'>!bash 

Cela remplacera seulement les commandes sélectionnées avec la sortie de l'exécution de ces commandes.

+0

@Compiler: Merci pour votre réponse! –

5
  • Sélectionnez d'abord votre texte,
  • puis copiez-le avec y,
  • et enfin, vous pouvez exécuter:

    : '!'. Exe rejoindre (split (@ "" \ n "), ';')

+0

Votre commande fonctionne! Je vous remercie. Je me demande s'il y a une façon plus courte de faire la même chose. Il m'est difficile de me souvenir de la commande. –

+1

Vous pouvez définir un mappage: ->: vnoremap quelqu'il soit: exe '!'. Join (split (@ "," \ n "), ';')

+0

@Luc: Pourriez-vous donner un exemple de combo. Je suis nouveau en les faisant.J'ai mis sans succès comme un combo, c'est à dire appuyez sur TAB et A pour obtenir la dernière partie. –

Questions connexes