คุณจะสลับหน้าต่างปัจจุบันของคุณจากการแบ่งตามแนวนอนเป็นการแยกในแนวตั้งและในทางกลับกันใน Vim ได้อย่างไร?
เมื่อก่อนผมทำโดยบังเอิญ แต่ไม่สามารถหากุญแจได้อีก
คุณจะสลับหน้าต่างปัจจุบันของคุณจากการแบ่งตามแนวนอนเป็นการแยกในแนวตั้งและในทางกลับกันใน Vim ได้อย่างไร?
เมื่อก่อนผมทำโดยบังเอิญ แต่ไม่สามารถหากุญแจได้อีก
คำตอบ:
รายชื่อผู้รับจดหมายเป็นกลุ่มพูดว่า (จัดรูปแบบใหม่เพื่อให้อ่านง่ายขึ้น):
หากต้องการเปลี่ยนหน้าต่างที่แยกในแนวตั้งสองบานเป็นแบ่งเป็นขอบฟ้า
Ctrl- w t Ctrl-w K
แนวนอนถึงแนวตั้ง:
Ctrl- w t Ctrl-w H
คำอธิบาย:
Ctrl- w t ทำให้หน้าต่างแรก (บน) เป็นปัจจุบัน
Ctrl- w K เลื่อนหน้าต่างปัจจุบันไปที่เต็มความกว้างที่ด้านบนสุด
Ctrl- w H เลื่อนหน้าต่างปัจจุบันไปที่ความสูงเต็มด้านซ้ายสุด
โปรดทราบว่า t เป็นตัวพิมพ์เล็กและ K และ H เป็นตัวพิมพ์ใหญ่
ยิ่งไปกว่านั้นด้วยหน้าต่างเพียงสองบานดูเหมือนว่าคุณสามารถดรอปCtrl- w tส่วนหนึ่งได้เพราะถ้าคุณอยู่ในหนึ่งในสองหน้าต่างแล้วประเด็นของการทำให้เป็นปัจจุบันคืออะไร
:nmap <leader>th <C-w>t<C-w>H
และ:nmap <leader>tk <C-w>t<C-w>K
Ctrl- wตามด้วยH, J, KหรือL(เมืองหลวง) จะย้ายหน้าต่างปัจจุบันไปไกลleft
, bottom
, top
หรือright
ตามลำดับเช่นการนำเคอร์เซอร์ปกติ
ตัวพิมพ์เล็กเทียบเท่าขยับโฟกัสแทนการย้ายหน้าต่าง
Ctrl
- w
(ฉันไม่ทราบ^
ว่าCtrl
ในตัวอย่างของคุณ)
^
Ctrl
เมื่อคุณเปิดหน้าต่างสองบานขึ้นไปในแนวนอนหรือแนวตั้งและต้องการสลับหน้าต่างทั้งหมดเป็นแนวอื่นคุณสามารถใช้สิ่งต่อไปนี้:
(เปลี่ยนเป็นแนวนอน)
:windo wincmd K
(เปลี่ยนเป็นแนวตั้ง)
:windo wincmd H
มันได้อย่างมีประสิทธิภาพไปแต่ละหน้าต่างเป็นรายบุคคลและการใช้หรือ^WK^WH
คำสั่ง ex ต่อไปนี้จะแยกอีกจำนวนหน้าต่าง:
:vertical ball
:ball
หากมีบัฟเฟอร์ที่ซ่อนอยู่การออกคำสั่งเหล่านี้จะทำให้บัฟเฟอร์ที่ซ่อนอยู่มองเห็นได้เช่นกัน
:vert[ical] ball
ในเอกสารดังนั้น:vert ball
ก็โอเคและสั้นลง
:ball
ลด 3 หน้าต่างแนวตั้งเป็น 2 หน้าต่างแนวนอนในขณะที่:vert ball
แมป 3 หน้าต่างแนวนอนเป็น 3 หน้าต่างแนวตั้งอย่างถูกต้อง
ใน VIM ให้ดูที่สิ่งต่อไปนี้เพื่อดูทางเลือกอื่นสำหรับสิ่งที่คุณอาจทำ:
: ช่วยเปิดหน้าต่าง
ตัวอย่างเช่น
Ctrl- - W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...
แยกตามแนวนอนและแนวตั้ง
Ctrl+ Wสำหรับคำสั่ง window ตามด้วยShift+ HหรือShift+L
แยกแนวตั้งกับแนวนอน
Ctrl+ Wสำหรับคำสั่ง window ตามด้วยShift+ KหรือShift+J
โซลูชันทั้งสองจะใช้เมื่อมีหน้าต่างสองบานเท่านั้น
เพิ่มทั้งสองบรรทัดเหล่านี้ไปที่.vimrc
:
cabbrev help vert help
cabbrev h vert h
:vert[ical] {cmd}
เรียกใช้cmd
งานหน้าต่างการทำงานในแนวตั้งเสมอ
แรงบันดาลใจจากคำตอบของสตีฟฉันเขียนฟังก์ชันง่าย ๆ ที่สลับระหว่างการแยกแนวตั้งและแนวนอนสำหรับหน้าต่างทั้งหมดในแท็บปัจจุบัน คุณสามารถผูกกับการทำแผนที่เหมือนในบรรทัดสุดท้ายด้านล่าง
function! ToggleWindowHorizontalVerticalSplit()
if !exists('t:splitType')
let t:splitType = 'vertical'
endif
if t:splitType == 'vertical' " is vertical switch to horizontal
windo wincmd K
let t:splitType = 'horizontal'
else " is horizontal switch to vertical
windo wincmd H
let t:splitType = 'vertical'
endif
endfunction
nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>
if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif
และif winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endif
หวังว่าเหมาะสม
ทำตามเคล็ดลับของ Mark Rushakoff ด้านบนนี่คือแผนที่ของฉัน:
" vertical to horizontal ( | -> -- )
noremap <c-w>- <c-w>t<c-w>K
" horizontal to vertical ( -- -> | )
noremap <c-w>\| <c-w>t<c-w>H
noremap <c-w>\ <c-w>t<c-w>H
noremap <c-w>/ <c-w>t<c-w>H
แก้ไข:ใช้Ctrl- w rเพื่อสลับสองหน้าต่างหากไม่อยู่ในลำดับที่ดี