Usando o comando split do vim na linha de comando para obter divisões de 4 quartos

20

Eu quero abrir quatro arquivos vim na linha de comando:

vim file1 file2 file3

Mas gostaria que cada arquivo fosse aberto em uma divisão separada:

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

(O acima divide a tela horizontalmente 4 vezes)

Idealmente, o que eu gostaria de fazer é dividir a tela em 4 quadrados como:

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

Eu sei como fazer isso uma vez que o vim está aberto, mas não consigo fazer isso a partir da linha de comando (usando vs ). Alguma ideia? Tudo que eu tento acaba ficando assim (ou uma variação diferente):

|-------|-------|
|       |       |
|-------|       |
|       |       |
|-------|       |
|       |       |
|       |       |
|-------|-------|
    
por sixtyfootersdude 25.02.2010 / 17:55

3 respostas

21

Você pode usar o comando 'wincmd' para mover para janelas diferentes como se estivesse pressionando CTRL + W.

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

Isso organizará os arquivos como:

file1   file2
file3   file4

Como funciona: abre o arquivo4. Divide horizontalmente para que o arquivo2 esteja acima dele. Divide verticalmente, portanto file1 está à esquerda, move para a próxima janela (file1) e divide verticalmente novamente.

    
por 25.02.2010 / 18:10
6

Eu escrevi um script usando essa informação que divide automaticamente a tela como eu gostaria:

vimsp.py file1 file2 / file3

Resultados em

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

Além disso, colocar / na frente de todos os arquivos faz com que todos sejam divididos verticalmente:

vimsp.py / file1 file2 file3

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

link

    
por 18.11.2011 / 17:37
1

Estritamente da linha de comando:

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

... abrirá 9 arquivos em uma grade de 3x3.

Você também pode escrever uma função e adicioná-la ao seu .vimrc , algo como o seguinte pode funcionar. Espero que um roteirista experiente possa pesar, porque sei que isso não está correto:

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

... então use-o na linha de comando:

vim <list of 9 files> -c ':execute mysplit()'
    
por 13.04.2012 / 22:09

Tags