Ich habe viele Threads über das Ausführen von Shell-Befehlen aus vim gelesen, viele Dokumentationen über vim-Befehle, .vimrc und all das, aber ich kann die "Ex" -Sprache oder die vim-Zuordnungen einfach nicht gut genug verstehen, um das zu tun, was ich tue will, also hier stelle ich diese Frage. Hier geht:
Ich habe einen offenen Puffer in vim (mit dem neuesten stabilen MacVim auf Snow Leopard, aber nicht im GUI-Modus), dessen Inhalt ich später in ein Befehlszeilentool einspeisen werde, das ihn verarbeitet und mir eine Ausgabe gibt. Was ich will, ist in der Lage zu sein:
- Drücken Sie eine Taste (oder eine Tastenkombination oder geben Sie einen vi-Befehl aus).
- Führen Sie mein Befehlszeilenprogramm mit dem Inhalt meines aktuellen Puffers (der möglicherweise nicht in der Datei gespeichert ist) aus
- Erfassen Sie die Ausgabe und zeigen Sie sie in vim an, vorzugsweise in einem neuen geteilten Fenster (wie z. B.: Help does)
Also zusammenfassend: Ich kann rennen
$ cat ~/myinput.txt | myScript > output.txt
Aber ich möchte so etwas in vim machen und die Ausgabe wenn möglich in ein neues geteiltes Fenster stellen.
UPDATE:
Natürlich habe ich kurz nach dem Posten weitere Informationen zu diesem Thema gefunden. Ich weiß jetzt, dass ich das in vim tun kann:
:%! myScript
Und es wird die Ausgabe von myScript (mit dem dazugehörigen Pufferinhalt) in meinen aktuellen Puffer einfügen und alles ersetzen, was ich gerade darin habe.
Gibt es also eine Möglichkeit, diese Inhalte in einen neuen, geteilten Fensterpuffer zu stellen? Vielen Dank!
Die Funktion von @Heptite wurde allgemeiner gestaltet:
`` `
quelle
Dieser Befehl macht die Hälfte von dem, was Sie wollen.
map <Leader>r :!%:p<cr>
Der aktuelle Puffer muss eine ausführbare Datei mit einer Shebang-Zeile sein, damit dies funktioniert.
quelle
Es gibt ein Plugin, das das ganz gut macht
quelle