Bagaimana saya bisa membuat Vim membuka bantuan dalam pemisahan vertikal?


18

Saya biasanya bekerja di terminal drop-down, menjalankan sekitar 25 karakter. Karena saya lebih suka tab daripada windows 1 , biasanya banyak ruang horisontal terbuang - sekitar setengah dari lebar terminal.

Selain itu, Vim, dengan pengaturan default helpheight, hanya menyisakan beberapa baris konten file ketika saya membuka jendela bantuan:

masukkan deskripsi gambar di sini

Apakah ada cara untuk :hmemanfaatkan split vertikal?

Saya bisa:

  • mengurangi helpheight
  • gunakan <C-W>Luntuk memindahkan jendela secara manual
  • buat peta atau perintah kustom yang melakukan hal di atas untuk saya.

Apakah ada cara yang lebih sederhana?

1 Saya lakukan menggunakan jendela ketika saya perlu melihat beberapa file bersama-sama. Tapi biasanya saya lebih suka setiap file dalam konteks (mental) sendiri.


@statox maaf soal itu. Entah apa yang saya pikirkan ketika saya menulis itu.
muru

Ahah tidak perlu minta maaf itu juga terjadi pada yang terbaik ;-)
statox

Jawaban:


16

Anda dapat menggunakan :vert h [your topic]untuk membuka bantuan secara vertikal.

Anda dapat menggunakan perintah berikut:

cnoreabbrev H vert h

Untuk membuat vim mengganti Hdengan vert hotomatis di baris perintah.

Anda juga dapat menggunakan singkatan ini:

cnoreabbrev HR vert bo h

Untuk membuka jendela bantuan di sisi kanan layar. (lihat :h :botrightuntuk detail lebih lanjut tentang bo)


Jadi, tidak ada opsi yang bisa dikonfigurasi? Sesuatu seperti splitrightuntuk :help?
muru

Saya tidak yakin mengerti apa yang Anda maksud, Anda lebih suka untuk dapat memilih di mana jendela bantuan harus ditempatkan?
statox

Saya pikir Anda maksudkan :rightbelowbukan :botright.
muru

2
Nah itu tergantung pada perilaku Anda mengharapkan, membiarkan mengatakan bahwa Anda harus bermain dengan :lefta[bove], :rightb[elow], :to[pleft]dan :bo[tright]dan melihat mana yang Anda inginkan. Saya lebih suka :botrightlebih :rightbelowkarena apa yang pernah tata letak saya, saya akan mendapatkan bantuan jendela tinggi penuh layar. Dengan :rightbelowini saya sudah memiliki split horizontal jendela bantuan saya akan setinggi split ini.
statox

2
Sayangnya, menulis cabbrevperintah yang benar melibatkan beberapa ritual .
Sato Katsura

7

Ini terinspirasi dari vimrc junegunn :

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

1
Saya ingin tahu: bagaimana perbedaannya autocmd FileType help wincmd L? Ada tepi kasus?
muru

Saya pikir itu dipicu dua kali, setidaknya kadang-kadang (coba tambahkan gema di sana). Mungkin ada hubungannya dengan pembukaan jendela bantuan, daripada pergi ke tag bantuan khusus. Jadi, BufEnterakan sedikit lebih efisien. Belum lagi menambahkan perintah yang, ketika dipicu dua kali, akan menjadi "dibatalkan" (batalkan sendiri).
VanLaser

6

Anda dapat menggunakan perintah khusus yang melakukan seleksi vertikal atau tidak untuk Anda. Ini dapat didasarkan pada lebar dan tinggi jendela saat ini:

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>)

Referensi :

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

Luar biasa. Ini akan sangat berguna untuk saat saya membuka gvim yang meliputi setengah vertikal layar saya.
muru

0

Meskipun ini bukan pemisahan vertikal per-se, saya merasa memiliki bantuan di tabnya sendiri sangat bagus.

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

Aduh. Saya pikir saya telah menempelkan seluruh jawaban. Inilah sisa kodenya.

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

1
Itu akan menjadi ide yang bagus untuk juga menunjukkan apa HelpInNewTab()fungsi Anda karena saya pikir ini bukan fitur bawaan sehingga kami tidak dapat benar-benar menguji solusi Anda.
statox

"hanya berlaku untuk file bantuan ... berfungsi! HelpInNewTab () jika & buftype == 'help'" mengonversi jendela bantuan ke tab, jalankan "endfungsi endifungsi normal \ <CW> T"
Mark Nichols
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.