2015-07-20 178 views
0

有沒有辦法將外部命令鏈接到vim命令行中的內置命令?我想要做這樣的事情:在VIM中使用外部命令鏈內置命令

vsp !git diff --name-only 

我已經試過

vsp system('git', 'diff', '--name-only') 

vsp `!git diff --name-only\` 

(你知道的,以防萬一其他bash的東西似乎只是工作中vim)無濟於事。有誰知道一種方法來做到這一點。我當然只會修改一個文件。提前致謝!

我也試過:execute "vsplit " . !git diff --name-only,vsplit exec "!git diff --name-only":execute "vsplit " . exec "!git diff --name-only"。沒有運氣

+0

您是否希望將'git diff --name-only'的輸出放入新的垂直分割中? – Zach

+0

不,我想在拆分窗口中的新緩衝區中打開已更改的文件。 'git diff --name-only'的輸出將是一個相對路徑。 – paulski

回答

3

- 編輯 -

所以我完全脫落...

你只需要把git diff --name-only反引號之間:

:vsplit `git diff --name-only` 

注意:vsplit,像:edit和朋友只需要一個參數,因此如果您有兩個或多個文件,上述命令將失敗。

你應該使用:next代替:

:vnew|next `git diff --name-only` 

- EndEdit中 -

你可以做這樣的事情:

:vnew|0r!git diff --name-only 
  • 垂直創建一個新的緩衝窗口,
  • 插入輸出git diff --name-only位於該空緩衝區的頂部。
+0

感謝您的回答。但是,這會在命令的輸出中創建一個新的緩衝區,在本例中爲/ path/to/file。我想打開該文件,就像我輸入:vsplit/path/to/file – paulski

+0

您的問題不是很清楚。看我的編輯。 – romainl

+0

因此,帶或不帶'!'的反引號對我來說都不起作用,它會在運行時路徑中找不到文件'\'git diff --name-only \''''。但是:下一個命令是我錯過的。謝謝 – paulski