我想在命令行上打开四个 vim 文件:
vim file1 file2 file3
但我希望每个文件都在单独的分割中打开:
vim -c "split file1" -c "split file2" -c "split file3" file4
(以上将屏幕水平分割 4 次)
理想情况下,我想做的是将屏幕分成 4 个方块,如下所示:
|-------|-------|
| | |
| | |
|-------|-------|
| | |
| | |
|-------|-------|
我知道如何在打开 vim 后执行此操作,但我无法从命令行执行此操作(使用vs
)。有什么想法吗?我尝试的所有方法最终都看起来像这样(或不同的变体):
|-------|-------|
| | |
|-------| |
| | |
|-------| |
| | |
| | |
|-------|-------|
答案1
您可以使用“wincmd”命令移动到不同的窗口,就像按下 CTRL+W 一样。
vim file4 -c 'split file2' -c 'vsplit file1' -c 'wincmd j' -c 'vsplit file3'
这将把文件排列如下:
file1 file2
file3 file4
工作原理:打开文件 4。水平分割,使文件 2 位于其上方。垂直分割,使文件 1 位于左侧,移动到下一个窗口(文件 1),然后再次垂直分割。
答案2
我使用此信息编写了一个脚本,可以根据我的意愿自动分屏:
vimsp.py file1 file2 / file3
结果是
-----------
|f1 |f2 |
| | |
-----------
|file 3 |
| |
-----------
另外,将 / 放在所有文件前面会使它们全部垂直分割:
vimsp.py / file1 file2 file3
-------------
|file 1 |
-------------
|file 2 |
-------------
|file 3 |
-------------
答案3
严格从命令行:
vim -o3 <list of 9 files> -c:{vsp,vsp,wincmd\ j,vsp,vsp,wincmd\ j,vsp,vsp} \
-c "windo execute 'argument ' . winnr()"
... 将在 3x3 网格中打开 9 个文件。
您还可以编写一个函数并将其添加到您的 中.vimrc
,类似下面的代码可能会起作用。希望有经验的 vim 脚本编写者可以指正,因为我知道这是不正确的:
function! mysplit(...)
execute sp #1
execute sp #1
execute vsp
execute vsp
execute wincmd j
execute vsp
execute vsp
execute wincmd j
execute vsp
execute vsp
% I'm not at all experienced with writing vim scripts, so
% the syntax on the following line is almost certainly not
% correct; this is conceptual only.
execute windo execute 'argument ' . winnr()
endfunction
...然后从命令行使用它:
vim <list of 9 files> -c ':execute mysplit()'