Sử dụng lệnh chia vim từ dòng lệnh để có được 4 phần tư chia


20

Tôi muốn mở bốn tệp vim trên dòng lệnh:

vim file1 file2 file3

Nhưng tôi muốn mỗi tệp được mở trong một tách riêng:

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

(Ở trên chia đôi màn hình theo chiều ngang 4 lần)

Lý tưởng nhất tôi muốn làm là chia màn hình thành 4 hình vuông như:

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

Tôi biết làm thế nào để làm điều này một khi vim được mở, nhưng tôi không thể làm điều này từ dòng lệnh (bằng cách sử dụng vs). Có ý kiến ​​gì không? Tất cả mọi thứ tôi thử kết thúc giống như thế này (hoặc một biến thể khác nhau):

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

Câu trả lời:


22

Bạn có thể sử dụng lệnh 'wincmd' để di chuyển đến các cửa sổ khác nhau như thể bạn đang nhấn CTRL + W.

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

Điều này sẽ sắp xếp các tệp như:

file1   file2
file3   file4

Cách thức hoạt động: mở file4. Tách theo chiều ngang để file2 ở trên nó. Tách theo chiều dọc để file1 ở bên trái, di chuyển sang cửa sổ tiếp theo (file1) và chia theo chiều dọc một lần nữa.


7

Tôi đã viết một tập lệnh sử dụng thông tin này tự động chia đôi màn hình theo ý muốn:

vimsp.py file1 file2 / file3

Kết quả trong

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

Ngoài ra, đặt / trước tất cả các tệp làm cho tất cả chúng được phân chia theo chiều dọc thay vào đó:

vimsp.py / file1 file2 file3

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

https://gist.github.com/1376956


1

Nghiêm khắc từ dòng lệnh:

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

... sẽ mở 9 tệp trong lưới 3x3.

Bạn cũng có thể viết một hàm và thêm nó vào .vimrc, một cái gì đó như sau có thể hoạt động. Hy vọng rằng một người viết kịch bản vim có kinh nghiệm có thể cân nhắc vì tôi biết điều này không đúng:

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

... Sau đó sử dụng nó từ dòng lệnh:

vim <list of 9 files> -c ':execute mysplit()'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.