如何在vim中的文件列表中打开文件?

时间:2009-01-12 22:28:01

标签: vim

我在vim中打开了一个很长的文件列表,如下所示:

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

如何通过拆分或编辑在vim的同一会话中以最简单的方式逐个打开所有这些?

10 个答案:

答案 0 :(得分:55)

我会用-p表示标签

vim -p `cat yourlistoffiles`

答案 1 :(得分:15)

您可以使用quickfix模式,如下所示

:set errorformat=%f
:cf myfilelist

此时您可以使用普通的quickfix快捷方式浏览文件,:cn代表下一个文件,:cp代表前一个文件,:cr再次访问第一个文件

修改

哦,如果你想从当前缓冲区读取列表,请在上面的说明中使用:cb而不是:cf

答案 2 :(得分:8)

我假设您在Vim中打开了文件列表,并希望在整个列表中模拟“gf”命令......

编辑.vimrc以包含此功能:

function Openall()
    edit <cfile>
    bfirst
endfunction

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

:'<,'>call Openall()

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

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

答案 3 :(得分:4)

您可以执行以下操作

cat file | xargs vim

“file”包含您的文件列表,这将在同一个vim会话中打开文件。像往常一样,当打开多个缓冲区时,您可以向前导航:bn和向后:bp。

答案 4 :(得分: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}

答案 5 :(得分:1)

就像输入

一样简单
vim /dir1/file1 /dir2/file1 /dir2/file2 ...

一旦你进入vim,就可以用“:n”切换到下一个文件,“:prev”转到上一个文件。

答案 6 :(得分:1)

尝试使用bash:

$ vim -S <(sed "s/^/badd /" <your file name>)

但我不知道为什么忽略文件的第一行......: - O

此脚本按预期工作:

rm -f myfile
for i in `seq 10000`
do
  touch $i
  echo $i >> myfile
done
vi -c "badd `head -1 myfile`" -S <(sed "s/^/badd /" myfile)

http://vimdoc.sourceforge.net/htmldoc/starting.html#-S
http://vimdoc.sourceforge.net/htmldoc/windows.html#:bad

答案 7 :(得分:1)

我经常需要打开已在SVN结帐中修改过的文件的更改列表。 这个衬垫用于打开vim选项卡中的所有修改过的文件。

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

答案 8 :(得分:0)

也许这可能会有所帮助:

http://vimdoc.sourceforge.net/htmldoc/windows.html

答案 9 :(得分:0)

我的searchInRuntime插件有一个:Sp和a:Vsp命令,这些命令在调用banged时会起作用。但是,文件必须存在。