2009-01-12 106 views
23

我在vim打开的文件的一个稍长的列表,看起来像这样:如何在vim中的文件列表中打开文件?

/dir1/file1 
/dir2/file2 
/dir2/file3 
..... 

我怎样才能把它们全部打开一个接一个最简单的方法可能在vim的同一个会话要么拆分或编辑?

+0

你说“我让他们打开”,然后问“我怎么打开它们?” 如果是前者,Paul Tomblin的回答是给你的 - :n和:prev – 2009-01-13 00:14:53

+0

或者它是你在Vim中打开的实际列表吗? – seanhodges 2009-01-13 08:36:03

+0

只是好奇,但为什么这个社区维基? – Hasturkun 2009-01-13 10:16:15

回答

44

我会用-p制表符

vim -p `cat yourlistoffiles` 
4

你可以做以下

cat file | xargs vim 

其中,“文件”包含文件列表,这将在同一Vim会话打开文件。像往常一样,打开多个缓冲区时,可以使用:bn和backward:bp来前进。

+1

..无论文件的数量大于xargs的分割阈值,在这种情况下,您将获得多个vim会话。 – 2009-01-12 22:38:06

+0

使用xargs你可以处理数以万计的文件,你是否建议像命令行一样在命令行中输入这些文件,这似乎不太实际。 – 2009-01-12 23:31:03

0

这是因为打字

vim /dir1/file1 /dir2/file1 /dir2/file2 ... 

一旦你那样简单在vim中,你可以用“:n”切换到下一个文件,“:prev”切换到前一个文件即

8

我会假设你有Vim内部打开文件列表,并希望在整个列表模拟“GF”命令

编辑.vimrc,包括这样的功能:

function Openall() 
    edit <cfile> 
    bfirst 
endfunction 

然后,您可以使用可视模式(1G,Shift-V,G)并键入“:call Openall()”来突出显示整个文件(或要打开的路径集)。之后,命令行将显示:

:'<,'>call Openall() 

这将在所有突出显示的行中运行新的Openall()函数。

按Enter键,所有文件将在后台缓冲区中打开。然后您可以使用常用的缓冲区命令访问它们。 :ls会将它们显示为一个列表。

0

我的searchInRuntime插件有一个:Sp和a:Vsp命令,它会在被调用时执行这个技巧。但是,这些文件必须存在。

11

您可以使用QuickFix模式,如下

:set errorformat=%f 
:cf myfilelist 

在这一点上,你可以使用正常的quickfix快捷键要经过你的文件,:cn下一个文件,:cp的前一和:cr去到第一次。

编辑:

哦,如果你想读从当前缓冲区的列表,上面

0

我经常需要打开已在我的SVN结账被修改过的文件的改变列表。 这一个班轮工程打开vim选项卡中的所有修改后的文件。

svn st | grep ^M | awk "{print($2)}" | xargs vim -p 
2

我想您在VIM选择和列表。某个扩展名的所有文件。从您的主目录或特定来源。

find . -name "*.sh" | vim - 

然后在vim中,你可以搜索和查看这个潜在的巨大列表。 (另一主题)

你找到了你的文件,现在你想打开它在拆分?

CTRL-W F      *CTRL-W_F* 
    Split current window in two. Edit file name under cursor and 
    jump to the line number following the file name. See |gF| for 
    details on how the line number is obtained. 
    {not available when the |+file_in_path| feature was disabled 
    at compile time} 


CTRL-W gf      *CTRL-W_gf* 
    Open a new tab page and edit the file name under the cursor. 
    Like "tab split" and "gf", but the new tab page isn't created 
    if the file does not exist. 
    {not available when the |+file_in_path| feature was disabled 
    at compile time} 
相关问题