Membuka bantuan Vim di jendela split vertikal

114

Apakah ada cara untuk mendapatkan bantuan Vim agar terbuka dalam panel pemisah vertikal daripada panel horizontal?

Yewge
sumber

Jawaban:

127

:vertical( vert) bekerja:

:vert help

Anda juga dapat mengontrol apakah jendela terbelah di kiri / atas atau kanan / bawah dengan topleft( to) dan botright( bo) . Misalnya, untuk membuka bantuan di jendela kanan pemisahan vertikal:

:vert bo help
m42
sumber
2
bagaimana saya bisa memetakannya sehingga ketika saya menjalankan: help ____ selalu terbuka seperti itu?
Tallboy
13
@Tallboy Coba cnoremap help vert help. Ini membuat pemetaan mode perintah sehingga saat Anda mengetik helpdalam mode perintah, Anda akan melihatnya meluas ke vert help.
Keith Pinson
3
@Kazark: cnoremap help vert helpmembuat setiap huruf helpmuncul dengan sendirinya, sehingga kata helptersebut tidak muncul di baris perintah. Apakah ada cara untuk memperbaikinya? Mungkin sesuatu selain cnoremap?
iconoclast
7
Untuk meningkatkan lagi: Anda dapat menggunakan cabbrev untuk mendefinisikan kembali h sebagai vert h: :cabbrev h vert h. Kemudian setiap kali Anda mengetik :h, secara otomatis akan meluas menjadi :vert h.
Aaron Shen
@AaronShen: solusi terbaik (digabungkan dengan jawaban ini)!
gauteh
38

Sebagai alternatif dari jawaban Haroogan dan Sean, Anda dapat menggunakan FileTypeacara tersebut untuk perintah otomatis seperti ini:

autocmd FileType help wincmd L

Meskipun ini akan mengubah posisi jendela bantuan apa pun serta memindahkan jendela setelah menempatkannya secara manual jika file yang Anda lihat berubah. Tetapi saya percaya bahwa ini adalah masalah dengan solusi apa pun.

EdJoJob
sumber
2
Sederhana, dan (jika saya mengerti dengan benar) efek sampingnya dapat diabaikan. Mengapa ini bukan jawaban yang diterima !? Dan mengapa jawaban yang sama sekali tidak relevan ( :vsplit) memiliki banyak suara positif !?
iconoclast
1
Saya memuji ini dan jawaban Haroogan untuk kesederhanaannya. Saya tidak terlalu akrab dengan kejadian autocmd dan saya bertanya-tanya apa alasannya, help,*bukan sekadar help. Juga, saya perhatikan bahwa perintah ini berfungsi ketika saya menambahkannya ke saya _vimrcdan memulai contoh baru GVim tetapi tidak ketika saya menjalankan perintah dalam sesi GVim saya saat ini (saya harus secara manual :set ft=helpmemicu autocmd).
Anthony Geoghegan
Terima kasih atas komentarnya: *sebenarnya tidak diperlukan. Sejauh yang saya mengerti untuk sesi saat ini vs sesi baru, di sesi baru Anda perlu melakukan sumber ulang vimrcagar perubahan apa pun diterapkan, selain itu jika file sudah terbuka di buffer dan :helphanya membawa Anda ke tempat lain. bagian dari file, ini tidak autocmdakan berpengaruh
EdJoJob
Apakah akan ada cara yang lebih singkat untuk juga mengatasi: h dengan autocmd yang sama? Saat ini saya menulisnya di baris tambahan:autocmd FileType help wincmd L autocmd FileType h wincmd L
danbruegge
1
Autocmd ini mengatasi masalah dengan melihat jenis file dari file bantuan. Semua file bantuan adalah jenis helpfile, sehingga pada pengaturan jenis helpfile, autocmd ini akan berjalan. Anda dapat mengujinya dengan melakukan ini :sef helpdi file mana pun saat jendela Anda terbelah, sehingga autocmd kedua @ danbruegge tidak diperlukan
EdJoJob
20

Tidak perlu memetakan ulang perintah apa pun atau memperkenalkan alias aneh seperti :Help. Inilah solusinya. Buat di ~/.vim/after/ftplugin/help.vimmana Anda dapat mengganti pengaturan Vim khusus untuk helpdan menambahkan baris berikut di sana:

autocmd BufWinEnter <buffer> wincmd L

Pengait ini akan memastikan bahwa helpfile apa pun dibuka dalam pemisahan vertikal. Lebih jauh, itu tidak memiliki efek samping yang dijelaskan dalam jawaban Sean. Secara pribadi, ini adalah solusi sempurna untuk saya sejauh ini.

Semoga ini membantu. Semoga berhasil.

Alexander Shukaev
sumber
18

Perintah ini harus melakukannya:

:vert help
Berzemus
sumber
10
Saya tidak mengerti ini. Semua yang :vsplitdilakukan adalah membagi jendela saat ini secara vertikal. Bagaimana ini membuka bantuan di panel vertikal?
doubleDown
7

Taruh ini di .vimrc:

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

Sekarang Anda dapat membuka bantuan vertikal dengan :Helpperintah (perhatikan bahwa huruf pertama adalah huruf besar)

Kronial
sumber
6

Untuk membuat file bantuan selalu terbuka dalam pemisahan vertikal di sebelah kanan, letakkan ini di vimrc Anda:

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

Ini akan memiliki efek samping karena semua yang memiliki "doc" di jalurnya terbuka dalam pemisahan vertikal, tetapi itu mungkin tidak menjadi masalah bagi Anda. Ini bukan untukku. Jika Anda lebih suka membuka dalam perpecahan vertikal kiri, atau apa pun dalam hal ini, Anda dapat mengubahnya wincmd L. Anda dapat mempelajarinya lebih lanjut dengan:he wincmd

Sean Mackesey
sumber
1
Periksa jenis file sebelum dibagi,:au BufEnter */doc/* if &filetype=='help' | wincmd L | endif
rox
Ini luar biasa! autocmd FileType help wincmd Lhanya bekerja satu kali untuk saya, ini bekerja dengan sangat baik!
voldikss
6

Letakkan berikut ini di ~/.vim/ftplugin/help.vim

wincmd L

Tidak bisa lebih sederhana dari ini :)

Shrikant Sharat
sumber
Ini tidak berfungsi lagi. Lihat masalah ini di Github: github.com/vim/vim/issues/1806
Ilker Mutlu
3

Ini memindahkan jendela bantuan satu kali . Jadi Anda dapat dengan bebas memindahkannya setelah jendela dibuat.

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

Fungsinya, ILikeHelpToTheRight()hanya akan berjalan wincmd Lsekali per jendela (untuk itulah w:awalannya).

Ini kemudian dipanggil setiap kali file "bantuan" dibuka. Ini tidak memiliki efek samping dari solusi EdJoJob.

docwhat
sumber
2

Buka jendela bantuan secara dinamis di bagian atas jika terdapat lebih dari satu jendela di tab saat ini, atau di sebelah kanan, jika hanya ada satu jendela:

if winnr('$') > 2
    wincmd K
else
    wincmd L
endif

Anda harus menempatkan ini ftplugin/help.vimatau menggunakannya dengan autocmd, misalnya:

augroup my_filetype_settings
autocmd!
autocmd FileType help if winnr('$') > 2 | wincmd K | else | wincmd L | endif
augroup END
rafi
sumber
1

Ini dimaksudkan untuk menambah jawaban @ m42, tetapi saya belum memiliki 50 perwakilan di sini di SO layak untuk ditambahkan ke komentar.

Tambahkan nnoremap <C-H> :vert bo helpke .vimrc

Sekarang menekan Ctrl-H dalam mode Normal akan beralih ke mode Command, diawali untuk membuka bantuan di jendela yang terbelah secara vertikal ke kanan. Sertakan spasi setelah help·<- di akhir baris konfigurasi untuk hasil terbaik.

Pemetaan ini memungkinkan Anda untuk tetap menggunakan :help\ :huntuk membuka jendela yang terbagi secara horizontal atau menelusuri riwayat perintah bantuan Anda sebelumnya tanpa perluasan otomatis yang diminta.

remyActual
sumber