Usando il comando vim split dalla riga di comando per ottenere split a 4 quarti


20

Voglio aprire quattro file VIM sulla riga di comando:

vim file1 file2 file3

Ma vorrei che ogni file fosse aperto in una divisione separata:

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

(Quanto sopra divide lo schermo in orizzontale 4 volte)

Idealmente quello che vorrei fare è dividere lo schermo in 4 quadrati come:

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

So come farlo quando vim è aperto, ma non riesco a farlo dalla riga di comando (usando vs). Qualche idea? Tutto ciò che provo finisce per apparire così (o una variante diversa):

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

Risposte:


22

È possibile utilizzare il comando 'wincmd' per spostarsi su finestre diverse come se si premesse CTRL + W.

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

Questo sistemerà i file come:

file1   file2
file3   file4

Come funziona: apre file4. Si divide in orizzontale in modo che file2 sia sopra di esso. Si divide verticalmente in modo che file1 sia a sinistra, si sposta alla finestra successiva (file1) e si divide di nuovo verticalmente.


7

Ho scritto uno script usando queste informazioni che divide automaticamente lo schermo come desidero:

vimsp.py file1 file2 / file3

Risultati in

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

Inoltre, mettere / davanti a tutti i file li rende invece divisi verticalmente invece:

vimsp.py / file1 file2 file3

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

https://gist.github.com/1376956


1

Rigorosamente dalla riga di comando:

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

... aprirà 9 file in una griglia 3x3.

Puoi anche scrivere una funzione e aggiungerla alla tua .vimrc, qualcosa come il seguente potrebbe funzionare. Spero che un esperto scripter di Vim possa pesare perché so che questo non è corretto:

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

... quindi usalo dalla riga di comando:

vim <list of 9 files> -c ':execute mysplit()'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.