Utilisation de la commande vim split à partir de la ligne de commande pour obtenir 4 fractionnements de quart

20

Je veux ouvrir quatre fichiers vim sur la ligne de commande:

vim file1 file2 file3

Mais je voudrais que chaque fichier soit ouvert dans une division distincte:

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

(Ce qui précède divise l'écran horizontalement 4 fois)

Idéalement, ce que je voudrais faire, c'est diviser l'écran en 4 carrés comme:

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

Je sais comment faire cela une fois que vim est ouvert, mais je ne peux pas le faire à partir de la ligne de commande (en utilisant vs). Des idées? Tout ce que j'essaie finit par ressembler à ceci (ou une variation différente):

|-------|-------|
|       |       |
|-------|       |
|       |       |
|-------|       |
|       |       |
|       |       |
|-------|-------|
sixtyfootersdude
la source

Réponses:

22

Vous pouvez utiliser la commande «wincmd» pour passer à différentes fenêtres comme si vous appuyez sur CTRL + W.

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

Cela organisera les fichiers comme:

file1   file2
file3   file4

Comment ça marche: ouvre le fichier 4. Fractionne horizontalement pour que file2 soit au-dessus. Fractionne verticalement pour que le fichier1 soit à gauche, passe à la fenêtre suivante (fichier1) et se divise à nouveau verticalement.

rjh
la source
7

J'ai écrit un script en utilisant ces informations qui divise automatiquement l'écran comme je le souhaite:

vimsp.py file1 file2 / file3

Résulte en

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

De plus, mettre / devant tous les fichiers les fait tous diviser verticalement à la place:

vimsp.py / file1 file2 file3

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

https://gist.github.com/1376956

fahhem
la source
1

Strictement depuis la ligne de commande:

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

... ouvrira 9 fichiers dans une grille 3x3.

Vous pouvez également écrire une fonction et l'ajouter à votre .vimrc, quelque chose comme ce qui suit pourrait fonctionner. J'espère qu'un scripteur Vim expérimenté pourrait peser car je sais que ce n'est pas correct:

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

... puis utilisez-le depuis la ligne de commande:

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