エディター内でGit追跡ファイルを開く


7

私はGitによって追跡されたすべての変更されたファイルを開くVimコマンドを作成しようとしています。

次のコマンドは、変更されたファイルが1つしかない場合に機能します(現在の作業ディレクトリがgitリポジトリでない場合は失敗します)。

たとえば、外部コマンドの結果をループして複数の行を生成する方法に関するポインタはありますか?

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

回答:


9

args代わりに次のコマンドを使用できます。

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

最初のファイルを開く必要があります。:lsこれを実行した後に実行すると、他のファイルも一覧表示されます。または、romainlが指摘しているように、次のものはまったく必要ありませんexecute

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

argaddコマンドはあまりにも役に立つかもしれません。から: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.

4
:next別の可能性です。また、:executeここでは不要なので、コマンドをに短縮できますcommand! G args `git diff --name-only` 。AArgh、バッククォートは難しいです。
romainl 2016年

チャームのように機能します。ありがとう、mur and romainl!
samuke
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.