Як я можу зробити відкриту допомогу Vim у вертикальному розрізі?


18

Я, як правило, працюю у випадаючому терміналі, працює близько 25 символів. Оскільки я віддаю перевагу вкладкам під Windows 1 , зазвичай витрачається багато горизонтального простору - близько половини ширини клеми.

Крім того, Vim із налаштуваннями за замовчуванням helpheightзалишає приблизно пару рядків вмісту файлу, коли я відкриваю довідкове вікно:

введіть тут опис зображення

Чи є спосіб :hвикористовувати вертикальний розкол?

Я можу:

  • зменшення helpheight
  • використовувати <C-W>Lдля ручного переміщення вікна
  • складіть карту або власну команду, яка робить для мене вищезазначене.

Чи є простіший спосіб?

1 я зробити використання вікна , коли потрібно дивитися на кілька файлів разом. Але зазвичай я вважаю за краще, щоб кожен файл був у своєму (ментальному) контексті.


@statox вибачте з цього приводу. Не знаю, про що я думав, коли писав це.
muru

Аха, не потрібно шкодувати, це трапляється і з найкращими ;-)
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.
муру

2
Ну , це залежить від поведінки ви очікуєте, нехай говорить , що ви повинні грати з :lefta[bove], :rightb[elow], :to[pleft]і :bo[tright]побачити , який ви віддаєте перевагу. Я вважаю :botrightза краще, :rightbelowтому що, будь-коли моя компонування, я отримаю довідкові вікна на повну висоту екрана. З :rightbelow- у мене вже є горизонтальний розкол, моє довідкове вікно буде мати висоту цього розколу.
statox

2
На жаль, написання правильних cabbrevкоманд передбачає певний ритуал .
Сато Кацура

7

Це надихнуто від vimrc junegunn :

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

1
Мені цікаво: чим це відрізняється autocmd FileType help wincmd L? Будь-які крайові випадки?
муру

Я думаю, що це спрацьовує двічі, принаймні іноді (спробуйте додати там відлуння). Це може бути пов'язане з відкриттям довідкового вікна, ніж перехід до конкретного довідкового тегу. Отже, це 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, що охоплює вертикальну половину екрана.
муру

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'" перетворити вікно довідки у вкладку виконувати "нормальну \ <CW> T" ендіфункцію endif
Марк Ніколс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.