Verwenden Sie den Befehl vim split in der Befehlszeile, um 4 Viertelsplits zu erhalten

20

Ich möchte vier vim-Dateien in der Befehlszeile öffnen:

vim file1 file2 file3

Ich möchte aber, dass jede Datei in einem eigenen Split geöffnet wird:

vim -c "split file1" -c "split file2" -c "split file3" file4

(Das obige teilt den Bildschirm 4 mal horizontal)

Im Idealfall möchte ich den Bildschirm in vier Felder aufteilen:

|-------|-------|
|       |       |
|       |       |
|-------|-------|
|       |       |
|       |       |
|-------|-------|

Ich weiß, wie man das macht, wenn vim geöffnet ist, aber ich kann das nicht über die Kommandozeile (mit vs) machen. Irgendwelche Ideen? Alles, was ich versuche, sieht am Ende so aus (oder in einer anderen Variante):

|-------|-------|
|       |       |
|-------|       |
|       |       |
|-------|       |
|       |       |
|       |       |
|-------|-------|
Sixtyfootersdude
quelle

Antworten:

22

Sie können den Befehl 'wincmd' verwenden, um zu verschiedenen Fenstern zu wechseln, als ob Sie STRG + W drücken.

vim file4 -c 'split file2' -c 'vsplit file1' -c 'wincmd j' -c 'vsplit file3'

Dies ordnet die Dateien wie folgt an:

file1   file2
file3   file4

So funktioniert es: öffnet file4. Teilt sich horizontal, sodass file2 darüber liegt. Teilt sich vertikal, sodass sich Datei1 links befindet, wechselt zum nächsten Fenster (Datei1) und teilt sich wieder vertikal.

rjh
quelle
7

Mit diesen Informationen habe ich ein Skript geschrieben, das den Bildschirm automatisch nach Belieben aufteilt:

vimsp.py file1 file2 / file3

Ergebnisse in

-----------
|f1  |f2  |
|    |    |
-----------
|file 3   |
|         |
-----------

Wenn Sie / vor alle Dateien stellen, werden alle Dateien stattdessen vertikal geteilt:

vimsp.py / file1 file2 file3

-------------
|file 1     |
-------------
|file 2     |
-------------
|file 3     |
-------------

https://gist.github.com/1376956

Fahhem
quelle
1

Streng von der Kommandozeile aus:

vim -o3 <list of 9 files> -c:{vsp,vsp,wincmd\ j,vsp,vsp,wincmd\ j,vsp,vsp} \
  -c "windo execute 'argument ' . winnr()"

... öffnet 9 Dateien in einem 3x3-Raster.

Sie können auch eine Funktion schreiben und zu Ihrer hinzufügen .vimrc. Hoffentlich könnte ein erfahrener Vim Scripter abwägen, da ich weiß, dass dies nicht korrekt ist:

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

... dann benutze es von der Kommandozeile:

vim <list of 9 files> -c ':execute mysplit()'
Brian Vandenberg
quelle