Menggunakan perintah split vim dari baris perintah untuk mendapatkan 4 quarter splits

20

Saya ingin membuka empat file vim pada baris perintah:

vim file1 file2 file3

Tapi saya ingin setiap file dibuka secara terpisah:

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

(Di atas membagi layar secara horizontal 4 kali)

Idealnya apa yang ingin saya lakukan adalah membagi layar menjadi 4 kotak seperti:

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

Saya tahu bagaimana melakukan ini setelah vim terbuka, tetapi saya tidak dapat melakukan ini dari baris perintah (menggunakan vs). Ada ide? Semua yang saya coba akhirnya tampak seperti ini (atau variasi yang berbeda):

|-------|-------|
|       |       |
|-------|       |
|       |       |
|-------|       |
|       |       |
|       |       |
|-------|-------|
sixtyfootersdude
sumber

Jawaban:

22

Anda dapat menggunakan perintah 'wincmd' untuk pindah ke jendela yang berbeda seolah-olah Anda menekan CTRL + W.

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

Ini akan mengatur file sebagai:

file1   file2
file3   file4

Cara kerjanya: membuka file4. Membagi secara horizontal sehingga file2 berada di atasnya. Membagi secara vertikal sehingga file1 ke kiri, bergerak ke jendela berikutnya (file1) dan membelah lagi secara vertikal.

rjh
sumber
7

Saya menulis skrip menggunakan informasi ini yang secara otomatis membagi layar seperti yang saya inginkan:

vimsp.py file1 file2 / file3

Hasil dalam

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

Selain itu, menempatkan / di depan semua file membuat semuanya terpecah secara vertikal:

vimsp.py / file1 file2 file3

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

https://gist.github.com/1376956

fahhem
sumber
1

Ketat dari baris perintah:

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

... akan membuka 9 file dalam kisi 3x3.

Anda juga dapat menulis fungsi dan menambahkannya ke Anda .vimrc, sesuatu seperti yang berikut ini mungkin berfungsi. Semoga skrip vim yang berpengalaman dapat mempertimbangkan karena saya tahu ini tidak benar:

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

... lalu gunakan dari baris perintah:

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