使用命令行中的 vim split 命令获得 4 个季度分割

使用命令行中的 vim split 命令获得 4 个季度分割

我想在命令行上打开四个 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     |
-------------

https://gist.github.com/1376956

答案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()'

相关内容