การใช้คำสั่ง vim split จากบรรทัดรับคำสั่งเพื่อรับการแบ่ง 4 ควอเตอร์


20

ฉันต้องการเปิดไฟล์ vim สี่ไฟล์บนบรรทัดคำสั่ง:

vim file1 file2 file3

แต่ฉันต้องการให้เปิดแต่ละไฟล์แยกกัน:

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

(ด้านบนแยกหน้าจอในแนวนอน 4 ครั้ง)

นึกคิดสิ่งที่ฉันต้องการจะทำคือแบ่งหน้าจอออกเป็น 4 ช่องดังนี้:

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

ฉันรู้วิธีการทำเช่นนี้เมื่อเป็นกลุ่มเปิด แต่ฉันไม่สามารถทำได้จากบรรทัดคำสั่ง (โดยใช้vs) ความคิดใด ๆ ทุกสิ่งที่ฉันลองทำดูเหมือนนี้ (หรือรูปแบบที่แตกต่าง):

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

คำตอบ:


22

คุณสามารถใช้คำสั่ง 'wincmd' เพื่อย้ายไปยังหน้าต่างอื่นราวกับว่าคุณกำลังกด CTRL + W

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

วิธีนี้จะจัดเรียงไฟล์เป็น:

file1   file2
file3   file4

มันทำงานอย่างไร: เปิด file4 แยกในแนวนอนเพื่อให้ file2 อยู่เหนือ แยกในแนวตั้งดังนั้น file1 อยู่ทางซ้ายเลื่อนไปที่หน้าต่างถัดไป (file1) และแยกอีกแนวตั้ง


7

ฉันเขียนสคริปต์โดยใช้ข้อมูลนี้ซึ่งแยกหน้าจอโดยอัตโนมัติตามที่ฉันต้องการ:

vimsp.py file1 file2 / file3

ผลลัพธ์ใน

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

นอกจากนี้การวาง / ด้านหน้าไฟล์ทั้งหมดทำให้แยกเป็นแนวตั้งแทน:

vimsp.py / file1 file2 file3

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

https://gist.github.com/1376956


1

อย่างเคร่งครัดจากบรรทัดคำสั่ง:

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

... จะเปิด 9 ไฟล์ในตาราง 3x3

คุณสามารถเขียนฟังก์ชั่นและเพิ่มไปยัง.vimrcสิ่งที่อาจจะทำงานต่อไปนี้ หวังว่านักกรีดร้องที่มีประสบการณ์จะสามารถชั่งน้ำหนักได้เพราะฉันรู้ว่านี่ไม่ถูกต้อง:

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

... จากนั้นใช้จากบรรทัดคำสั่ง:

vim <list of 9 files> -c ':execute mysplit()'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.