打开多个文件时,如何在Vim中分割窗口

3
我想在我的vimrc中加入一些内容,以便如果我打开2个文件,它们会自动在不同的分割窗口中打开。我不想使用-o启动,因为有时我会一次打开很多文件,拥有15个以上的分割窗口并不好用。所以我希望有一些逻辑来检查打开了多少个文件,如果是2个,则将每个文件放入其自己的分割窗口中。
谢谢
PS:我最有可能经常使用这种方法来查看C++项目的.cc和.hh文件。

有没有一种方法可以在之后同时关闭这15个【未编辑】的窗口? - Orwellophile
1
确定。退出所有将关闭所有打开的窗口。:qa! - Sam Brinck
4个回答

10

最简单的方法是添加

if argc() == 2
  silent all
endif

添加到您的 .vimrc 文件中。


这个很好用,除了一个问题,我得到了一个 按 ENTER 键或键入命令继续 的提示,有没有办法避免这个提示?谢谢。 - Sam Brinck
有没有可能将此更改为垂直分割的方式?即 -O 而不是 -o? - Leihca
1
@Leihca 将“all”更改为“vertical all”。手册中已经详细说明了。 - Josh Lee

4

我可以通过向我的vim命令添加-c 'split | bn'来在仅使用命令行的情况下完成同样的事情。我可以在同一个命令中打开尽可能多的文件;-c告诉vim运行一个命令,然后在单引号中,'split | bn'告诉vim分割窗口,然后切换到下一个缓冲区。因此,如果我例如键入:

gvim foo1.cpp foo2.cpp foo3.cpp foo4.cpp -c 'split | bn'

然后gvim以分割窗口的形式打开第一个和第二个文件foo1.cpp和foo2.cpp。我喜欢这种方式,因为我不需要修改我的.vimrc文件(所以我可以在任何机器上使用它),而且它对于命令行来说足够简洁。

注意:我只在gvim中测试过这个方法,没有在终端中的vim中测试。


这很有趣,但同样的问题必须被问到:它能被制作成垂直分割吗? - Orwellophile

1

也许你可以尝试一下

vim -o2 file1 file2 file3...

我知道这对你来说不是完美的解决方案(在这种情况下,vim每次都会打开两个窗口)。

但是你可以编写(并使用)像这样的小脚本

if [ $# -ge 2 ];
    vim -o2 $*
else
    vim $*
fi

几乎完美 ;)


0
可以像这样在shell脚本中设置一些东西:
#!/bin/bash
if [[ "$#" -eq "2" ]]
then
  /usr/bin/vim -o $1 $2 
else
  /usr/bin/vim $*
fi

如果你感觉有点高级,那么你可以做一些更复杂的事情,通过循环遍历参数并检查是否有任何选项并忽略它们。

1
我曾考虑过那样做,但我更愿意将其放在我的vimrc中。如果我没有其他想法,我会接受那个建议。谢谢。 - Sam Brinck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接