การเปิด Vim ช่วยในหน้าต่างแยกแนวตั้ง


114

มีวิธีรับ Vim เพื่อเปิดในบานหน้าต่างแยกแนวตั้งแทนที่จะเป็นแนวนอนหรือไม่?

คำตอบ:


127

:vertical( vert)ทำงาน:

:vert help

นอกจากนี้คุณยังสามารถควบคุมได้ว่าแยกหน้าต่างด้านซ้าย / ด้านบนหรือด้านขวา / ล่างtopleft( to)และbotright(bo ) ตัวอย่างเช่นหากต้องการเปิดวิธีใช้ในหน้าต่างด้านขวาของการแบ่งแนวตั้ง:

:vert bo help

2
ฉันจะแมปมันได้อย่างไรเมื่อฉันวิ่ง: ช่วยด้วย ____ มันจะเปิดแบบนั้นเสมอ?
Tallboy

13
@ ทัลบอยลองดูcnoremap help vert help. นี้จะสร้างการทำแผนที่โหมดคำสั่งเพื่อที่ว่าเมื่อคุณพิมพ์ในโหมดคำสั่งคุณจะเห็นมันขยายตัวออกไปhelp vert help
Keith Pinson

3
@Kazark: cnoremap help vert helpทำให้ตัวอักษรแต่ละตัวhelpปรากฏขึ้นเองดังนั้นคำhelpจึงไม่ปรากฏในบรรทัดคำสั่ง มีวิธีใดที่จะแก้ไขได้หรือไม่? อาจจะเป็นอย่างอื่นที่ไม่ใช่cnoremap?
iconoclast

7
เพื่อปรับปรุงเพิ่มเติมได้ที่: คุณสามารถใช้ cabbrev ที่จะสร้างนิยามใหม่ hเป็น:vert h :cabbrev h vert hแล้วเวลาที่คุณพิมพ์ทุกก็จะขยายตัวออกไป:h :vert h
Aaron Shen

@AaronShen: ทางออกที่ดีที่สุด (ในคำสั่งผสมพร้อมคำตอบนี้)!
gauteh

38

เพื่อเป็นทางเลือกสำหรับคำตอบของ Haroogan และ Sean คุณสามารถใช้FileTypeเหตุการณ์สำหรับคำสั่งอัตโนมัติเช่นนี้:

autocmd FileType help wincmd L

แม้ว่าสิ่งนี้จะเปลี่ยนตำแหน่งของหน้าต่างวิธีใช้รวมถึงการย้ายหน้าต่างหลังจากวางด้วยตนเองหากไฟล์ที่คุณกำลังดูมีการเปลี่ยนแปลง แต่ฉันเชื่อว่านี่เป็นปัญหาเกี่ยวกับการแก้ปัญหาใด ๆ


2
ง่ายและ (ถ้าฉันเข้าใจถูกต้อง) ผลข้างเคียงมีเล็กน้อย เหตุใดจึงไม่เป็นคำตอบที่ยอมรับ!? แล้วทำไมคำตอบที่ไม่เกี่ยวข้อง ( :vsplit) ถึงมีการโหวตเพิ่มขึ้นมากมาย!?
iconoclast

1
ฉันโหวตให้ทั้งคำตอบนี้และคำตอบของ Haroogan สำหรับความเรียบง่ายของพวกเขา ฉันไม่คุ้นเคยกับเหตุการณ์ autocmd และฉันถูกสงสัยว่าเหตุผลคือแทนที่จะhelp,* helpนอกจากนี้ฉันสังเกตเห็นว่าคำสั่งนี้ใช้งานได้เมื่อฉันเพิ่มลงใน_vimrcและเริ่มอินสแตนซ์ใหม่ของ GVim แต่ไม่ใช่เมื่อฉันเรียกใช้คำสั่งในเซสชัน GVim ปัจจุบัน (ฉันต้อง:set ft=helpทริกเกอร์ autocmd ด้วยตนเอง)
Anthony Geoghegan

ขอบคุณสำหรับความคิดเห็น: *ไม่จำเป็นจริงๆ เท่าที่ฉันเข้าใจสำหรับเซสชันปัจจุบันเทียบกับเซสชันใหม่ในเซสชันใหม่คุณจะต้องจัดหาแหล่งข้อมูลใหม่vimrcเพื่อให้การเปลี่ยนแปลงมีผลนอกจากนี้หากไฟล์นั้นเปิดอยู่แล้วในบัฟเฟอร์และ:helpจะนำคุณไปยังที่อื่น ส่วนหนึ่งของไฟล์นี้autocmdจะไม่มีผลใด ๆ
EdJoJob

จะมีวิธีที่สั้นกว่าในการ address: h ด้วย autocmd เดียวกันหรือไม่ ตอนนี้ฉันเขียนมันในบรรทัดพิเศษ:autocmd FileType help wincmd L autocmd FileType h wincmd L
danbruegge

1
autocmd นี้แก้ไขปัญหาโดยดูประเภทไฟล์ของไฟล์วิธีใช้ ไฟล์วิธีใช้ทั้งหมดเป็นประเภทhelpไฟล์ดังนั้นในการตั้งค่าประเภทhelpไฟล์ autocmd นี้จะทำงาน คุณสามารถทดสอบสิ่งนี้ได้โดยทำ:sef helpในไฟล์ใดก็ได้ในขณะที่มีการแยกในหน้าต่างของคุณดังนั้นจึงไม่จำเป็นต้องใช้ autocmd ที่สองของ @danbruegge
EdJoJob

20

ไม่จำเป็นต้องทำการแมปคำสั่งใด ๆ :Helpหรือแนะนำนามแฝงแปลกเช่น นี่คือวิธีแก้ปัญหา สร้าง~/.vim/after/ftplugin/help.vimตำแหน่งที่คุณสามารถแทนที่การตั้งค่า Vim โดยเฉพาะhelpและเพิ่มบรรทัดต่อไปนี้ที่นั่น:

autocmd BufWinEnter <buffer> wincmd L

ขอเกี่ยวนี้จะช่วยให้แน่ใจว่าhelpไฟล์ใด ๆ ที่เปิดในแนวตั้งแยก นอกจากนี้ยังไม่มีผลข้างเคียงที่อธิบายไว้ในคำตอบของฌอน โดยส่วนตัวแล้วนี่เป็นทางออกที่สมบูรณ์แบบสำหรับฉันจนถึงตอนนี้

หวังว่านี่จะช่วยได้ ขอให้โชคดี


18

คำสั่งนี้ควรทำ:

:vert help

10
ฉันไม่เข้าใจ ทั้งหมด:vsplitจะแบ่งหน้าต่างปัจจุบันในแนวตั้ง การเปิดนี้ช่วยในบานหน้าต่างแนวตั้งได้อย่างไร
doubleDown

7

ใส่สิ่งนี้ไว้ใน.vimrc:

command -nargs=* -complete=help Help vertical belowright help <args>

ตอนนี้คุณสามารถเปิดความช่วยเหลือแนวตั้งด้วย:Helpคำสั่ง (สังเกตว่าอักษรตัวแรกเป็นตัวพิมพ์ใหญ่)


6

หากต้องการให้ไฟล์ความช่วยเหลือเปิดในแนวตั้งทางด้านขวาเสมอให้ใส่สิ่งนี้ไว้ใน vimrc ของคุณ:

augroup helpfiles
  au!
  au BufRead,BufEnter */doc/* wincmd L
augroup END

สิ่งนี้จะมีผลข้างเคียงจากการมี "doc" ในเส้นทางที่เปิดในแนวตั้ง แต่นั่นอาจไม่ใช่ปัญหาสำหรับคุณ มันไม่ใช่สำหรับฉัน หากคุณต้องการเปิดในแนวตั้งด้านซ้ายหรืออย่างอื่นสำหรับเรื่องนั้นคุณสามารถเปลี่ยนwincmd Lได้ คุณสามารถเรียนรู้เพิ่มเติมได้ที่:he wincmd


1
ตรวจสอบประเภทไฟล์ก่อนแยก:au BufEnter */doc/* if &filetype=='help' | wincmd L | endif
rox

นี่มันเจ๋งมาก! autocmd FileType help wincmd Lใช้งานได้เพียงครั้งเดียวสำหรับฉันมันได้ผลดีมาก!
voldikss


3

นี้ย้ายหน้าต่างช่วยเหลือครั้งเดียว คุณจึงสามารถเคลื่อนย้ายไปมาได้อย่างอิสระหลังจากสร้างหน้าต่างแล้ว

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


2

เปิดหน้าต่างวิธีใช้แบบไดนามิกที่ด้านบนหากมีมากกว่าหนึ่งหน้าต่างในแท็บปัจจุบันหรือทางด้านขวาหากมีเพียงหน้าต่างเดียว:

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

1

นี่หมายถึงการเพิ่มในคำตอบของ @ m42 แต่ฉันยังไม่มีตัวแทน 50 คนที่นี่จึงเหมาะสมที่จะเพิ่มในความคิดเห็น

เพิ่มnnoremap <C-H> :vert bo helpเป็น. vimrc

ตอนนี้การกด Ctrl-H ในโหมดปกติจะเข้าสู่โหมดคำสั่งซึ่งขึ้นต้นเพื่อเปิดวิธีใช้ในหน้าต่างแยกแนวตั้งทางด้านขวา รวมช่องว่างต่อท้ายhelp· <- ท้ายบรรทัดกำหนดค่าเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด

การแมปนี้ช่วยให้คุณยังคงใช้:help\ :hเพื่อเปิดหน้าต่างที่แบ่งตามแนวนอนหรือวนดูประวัติคำสั่งวิธีใช้ก่อนหน้านี้โดยไม่ต้องแจ้งให้ขยายอัตโนมัติ

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