How to get the Help window to always open in the same position?
I do this for opening help pages in vertical window:
cabbrev help vert botright help
this way, it is ok, but a bit disturbing, and it is spamming my :history 开发者_如何学Pythona bit too.
I would like to get Vim to not expand this, just run the command. So when I write :help topic I want it to not expanded, but to run the command :vert botright help topic
I tried with
cabbrev <silent> help vert botright help
but it doesn't work.
Is it possible to do at all?
I found the perfect solution based on this e-mail:
http://vim.1045645.n5.nabble.com/Horizontal-layout-by-default-td1164876.html#a1164886
So if you want help windows on the right, do this:
autocmd FileType help :wincmd H
this puts the 'help' type windows immediately to the right just like CTRL-W H. See :h CTRL-W_H in vim.
The small problem with it if you have the hidden option enabled, just closing the window with :q doesn't unload the help window buffer, and if you want to open it again, it will not trigger the FileType event for some reason (why?), so if you use :set hidden you need to:
autocmd FileType help set bufhidden=unload
to get help windows unload, which is the default behavior anyway.
It will only expand after you press another key (e.g. Space)
Perhaps you can make it
cabbrev <silent> he vert botright help
And then make it a habit to quickly say :heSpaceEnter or indeed
:he topic
Which will then expand to the full command
Edit
If you don't want the expansion at all, I suggest a custom command:
:command! Help vert botright help
Although your answer works to see two help topics on the same window (e.g.: :h bar | h foo), it is not optimal to see two entries on different windows (e.g.: h foo | sp | wincmd w | h bar), as it executes also executes the wincmd on the second window thus leaving three vertical windows, even if your monitor can display only two 80 columns windows.
Adding the following lines to ~/.vim/ftplugin/help.vim executes the wincmd only when there is room for another vertical split.
" 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
加载中,请稍侯......
精彩评论