Как сделать так, чтобы Vim открывал справку в вертикальном разделении?

18

Я обычно работаю в выпадающем терминале, длиной около 25 символов. Поскольку я предпочитаю вкладки окнам 1 , обычно тратится много горизонтального пространства - около половины ширины терминала.

Вдобавок ко всему, Vim, с настройкой по умолчанию helpheight, оставляет примерно пару строк содержимого файла, когда я открываю окно справки:

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

Есть ли способ :hиспользовать вертикальное разделение?

Я мог бы:

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

Есть ли более простой способ?

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

Мур
источник
@statox извините за это. Не знаю, о чем я думал, когда писал это.
Муру
Ахах, не нужно извиняться, это случается и с лучшими ;-)
statox

Ответы:

16

Вы можете использовать, :vert h [your topic]чтобы открыть справку по вертикали.

Вы можете использовать следующую команду:

cnoreabbrev H vert h

Для того, чтобы ВИМ заменить Hна vert hавтоматически в командной строке.

Также вы можете использовать это сокращение:

cnoreabbrev HR vert bo h

Чтобы открыть окно справки в правой части экрана. (см. :h :botrightподробнее bo)

statox
источник
Итак, нет настраиваемой опции? Что-то вроде splitrightдля :help?
Муру
Я не уверен, что понимаю, что вы имеете в виду, вы бы предпочли иметь возможность выбрать, где окно справки должно быть размещено?
statox
Я думаю, что вы имели в виду :rightbelowвместо :botright.
Муру
2
Ну , это зависит от поведения вы ожидаете, пусть говорит , что вы должны играть с :lefta[bove], :rightb[elow], :to[pleft]и :bo[tright]увидеть , какой вы предпочитаете. Я предпочитаю :botrightболее :rightbelowпотому , что когда - нибудь мой макет, я буду получать справки окна на всю высоту экрана. Если у :rightbelowменя уже есть горизонтальное разделение, окно справки будет иметь высоту этого разделения.
statox
2
К сожалению, написание правильных cabbrevкоманд включает в себя некоторый ритуал .
Сато Кацура
7

Это вдохновлено vimrc Джунегунна :

augroup vimrc_help
  autocmd!
  autocmd BufEnter *.txt if &buftype == 'help' | wincmd L | endif
augroup END
VanLaser
источник
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>
nobe4
источник
Отлично. Это будет очень полезно для случаев, когда 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 () if & buftype == '' help '" преобразовать окно справки во вкладку и выполнить эндофоническую функцию "normal \ <CW> T"
Марк Николс