如何让“帮助”窗口始终以相同的位置打开?

时间:2011-09-18 18:37:45

标签: vim autocmd

我这样做是为了在垂直窗口打开帮助页面:

cabbrev help vert botright help

这样,没关系,但有点令人不安,而且我的:history也有点垃圾邮件。 我想让Vim不扩展它,只需运行命令。所以当我写:help topic时,我希望它不会展开,而是运行命令:vert botright help topic 我试过

cabbrev <silent> help vert botright help

但它不起作用。

可以做到吗?

3 个答案:

答案 0 :(得分:5)

我找到了基于此电子邮件的完美解决方案: http://vim.1045645.n5.nabble.com/Horizontal-layout-by-default-td1164876.html#a1164886
因此,如果您需要右侧的帮助窗口,请执行以下操作:

autocmd FileType help :wincmd H

这会将'help'类型窗口立即置于右侧,就像CTRL-W H一样。请参阅vim中的:h CTRL-W_H 如果启用了hidden选项,只需用:q关闭窗口,那么它的小问题就是不会卸载帮助窗口缓冲区,如果要再次打开它,它将不会触发FileType事件由于某种原因(为什么?),所以如果你使用:set hidden,你需要:

autocmd FileType help set bufhidden=unload

获取帮助窗口卸载,这是默认行为。

答案 1 :(得分:2)

只有在按下其他键后才会展开(例如 Space

也许你可以成功

cabbrev <silent> he vert botright help

然后养成快速说:he 空间 输入或确实

的习惯
:he topic

然后将扩展为完整命令

修改

如果您根本不想要扩展,我建议使用自定义命令:

:command! Help vert botright help

答案 2 :(得分:0)

虽然你的答案可以在同一个窗口看到两个帮助主题(例如::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