Abrir arquivos rastreados pelo git dentro do editor

7

Estou tentando criar um comando Vim que abre todos os arquivos modificados rastreados pelo Git.

O comando a seguir funciona se houver apenas um arquivo modificado (e falhará se o diretório de trabalho atual não for um repositório git).

Alguma dica sobre como, por exemplo, repetir os resultados do comando externo produzindo várias linhas?

command Git execute ":e `git diff --name-only`"
samuke
fonte

Respostas:

9

Você poderia usar o argscomando:

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

O primeiro arquivo deve ser aberto e, se você executar :lsapós a execução, deverá ver outros arquivos listados também. Ou, como observa Romano, você não precisa execute:

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

O argaddcomando também pode ser útil. De :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
fonte
4
:nexté outra possibilidade. Além disso, :executenão é necessário, aqui, para que o comando possa ser abreviado para command! G args `git diff --name-only` . Agora, os backticks são difíceis.
Romainl # 20/16
Funciona como um encanto, obrigado mur e romainl!
samuke