2009-05-20 15 views
0

Ich habe die folgenden Befehle in einer Readme-Datei auszuführen:kann nicht viele Befehle in Vims visuellen Modus extern

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

Ich will laufen sie durch Auswahl der Codes visuell und dann läuft sie.

Ich betreibe erfolglos

: '<,'> ! 

Aktuelle Code nach Lucs Kommentare in seiner Antwort

Mein Code in .vimrc, die ich nicht geschafft haben, an die Arbeit:

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

Ich versuche, eine Tastaturkombination für

0 zu machen
v yy 

Wie können Sie den obigen Befehl Arbeit bekommen, so dass Sie Datei Befehle direkt in Vim laufen kann?

Antwort

1

Diese Dinge vereinfachend sein könnte, aber warum nicht einfach tun:

 
:e README 
:%!bash 

Dies filtert die aktuelle Datei durch bash, wobei jede Zeile als Befehl ausgeführt wird. Der aktuelle Puffer wird durch die Ausgabe aller Befehle in der Datei ersetzt.

Es könnte hilfreich sein, ein :w RESULTS zu tun speichern Sie es als eine andere Datei zuerst, so dass Sie nicht überschreiben versehentlich das Original:

 
:e README 
:w RESULTS 
:%!bash 

Du hast gesagt, hatte man mit dieser eine visuelle Auswahl tun wollte, das würde genauso gut funktionieren Nachdem Sie ausgewählt haben, was Sie ausführen möchten, geben Sie : ein. '<,'> wird automatisch dem aktuellen Befehl vorangestellt. '< ist die Markierung des Beginns der aktuellen Auswahl, während '> die Markierung am Ende der aktuellen Auswahl ist. Sie können einfach nur die Befehle ausführen Sie wie oben ausgewählt haben:

 
:'<,'>!bash 

Dies wird ersetzen nur die ausgewählten Befehle mit der Ausgabe diese Befehle auszuführen.

+0

@Compiler: Vielen Dank für Ihre Antwort! –

5
  • zuerst Ihren Text auswählen,
  • kopieren Sie sie dann mit y,
  • und schließlich können Sie ausführen:

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

+0

Ihr Befehl funktioniert! Vielen Dank. Ich frage mich, ob es eine kürzere Möglichkeit gibt, dasselbe zu tun. Es fällt mir schwer, mich an den Befehl zu erinnern. –

+1

Sie können eine Zuordnung definieren: ->: vnoremap whatevercombo y: exe '!'. Join (split (@ "," \ n "), ';')

+0

@Luc: Können Sie ein Beispiel für eine Combo geben? Ich bin neu in der Herstellung von ihnen.Ich setzte erfolglos als Combo, das ist Drücken Sie TAB und A, um den letzten Teil zu bekommen. –

Verwandte Themen