ฉันจะทำให้ windows ของฉันกลับมาเป็นรูปแบบกริดได้อย่างไร


12

ถ้าฉันมี windows จัดเป็นสี่ quadrants จากลำดับของคำสั่งต่อไปนี้:

  • :tabnew
  • :vsplit
  • :split
  • <C-W>l
  • :split

จากนั้นการป้อนคำสั่งเช่น<C-W>Jจะทำให้สิ่งเหล่านี้ไม่เป็นรูปสี่เหลี่ยมอีกต่อไป ในกรณีนี้มันจะบังคับให้หนึ่งหน้าต่างลอยที่ด้านล่าง

ฉันจะทำในสิ่งที่ตรงกันข้ามได้หรือไม่ - นั่นคือบังคับให้หน้าต่างกลับสู่รูปแบบสี่เหลี่ยม?

ฉันอ่านแล้ว:help window-movingแต่ไม่เห็นสิ่งใดมีประโยชน์


1
ฉันค่อนข้างชัดเจนเกี่ยวกับสิ่งที่คุณพยายามจะบรรลุเมื่อคุณกด <CW> J ซึ่งย้าย "หน้าต่างปัจจุบันไปที่ด้านล่างสุดโดยใช้ความกว้างเต็มหน้าจอ" ซึ่งหมายความว่าหน้าต่างจะ ไม่ได้อยู่ในรูปแบบกริดอีกต่อไปตามคำนิยาม คุณพยายามทำอะไรกับ windows ของคุณ?
รวย

3
@ อุดมไปด้วยฉันคิดว่า OP เป็นเพียงตัวอย่างสถานการณ์หลังจากที่เขาอาจต้องการที่จะรีเซ็ตหน้าต่างเพื่อสร้างตาราง
Gonçalo Ribeiro

@ GonçaloRibeiroถูกต้อง
wchargin


แม้ว่าจะไม่ใช่คำตอบหากคุณพบว่าตัวเองกำลังตามหาตัวอย่างโค้ดเพื่อสร้างโซลูชันของคุณเองฉันขอแนะนำให้ตรวจสอบโปรเจค Microviche ที่ยอดเยี่ยม
Alexandria ใหม่

คำตอบ:


4

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

  1. ปิดการแยกลอยที่ด้านบน
  2. กลับไปที่การแยกโดยใช้เวลาครึ่งหน้าจอ
  3. แยกอีกครั้งด้วย :split <file>

สิ่งนี้จะนำคุณกลับสู่กริด วิธีที่จะแยกกลอุบายโดยไม่กระทบกับเลย์เอาต์ของหน้าต่างคือการใช้ [count] Ctrl - W x ซึ่งแลกเปลี่ยนหน้าต่างปัจจุบันกับหน้าต่าง [count]


ฉันรู้ว่าฉันสามารถทำได้ แต่มีข้อเสียอยู่สองสามข้อ (1) หากหน้าต่างเป็นเพียงมุมมองหนึ่งของบัฟเฟอร์ที่กำหนดและบัฟเฟอร์นั้นสกปรกคุณจะต้อง:wqหรือ:q!ไม่ต้องการสิ่งใด (2) สิ่งนี้จะรีเซ็ตการตั้งค่าเฉพาะหน้าต่างเช่นตำแหน่งเคอร์เซอร์ (3) สิ่งนี้จะทำลายความแตกต่างที่กำลังดำเนินอยู่ โดยพื้นฐานแล้ว windows เป็นพลเมืองชั้นหนึ่ง ทำลายพวกเขาและสร้างใหม่ก็ไม่เพียงพอ
wchargin

@WChargin บางอย่างหายไปถ้าคุณตั้งค่ากลุ่มเพื่ออนุญาตให้มีบัฟเฟอร์ที่ซ่อนอยู่ แต่ใช่ ...
derobert

2
แทนที่จะปิดหน้าต่างและแบ่งบัฟเฟอร์ไปยังตำแหน่งที่ต้องการแยกหน้าต่างใหม่ที่คุณต้องการไปแลกเปลี่ยนกับหน้าต่างที่คุณต้องการย้ายจากนั้นปิดหน้าต่างใหม่ (ย้าย)
tommcdo

4

คุณสามารถบันทึกเค้าโครงที่คุณชื่นชอบโดยใช้winsaveviewคำสั่ง ที่นี่ฉันกำลังทำแผนที่เพื่อ\svความสะดวก:

nnoremap <Leader>sv :let g:myLayout = winsaveview()<CR>

อย่าลืมทำเช่นนั้นก่อนที่คุณจะเลย์เอาต์ของคุณ! ;-)

ตอนนี้ถ้าคุณตั้งใจทำลายเลย์เอาต์ของคุณโดยไม่ได้ตั้งใจคุณสามารถคืนค่าได้:

nnoremap <Leader>rv :call winrestview(g:myLayout)<CR>

4

ปุ่มเริ่มต้นเพื่อจัดเรียงหน้าต่างใหม่จะทำงานเฉพาะภายในกลุ่มแยกท้องถิ่น:

CTRL-W x   Exchange current window with next (in group)
CTRL-W r   Rotate windows down/right (in group)

หรือพวกเขาแบ่งหน้าต่างออกเป็นกลุ่มด้านบน:

CTRL-W  H | J | K | L   Move window to left/top/bottom/right-most edge

สิ่งเหล่านี้ไม่เพียงพอเมื่อคุณต้องการย้ายบัฟเฟอร์ไปยังกลุ่มการแบ่งอื่นกลุ่มใดกลุ่มหนึ่ง

แต่ในโอกาสดังกล่าวWindowSwap ปลั๊กอินช่วยเหลือสามารถ มันช่วยให้คุณสามารถสลับบัฟเฟอร์ของหน้าต่างใดก็ได้สองหน้าต่าง

<leader> yw   "Yank window": Yank the current window

<leader> pw   "Paste window": Swap the current window with the yanked window
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.