Как заставить окно справки всегда открываться в одной и той же позиции? - PullRequest
1 голос
/ 18 сентября 2011

Я делаю это для открытия страниц справки в вертикальном окне:

cabbrev help vert botright help

таким образом, это нормально, но немного тревожно, и это тоже спамит мой :history немного. Я бы хотел, чтобы Vim не расширял это, просто запустите команду. Поэтому, когда я пишу :help topic, я хочу, чтобы он не раскрывался, а запускал команду :vert botright help topic Я пробовал с

cabbrev <silent> help vert botright help

но это не работает.

Можно ли вообще это сделать?

Ответы [ 3 ]

5 голосов
/ 19 сентября 2011

Я нашел идеальное решение на основе этого письма: http://vim.1045645.n5.nabble.com/Horizontal-layout-by-default-td1164876.html#a1164886
Так что если вы хотите, чтобы окна справки справа, сделайте следующее:

autocmd FileType help :wincmd H

это ставит окна типа 'help' сразу вправо, как и CTRL-W H. См. :h CTRL-W_H в vim.
Небольшая проблема с ним, если у вас включена опция hidden, просто закрыв окно с :q, выгрузка буфера окна справки не будет выгружена, а если вы захотите открыть его снова, он не вызовет событие FileType для некоторых причина (почему?), поэтому, если вы используете :set hidden, вам нужно:

autocmd FileType help set bufhidden=unload

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

2 голосов
/ 18 сентября 2011

Он будет расширяться только после , когда вы нажмете другую клавишу (например, Пробел )

Возможно, вы сможете сделать это

cabbrev <silent> he vert botright help

И затемсделайте привычкой быстро говорить :he Пробел Введите или действительно

:he topic

, который затем расширится до полной команды

Править

Если вы вообще не хотите расширения, я предлагаю пользовательскую команду:

:command! Help vert botright help
0 голосов
/ 04 августа 2014

Хотя ваш ответ работает для просмотра двух разделов справки в одном и том же окне (например, :h bar | h foo), не оптимально видеть две записи в разных окнах (например: h foo | sp | wincmd w | h bar), так как он выполняет также выполняет wincmd во втором окне, оставляя три вертикальных окна, даже если ваш монитор может отображать только два окна с 80 столбцами.

Добавление следующих строк в ~/.vim/ftplugin/help.vim приводит к выполнению wincmd только тогда, когда есть место для другого вертикального разделения.

" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
   finish
endif

if min(map(range(winnr('$')), 'winwidth(v:val)')) > 160
   wincmd L
endif
...