2015-07-20 63 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