在垂直分割窗口中打开Vim帮助


114

有没有办法让Vim帮助在垂直拆分窗格而不是水平窗格中打开?

Answers:


127

:verticalvert作品:

:vert help

您还可以使用toplefttobotrightbo控制窗口是在左侧/顶部还是右侧/底部拆分。例如,要在垂直拆分的右窗口中打开帮助:

:vert bo help

2
我该如何映射它,所以当我运行:help ____时,它总是那样打开?
高个子男孩2012年

13
@Tallboy试试cnoremap help vert help。这将创建一个命令模式映射,以便在键入help命令模式时将看到它扩展为vert help
基思·品森

3
@Kazark:cnoremap help vert help使每个字母单独help出现,因此该单词help不会出现在命令行上。有什么办法可以解决这个问题?也许除了cnoremap
iconoclast 2014年

7
要进行更多改进:您可以使用cabbrev将其重新定义 hvert h:cabbrev h vert h。然后,每次键入时:h,它将自动扩展到:vert h
亚伦·申

@AaronShen:最佳解决方案(与此答案结合使用)!

38

作为Haroogan和Sean答案的替代方法,您可以将FileType事件用于自动命令,如下所示:

autocmd FileType help wincmd L

尽管这将更改任何帮助窗口的位置,并且如果您要查看的文件发生更改,则在手动放置帮助窗口后也将其移动。但是我认为这是任何解决方案的问题。


2
很简单,而且(如果我理解正确的话)副作用可以忽略不计。为什么这不是公认的答案!?为什么一个完全不相关的答案(:vsplit)会有很多反对!!
iconoclast 2014年

1
我为这和Haroogan的回答都简单而同时投票。我对autocmd事件不是很熟悉,我在想原因是什么,help,*而不是简单的help。另外,我注意到该命令在将其添加到我的计算机_vimrc并启动GVim的新实例时有效,但是在我当前的GVim会话中运行该命令时却不起作用(我必须手动:set ft=help触发autocmd)。
Anthony Geoghegan 2014年

感谢您的评论:*实际上并不需要。据我对当前会话与新会话的了解,在新会话中,您将需要重新获取资源vimrc以使所有更改生效,此外,如果文件已经在缓冲区中打开并且:help只是将您带到另一个会话文件的一部分,这autocmd将无效
EdJoJob 2014年

是否有更短的方法也可以使用相同的autocmd处理:h?目前,我在另一行中写它:autocmd FileType help wincmd L autocmd FileType h wincmd L
danbruegge 2015年

1
通过查看帮助文件的文件类型,此autocmd解决了该问题。所有帮助文件都是help文件类型,因此,在此help文件类型的设置下,此autocmd将运行。您可以通过:sef help在窗口中有拆分的任何文件中进行测试,因此不需要@danbruegge的第二个autocmd
EdJoJob 2015年

20

无需重新映射任何命令或引入诸如之类的怪异别名:Help。这是解决方案。~/.vim/after/ftplugin/help.vim在此处创建可以覆盖任何Vim设置的位置,help并在其中添加以下行:

autocmd BufWinEnter <buffer> wincmd L

该挂钩将确保help以垂直分割打开任何文件。此外,它没有肖恩的答案中所述的副作用。就我个人而言,到目前为止,这是完美的解决方案。

希望这可以帮助。祝你好运。


18

此命令应执行以下操作:

:vert help

10
我不明白 所有:vsplit操作都是垂直拆分当前窗口。如何在垂直窗格中打开帮助?
doubleDown 2013年

7

把它放在你的.vimrc

command -nargs=* -complete=help Help vertical belowright help <args>

现在,您可以使用以下:Help命令打开垂直帮助(注意,第一个字母为大写)


6

为了使帮助文件始终以右侧的垂直分隔打开,请将其放在vimrc中:

augroup helpfiles
  au!
  au BufRead,BufEnter */doc/* wincmd L
augroup END

这样做的副作用是,路径中带有“ doc”的任何内容都以垂直分割的形式打开,但这对您来说可能不是问题。不是给我的 如果您希望它以左垂直分割线或其他任何方式打开,则可以更改wincmd L。您可以通过了解更多信息:he wincmd


1
拆分前检查文件类型,:au BufEnter */doc/* if &filetype=='help' | wincmd L | endif
ROX

这太棒了!autocmd FileType help wincmd L对我来说只有一次,这很好!
voldikss


3

这将移动帮助窗口一次。因此,您可以在创建窗口后自由移动它。

if has('autocmd')
  function! ILikeHelpToTheRight()
    if !exists('w:help_is_moved') || w:help_is_moved != "right"
      wincmd L
      let w:help_is_moved = "right"
    endif
  endfunction

  augroup HelpPages
    autocmd FileType help nested call ILikeHelpToTheRight()
  augroup END
endif

功能, ILikeHelpToTheRight()wincmd L每个窗口仅运行一次(这就是w:前缀的含义)。

然后,只要打开“帮助”文件,就会调用此方法。这没有EdJoJob解决方案的副作用。


2

如果当前选项卡中有多个窗口,则动态地打开帮助窗口的顶部;如果只有一个窗口,则动态地打开帮助窗口的右侧:

if winnr('$') > 2
    wincmd K
else
    wincmd L
endif

您需要将其放置在ftplugin/help.vim或与一起使用autocmd,例如:

augroup my_filetype_settings
autocmd!
autocmd FileType help if winnr('$') > 2 | wincmd K | else | wincmd L | endif
augroup END

1

这是要添加到@ m42的答案中,但我目前尚无50个代表可以添加到注释中。

添加nnoremap <C-H> :vert bo help到.vimrc

现在,在“普通”模式下按Ctrl-H将跳到“命令”模式,其前缀是在右侧的垂直拆分窗口中打开帮助。在后面加上尾随空格help·为了获得最佳效果,请在配置行的末尾<-加上。

此映射使您仍可以使用:help\ :h来打开水平拆分的窗口或在以前的帮助命令历史记录中循环显示,而无需提示自动展开。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.