Когда я показываю файл справки vim, запустив, например, :h au, справка отображается в горизонтальном разделенном окне:

vim help

В настоящее время я всегда использую Ctrl+w _, но я бы предпочел, чтобы буфер справки автоматически открывался в развернутом окне.

Я попытался создать autocmd для решения проблемы:

"Automatically maximize help buffers
augroup filetype_help
  autocmd!
  autocmd BufWinEnter,FileType help wincmd _
augroup END

Который работает только от случая к случаю.

РЕДАКТИРОВАТЬ:

Я провел дополнительную отладку.
Открытие определенной страницы справки в первый раз , например :h au отображает его в максимальном размере, если в моем .vimrc есть группа выше.

При закрытии окна файлов справки через :q и повторном открытии того же файла справки второй раз файл справки отображается разделенным, как на скриншоте выше.

Закрытие окна буфера файлов справки с помощью :bd и последующее его открытие приводит к его максимальному отображению по желанию.

Как я могу переписать мою группу так, чтобы она также увеличивала размер уже открытого буфера справки?

0
jottr 29 Июн 2014 в 18:38

4 ответа

Лучший ответ

Событие BufWinEnter соответствует имени файла справки, поэтому шаблон help (который подходит для совпадения FileType) не будет работать. Параметр 'filetype' устанавливается только один раз для буфера, поэтому при его повторном использовании (после :q, но не после :bd) ваша максимизация не удастся, как вы сообщили.

Вместо этого сделайте так, чтобы :autocmd соответствовал всем буферам, и проверьте наличие 'buftype':

augroup filetype_help
    autocmd!
    autocmd BufWinEnter * if &l:buftype ==# 'help' | wincmd _ | endif
augroup END
2
Ingo Karkat 29 Июн 2014 в 22:53
Спасибо @Ingo, ваша модификация решила мою проблему. Не могли бы вы объяснить конструкции &l: и ==#? Я не уверен, что делает &l и почему вы использовали символ # в сравнении.
 – 
jottr
30 Июн 2014 в 13:44
Большой! Префикс l: выбирает значение :setlocal; вы также можете оставить это. ==# — сравнение с учетом регистра. Как видите, в Vimscript я стараюсь быть предельно точным.
 – 
Ingo Karkat
30 Июн 2014 в 15:34

Я предполагаю, что вы хотите, чтобы окно справки было развернуто по горизонтали.

Извините, я не могу воспроизвести вашу ошибку (пробовал на MacVim 7.4-258 и vim 7.4-258), но вот несколько предложений:

  1. Попробуйте изменить wincmd _ на set winheight=9999 в сценарии вашей группы.
  2. Как насчет того, чтобы вместо этого открыть справку в новой вкладке с помощью wincmd T?
0
Evan Sebastian 29 Июн 2014 в 21:34
Спасибо за попытку помочь. Пожалуйста, смотрите мой отредактированный вопрос выше.
 – 
jottr
29 Июн 2014 в 20:04
Отредактировал ответ .. хотя я не могу воспроизвести вашу ошибку.
 – 
Evan Sebastian
29 Июн 2014 в 21:37

Я думаю, что вы можете достичь своей цели по максимальному увеличению буферов помощи, просто поместив следующее в свой .vimrc (или где-то еще) вместо augroup / autocmd:

:set helpheight=9999
0
Don Hatch 14 Июл 2015 в 01:09
Вы могли бы объяснить, что делает ваше решение предпочтительнее принятого. Также вопрос просил помощи в написании аугруппы, а не экс-команды, чтобы вы могли объяснить, почему ваше решение предпочтительнее по сравнению с уже предложенными решениями.
 – 
jottr
11 Июл 2015 в 13:38
@jottr, это вы задали вопрос - у меня сложилось впечатление, что мой ответ достигает вашей цели («... буфер справки автоматически открывается в развернутом окне») более просто и непосредственно, чем подход, который вы пробовали. Разве это не так? Вы говорите, что определили свою augroup в своем .vimrc, так что я думаю, вы могли бы вместо этого поместить «set helpheight=9999», верно? Дайте мне знать, если я действительно что-то упустил, но если вы просто просите меня изложить что-то, что уже ясно, я откажусь.
 – 
Don Hatch
14 Июл 2015 в 00:55
Ладно, расписал. Все еще не уверен, что я что-то упускаю. Надеюсь, это решит вашу проблему.
 – 
Don Hatch
14 Июл 2015 в 01:10
|CTRL-W_o|      CTRL-W o           close all but current window (like |:only|)
-1
louie_45 14 Июл 2015 в 07:43
1
Не могли бы вы объяснить свой ответ поподробнее?
 – 
Zulu
15 Июл 2015 в 04:14
Когда вы разделили окно, щелчок «CTRL-W o» сделает текущее активное окно только в vim (другие закрыты, и вы можете использовать «: ls», чтобы увидеть их).
 – 
louie_45
16 Июл 2015 в 08:28