มีวิธีรับ Vim เพื่อเปิดในบานหน้าต่างแยกแนวตั้งแทนที่จะเป็นแนวนอนหรือไม่?
มีวิธีรับ Vim เพื่อเปิดในบานหน้าต่างแยกแนวตั้งแทนที่จะเป็นแนวนอนหรือไม่?
คำตอบ:
:vertical( vert)ทำงาน:
:vert help
นอกจากนี้คุณยังสามารถควบคุมได้ว่าแยกหน้าต่างด้านซ้าย / ด้านบนหรือด้านขวา / ล่างtopleft( to)และbotright(bo ) ตัวอย่างเช่นหากต้องการเปิดวิธีใช้ในหน้าต่างด้านขวาของการแบ่งแนวตั้ง:
:vert bo help
cnoremap help vert help. นี้จะสร้างการทำแผนที่โหมดคำสั่งเพื่อที่ว่าเมื่อคุณพิมพ์ในโหมดคำสั่งคุณจะเห็นมันขยายตัวออกไปhelp vert help
cnoremap help vert helpทำให้ตัวอักษรแต่ละตัวhelpปรากฏขึ้นเองดังนั้นคำhelpจึงไม่ปรากฏในบรรทัดคำสั่ง มีวิธีใดที่จะแก้ไขได้หรือไม่? อาจจะเป็นอย่างอื่นที่ไม่ใช่cnoremap?
hเป็น:vert h :cabbrev h vert hแล้วเวลาที่คุณพิมพ์ทุกก็จะขยายตัวออกไป:h :vert h
เพื่อเป็นทางเลือกสำหรับคำตอบของ Haroogan และ Sean คุณสามารถใช้FileTypeเหตุการณ์สำหรับคำสั่งอัตโนมัติเช่นนี้:
autocmd FileType help wincmd L
แม้ว่าสิ่งนี้จะเปลี่ยนตำแหน่งของหน้าต่างวิธีใช้รวมถึงการย้ายหน้าต่างหลังจากวางด้วยตนเองหากไฟล์ที่คุณกำลังดูมีการเปลี่ยนแปลง แต่ฉันเชื่อว่านี่เป็นปัญหาเกี่ยวกับการแก้ปัญหาใด ๆ
:vsplit) ถึงมีการโหวตเพิ่มขึ้นมากมาย!?
help,* helpนอกจากนี้ฉันสังเกตเห็นว่าคำสั่งนี้ใช้งานได้เมื่อฉันเพิ่มลงใน_vimrcและเริ่มอินสแตนซ์ใหม่ของ GVim แต่ไม่ใช่เมื่อฉันเรียกใช้คำสั่งในเซสชัน GVim ปัจจุบัน (ฉันต้อง:set ft=helpทริกเกอร์ autocmd ด้วยตนเอง)
*ไม่จำเป็นจริงๆ เท่าที่ฉันเข้าใจสำหรับเซสชันปัจจุบันเทียบกับเซสชันใหม่ในเซสชันใหม่คุณจะต้องจัดหาแหล่งข้อมูลใหม่vimrcเพื่อให้การเปลี่ยนแปลงมีผลนอกจากนี้หากไฟล์นั้นเปิดอยู่แล้วในบัฟเฟอร์และ:helpจะนำคุณไปยังที่อื่น ส่วนหนึ่งของไฟล์นี้autocmdจะไม่มีผลใด ๆ
autocmd FileType help wincmd L autocmd FileType h wincmd L
helpไฟล์ดังนั้นในการตั้งค่าประเภทhelpไฟล์ autocmd นี้จะทำงาน คุณสามารถทดสอบสิ่งนี้ได้โดยทำ:sef helpในไฟล์ใดก็ได้ในขณะที่มีการแยกในหน้าต่างของคุณดังนั้นจึงไม่จำเป็นต้องใช้ autocmd ที่สองของ @danbruegge
ไม่จำเป็นต้องทำการแมปคำสั่งใด ๆ :Helpหรือแนะนำนามแฝงแปลกเช่น นี่คือวิธีแก้ปัญหา สร้าง~/.vim/after/ftplugin/help.vimตำแหน่งที่คุณสามารถแทนที่การตั้งค่า Vim โดยเฉพาะhelpและเพิ่มบรรทัดต่อไปนี้ที่นั่น:
autocmd BufWinEnter <buffer> wincmd L
ขอเกี่ยวนี้จะช่วยให้แน่ใจว่าhelpไฟล์ใด ๆ ที่เปิดในแนวตั้งแยก นอกจากนี้ยังไม่มีผลข้างเคียงที่อธิบายไว้ในคำตอบของฌอน โดยส่วนตัวแล้วนี่เป็นทางออกที่สมบูรณ์แบบสำหรับฉันจนถึงตอนนี้
หวังว่านี่จะช่วยได้ ขอให้โชคดี
คำสั่งนี้ควรทำ:
:vert help
:vsplitจะแบ่งหน้าต่างปัจจุบันในแนวตั้ง การเปิดนี้ช่วยในบานหน้าต่างแนวตั้งได้อย่างไร
ใส่สิ่งนี้ไว้ใน.vimrc:
command -nargs=* -complete=help Help vertical belowright help <args>
ตอนนี้คุณสามารถเปิดความช่วยเหลือแนวตั้งด้วย:Helpคำสั่ง (สังเกตว่าอักษรตัวแรกเป็นตัวพิมพ์ใหญ่)
หากต้องการให้ไฟล์ความช่วยเหลือเปิดในแนวตั้งทางด้านขวาเสมอให้ใส่สิ่งนี้ไว้ใน vimrc ของคุณ:
augroup helpfiles
au!
au BufRead,BufEnter */doc/* wincmd L
augroup END
สิ่งนี้จะมีผลข้างเคียงจากการมี "doc" ในเส้นทางที่เปิดในแนวตั้ง แต่นั่นอาจไม่ใช่ปัญหาสำหรับคุณ มันไม่ใช่สำหรับฉัน หากคุณต้องการเปิดในแนวตั้งด้านซ้ายหรืออย่างอื่นสำหรับเรื่องนั้นคุณสามารถเปลี่ยนwincmd Lได้ คุณสามารถเรียนรู้เพิ่มเติมได้ที่:he wincmd
:au BufEnter */doc/* if &filetype=='help' | wincmd L | endif
autocmd FileType help wincmd Lใช้งานได้เพียงครั้งเดียวสำหรับฉันมันได้ผลดีมาก!
ใส่สิ่งต่อไปนี้ในไฟล์ ~/.vim/ftplugin/help.vim
wincmd L
ง่ายไปกว่านี้ไม่ได้แล้ว :)
นี้ย้ายหน้าต่างช่วยเหลือครั้งเดียว คุณจึงสามารถเคลื่อนย้ายไปมาได้อย่างอิสระหลังจากสร้างหน้าต่างแล้ว
if has('autocmd')
function! ILikeHelpToTheRight()
if !exists('w:help_is_moved') || w:help_is_moved != "right"
wincmd L
let w:help_is_moved = "right"
endif
endfunction
augroup HelpPages
autocmd FileType help nested call ILikeHelpToTheRight()
augroup END
endif
ฟังก์ชันนี้ILikeHelpToTheRight()จะทำงานเพียงwincmd Lครั้งเดียวต่อหน้าต่าง (มันคือสิ่งที่w:คำนำหน้าสำหรับ)
จากนั้นจะเรียกเมื่อใดก็ตามที่มีการเปิดไฟล์ "help" สิ่งนี้ไม่มีผลข้างเคียงของโซลูชันของ EdJoJob
เปิดหน้าต่างวิธีใช้แบบไดนามิกที่ด้านบนหากมีมากกว่าหนึ่งหน้าต่างในแท็บปัจจุบันหรือทางด้านขวาหากมีเพียงหน้าต่างเดียว:
if winnr('$') > 2
wincmd K
else
wincmd L
endif
คุณจะต้องวางสิ่งนี้ไว้ในftplugin/help.vimหรือใช้กับautocmdเช่น:
augroup my_filetype_settings
autocmd!
autocmd FileType help if winnr('$') > 2 | wincmd K | else | wincmd L | endif
augroup END
นี่หมายถึงการเพิ่มในคำตอบของ @ m42 แต่ฉันยังไม่มีตัวแทน 50 คนที่นี่จึงเหมาะสมที่จะเพิ่มในความคิดเห็น
เพิ่มnnoremap <C-H> :vert bo helpเป็น. vimrc
ตอนนี้การกด Ctrl-H ในโหมดปกติจะเข้าสู่โหมดคำสั่งซึ่งขึ้นต้นเพื่อเปิดวิธีใช้ในหน้าต่างแยกแนวตั้งทางด้านขวา รวมช่องว่างต่อท้ายhelp· <- ท้ายบรรทัดกำหนดค่าเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
การแมปนี้ช่วยให้คุณยังคงใช้:help\ :hเพื่อเปิดหน้าต่างที่แบ่งตามแนวนอนหรือวนดูประวัติคำสั่งวิธีใช้ก่อนหน้านี้โดยไม่ต้องแจ้งให้ขยายอัตโนมัติ