Öffnen Sie Git-Tracking-Dateien im Editor

7

Ich versuche einen Vim-Befehl zu erstellen, der alle von Git verfolgten geänderten Dateien öffnet.

Der folgende Befehl funktioniert, wenn nur eine geänderte Datei vorhanden ist (und schlägt fehl, wenn das aktuelle Arbeitsverzeichnis kein Git-Repository ist).

Gibt es Hinweise, wie z. B. die Ergebnisse eines externen Befehls, der mehrere Zeilen erzeugt, wiederholt werden können?

command Git execute ":e `git diff --name-only`"
Samuke
quelle

Antworten:

9

Sie können argsstattdessen den folgenden Befehl verwenden:

command G execute ":args `git diff --name-only`"

Die erste Datei sollte geöffnet werden. Wenn Sie diese :lsnach der Ausführung ausführen, sollten auch andere Dateien aufgelistet sein. Oder, wie Romainl bemerkt, brauchen Sie das überhaupt nicht execute:

command G :args `git diff --name-only`

Der argaddBefehl könnte auch nützlich sein. Von :h args:

:ar[gs] [++opt] [+cmd] {arglist}                        :args_f
                        Define {arglist} as the new argument list and edit
                        the first one.  This fails when changes have been made
                        and Vim does not want to abandon the current buffer.
                        Also see ++opt and +cmd.
                        {Vi: no ++opt}

:ar[gs]! [++opt] [+cmd] {arglist}                       :args_f!
                        Define {arglist} as the new argument list and edit
                        the first one.  Discard any changes to the current
                        buffer.
                        Also see ++opt and +cmd.
                        {Vi: no ++opt}


:[count]arga[dd] {name} ..                      :arga :argadd E479
:[count]arga[dd]
                        Add the {name}s to the argument list.  When {name} is
                        omitted add the current buffer name to the argument
                        list.
muru
quelle
4
:nextist eine andere Möglichkeit. Auch :executewird hier nicht benötigt, so dass der Befehl auf verkürzt werden könnte command! G args `git diff --name-only` . AArgh, Backticks sind schwer.
Romainl
Funktioniert wie ein Zauber, danke Mur und Romainl!
Samuke