Nehmen wir an, ich bin in der Shell ( bash
) und möchte eine Ausgabe sehen, :scriptnames
die geben würde, aber ich möchte vim nicht starten oder ich möchte das in eine andere Datei übertragen.
Also führe ich aus
vim +scriptnames
Was zeigt mir alle Skripte, aber wie kann ich das in die Standardausgabe der Shell einfügen?
less
sind Pager da. Pipe es einfach in weniger sovim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!' | less
. Das Layout ist vielleicht zuerst durcheinander (es befindet sich in meinem Terminal), aber nach dem Drücken von <CL> ist alles schön und gut.vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
, es gibt nur einen "Schnellblitz", der Befehl wird mit Code 0 beendet, keine Ausgabe. Vermisse ich etwasWir können den
:redir
Befehl auch verwenden , um die Ergebnisse von vim-Befehlen in eine Datei umzuleitenZum Beispiel,
Dadurch wird die Ausgabe von
scriptnames
in die Datei "vimout" umgeleitet.quelle
Ich schätze die Antwort von Christian Brabandt, aber ich denke, eine bessere Antwort wäre, den Befehl quit mit einem anderen Befehl -c wie folgt zu trennen:
Wenn Sie diese Methode verwenden, können Sie eine Reihe verschiedener Befehle aneinanderreihen und dann das letzte 'q!' aus vim herauskommen.
quelle
In Situationen, in denen vim vollständig geladen sein muss, als ob Sie es manuell gestartet hätten, funktioniert dies wie folgt:
Zum Beispiel wollte ich die Ausgabe
:map
von der Shell in eine Datei umleiten , aber ich wollte das Mapping erfassen, das vim-airline erst erstellt, nachdem es seine Tabline angezeigt hat (Zeile oben zeigt alle geöffneten Buffernamen). Weil es zu funktionieren scheint Dies asynchrones einfaches Ausführen einer-c
Umleitung zu einer Datei gab ihm keine Zeit, um die Zuordnungen vorzunehmen. Es könnte ein besserer Weg geben, aber das funktioniert für mich, zumal ich bereitsupdatetime
eingestellt100
(0,1 Sekunden), die bis in dem , wie lange wirktCursorHold
Ereignis ausgelöst wird . Standardmäßig legt vim den Wert auf 4 Sekunden fest.quelle