重定向和vim

时间:2008-10-23 17:50:36

标签: linux vim

我想知道是否有办法查看任何命令的输出, 直接在vim内部,而不是首先将其重定向到文件中 然后打开那个文件。

E.x。我需要类似的东西 $ gvim< diff -r dir1/ dir2/

这会产生不明确的重定向错误消息

我只想直接看到dir1和dir2之间的差异 GVIM。

任何人都能提供一个不错的黑客吗?

10 个答案:

答案 0 :(得分:41)

diff file1 file2 | vim -R -

-R使其成为只读,因此您不会意外地修改输入(这可能是您希望的行为,也可能不是您想要的行为)。单个短划线告诉vim通过标准输入读取其输入。也适用于其他命令。

答案 1 :(得分:10)

此外,当已经在Vim中时:

:r! diff file1 file2

答案 2 :(得分:6)

vim -d file1 file2

答案 3 :(得分:6)

虽然我也建议vimdiffvim -d来查看差异,但我只需要分享这个(更一般的)方法来在管道中使用vim:vipe(来自Ubuntu中的moreutils包。)

例如:

  

find -name'* .png'| vipe | xargs rm

允许您首先编辑(在vim中)找到的.png文件列表,然后再将其传递给xargs rm

答案 4 :(得分:4)

jst使用gvimdiff代替 或者vimdiff
将命令的输出直接粘贴到vim中,例如ls,试试
:%R LS

答案 5 :(得分:4)

顺便说一下,有DirDiff plugin

答案 6 :(得分:2)

您可以使用

执行此操作
diff -r dir1/ dir2/ | gvim -

vim(或gvim)的'-'选项告诉vim打开STDIN

答案 7 :(得分:1)

我经常使用vimdiff -g <file1> <file2>

答案 8 :(得分:0)

最简单方便的方法之一是这样做:

vimdiff -R <file1> <file2>

再次&#39; -R&#39; flag是以只读模式打开它以避免任何意外更改。

答案 9 :(得分:0)

您要找的是process substitution

vim <(diff -r dir1/ dir2/)

但Luc提到的DirDiff插件对比较目录更有用。