ฉันจะทำให้ Vim open help ในแนวตั้งได้อย่างไร


18

ฉันมักจะทำงานในสถานีแบบหล่นลงทำงานสูงประมาณ 25 ตัวอักษร เนื่องจากฉันชอบแท็บที่ใช้กับ windows 1มักจะทำให้พื้นที่แนวนอนจำนวนมากสูญเปล่า - ประมาณครึ่งหนึ่งของความกว้างเทอร์มินัล

ด้านบนนั้นเป็นกลุ่มที่มีการตั้งค่าเริ่มต้นhelpheightเหลือเพียงไม่กี่บรรทัดของเนื้อหาไฟล์เมื่อฉันเปิดหน้าต่างวิธีใช้:

ป้อนคำอธิบายรูปภาพที่นี่

มีวิธี:hใช้แยกแนวตั้งหรือไม่

ฉันทำได้:

  • ลดลง helpheight
  • ใช้<C-W>Lเพื่อย้ายหน้าต่างด้วยตนเอง
  • ทำแผนที่หรือคำสั่งที่กำหนดเองซึ่งทำด้านบนสำหรับฉัน

มีวิธีที่ง่ายกว่านี้ไหม?

1ผมทำใช้หน้าต่างเมื่อฉันต้องดูหลาย ๆ ไฟล์เข้าด้วยกัน แต่โดยปกติแล้วฉันต้องการให้แต่ละไฟล์อยู่ในบริบท (จิต) ของตัวเอง


@ statox ขอโทษด้วย Dunno สิ่งที่ฉันคิดเมื่อฉันเขียนว่า
muru

Ahah ไม่จำเป็นต้องขอโทษด้วยมันเกิดขึ้นกับคนที่ดีที่สุด ;-)
statox

คำตอบ:


16

คุณสามารถใช้:vert h [your topic]เพื่อเปิดความช่วยเหลือในแนวตั้ง

คุณสามารถใช้คำสั่งต่อไปนี้:

cnoreabbrev H vert h

เพื่อให้เป็นกลุ่มแทนที่Hโดยvert hอัตโนมัติในบรรทัดคำสั่ง

นอกจากนี้คุณสามารถใช้ตัวย่อนี้:

cnoreabbrev HR vert bo h

เพื่อเปิดหน้าต่างช่วยเหลือทางด้านขวาของหน้าจอ (ดู:h :botrightรายละเอียดเพิ่มเติมที่bo)


ดังนั้นไม่มีตัวเลือกที่กำหนดค่าได้หรือไม่ สิ่งที่ต้องการsplitrightสำหรับ:help?
muru

ฉันไม่แน่ใจว่าจะเข้าใจสิ่งที่คุณหมายถึงคุณต้องการที่จะเลือกที่หน้าต่างความช่วยเหลือที่ควรจะวาง?
statox

ฉันคิดว่าคุณหมายแทน:rightbelow :botright
muru

2
ดีมันขึ้นอยู่กับการทำงานที่คุณคาดหวังว่าให้บอกว่าคุณควรจะเล่นกับ:lefta[bove], :rightb[elow], :to[pleft]และ:bo[tright]และดูที่หนึ่งที่คุณต้องการ ฉันชอบ:botrightมากกว่า:rightbelowเพราะสิ่งที่เลย์เอาต์ของฉันคือฉันจะได้รับหน้าต่างความช่วยเหลือเต็มความสูงของหน้าจอ ด้วย:rightbelowคือฉันมีการแบ่งตามแนวนอนหน้าต่างความช่วยเหลือของฉันจะเป็นของความสูงของการแยกนี้
statox

2
น่าเศร้าที่ถูกต้องเขียนcabbrevคำสั่งที่เกี่ยวข้องกับบางพิธีกรรม
Sato Katsura

7

นี้เป็นแรงบันดาลใจจากjunegunn 's vimrc :

augroup vimrc_help
  autocmd!
  autocmd BufEnter *.txt if &buftype == 'help' | wincmd L | endif
augroup END

1
ฉันอยากรู้: สิ่งนี้แตกต่างจากautocmd FileType help wincmd Lอย่างไร กรณีขอบใด ๆ
muru

ฉันคิดว่ามันถูกเรียกสองครั้งอย่างน้อยในบางครั้ง (ลองเพิ่มเสียงก้องที่นั่น) อาจเป็นสิ่งที่ต้องทำเมื่อเปิดหน้าต่างวิธีใช้มากกว่าไปที่แท็กวิธีใช้เฉพาะ ดังนั้นBufEnterจะมีประสิทธิภาพมากขึ้นเล็กน้อย ไม่พูดถึงการเพิ่มคำสั่งที่เมื่อถูกเรียกสองครั้งจะกลายเป็น "เลิกทำ" (ยกเลิกตัวเอง)
VanLaser

6

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

function! s:ShowHelp(tag) abort
  if winheight('%') < winwidth('%')
    execute 'vertical help '.a:tag
  else
    execute 'help '.a:tag
  endif
endfunction

command! -nargs=1 H call s:ShowHelp(<f-args>)

การอ้างอิง:

  • :h winheight
  • :h <f-args>

ยอดเยี่ยม สิ่งนี้จะมีประโยชน์มากสำหรับเวลาที่ฉันเปิด gvim ซึ่งครอบคลุมครึ่งแนวตั้งของหน้าจอ
muru

0

แม้ว่านี่จะไม่ใช่การแยกตามแนวตั้งต่อการค้นหา แต่ฉันพบว่าการมีแท็บของตัวเองนั้นดีมาก

augroup HelpInTabs
autocmd!
   autocmd BufEnter *.txt call HelpInNewTab()
augroup END

อ๊ะ ฉันคิดว่าฉันได้วางคำตอบทั้งหมด นี่คือรหัสที่เหลือ

" only apply to help files...
function! HelpInNewTab ()
  if &buftype == 'help'
    " convert help window to a tab
    execute "normal \<C-W>T"
  endif
endfunction

1
นั่นเป็นความคิดที่ดีที่จะแสดงว่าHelpInNewTab()ฟังก์ชันของคุณคืออะไรเพราะฉันคิดว่านี่ไม่ใช่คุณสมบัติในตัวดังนั้นเราจึงไม่สามารถทดสอบโซลูชันของคุณได้
statox

"ใช้เฉพาะกับไฟล์วิธีใช้ ... ฟังก์ชั่น! HelpInNewTab () ถ้า & buftype == 'help'" แปลงหน้าต่างช่วยเหลือเป็นแท็บเพื่อเรียกใช้งาน "normal \ <CW> T" endif endfunction
Mark Nichols
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.