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

在垂直拆分窗口中打开Vim帮助,vim,Vim,有没有办法让Vim帮助在垂直拆分窗格而不是水平拆分窗格中打开?有效: 您还可以使用和控制窗口是从左/上还是从右/下拆分。例如,要在垂直拆分的右侧窗口中打开帮助: :vert bo help 此命令应执行以下操作: :vert help 要使帮助文件始终以右侧的垂直拆分方式打开,请将其放入vimrc中: augroup helpfiles au! au BufRead,BufEnter */doc/* wincmd L augroup END 这将产生一个副作用,即在垂直拆分中打开路

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

有效:

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

:vert bo help

此命令应执行以下操作:

:vert help

要使帮助文件始终以右侧的垂直拆分方式打开,请将其放入vimrc中:

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

这将产生一个副作用,即在垂直拆分中打开路径中带有“doc”的任何内容,但这对您来说可能不是问题。这不是给我的。如果您希望它以左垂直拆分方式打开,或者其他类似方式打开,您可以更改
wincmd L
。您可以通过
了解更多信息:他将wincmd
放入您的
。vimrc

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

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

无需重新映射任何命令或引入奇怪的别名,如
:help
。这是解决办法。创建
~/.vim/after/ftplugin/help.vim
,您可以覆盖任何vim设置,特别是
帮助
,并在其中添加以下行:

autocmd BufWinEnter <buffer> wincmd L
autocmd Bufwanter wincmd L
此挂钩将确保以垂直拆分方式打开任何
帮助
文件。此外,它没有肖恩回答中描述的副作用。就我个人而言,到目前为止,这是一个完美的解决方案


希望这有帮助。祝你好运。

作为哈罗根和肖恩答案的替代方案,你可以对自动命令使用
FileType
事件,如下所示:

autocmd FileType help wincmd L

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

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

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解决方案的副作用。

将以下内容放入
~/.vim/ftplugin/help.vim

wincmd L
没有比这更简单的了:)

这是为了添加到@m42的答案中,但我在这里还没有50个代表可以添加到评论中

nnoremap:vert-bo-help
添加到.vimrc

现在,在正常模式下按Ctrl-H将跳转到命令模式,前缀为在右侧垂直拆分窗口中打开帮助。
帮助·
后面添加一个空格,如果当前选项卡中有多个窗口,则在顶部动态打开帮助窗口;如果只有一个窗口,则在右侧动态打开帮助窗口:

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

当我运行:help时,如何映射它?它总是这样打开的?@Tallboy Try
cnoremap help vert help
。这将创建一个命令模式映射,这样当您在命令模式下键入
help
时,您将看到它扩展到
vert help
@Kazark:
cnoremap help vert help
使
help
的每个字母都自动显示,因此命令行上不会出现单词
help
。有没有办法解决这个问题?可能除了
cnoremap
?之外的其他功能可以进一步改进:您可以使用cabbrev将
h
重新定义为
vert h
:cabbrev h vert h
。然后,每次键入
:h
,它都会自动扩展到
:vert h
@AaronShen:best solution(与此答案结合使用)!我不明白。所有
:vsplit
都会垂直拆分当前窗口。如何在垂直窗格中打开帮助?@doubleDown 7年后
:vert
:vsplit
不同。从文档中:“
:vert{cmd}
,执行{cmd}。如果它包含一个拆分窗口的命令,它将被垂直拆分。”编辑:哦,你的评论是在这个答案不正确时发布的……很简单,而且(如果我理解正确的话)副作用可以忽略。为什么这不是公认的答案!?为什么一个完全不相关的答案(
:vsplit
)会有很多选票!?我对这个和哈鲁根的答案都投了赞成票,因为它们都很简单。我不太熟悉autocmd事件,我想知道为什么要使用
help,*
而不是简单的
help
。另外,我注意到,当我将该命令添加到我的
\u vimrc
并启动一个新的GVim实例时,该命令起作用,但当我在当前GVim会话中运行该命令时(我必须手动
:设置ft=help
以触发自动MD)。感谢您的评论:实际上不需要
*
。据我所知,对于当前会话与新会话,在新会话中,您需要重新获取
vimrc
的源代码,以使任何更改生效,此外,如果文件已在缓冲区中打开,并且
:help
只会将您带到文件的不同部分,此
autocmd
将不起作用。是否有较短的方法使用相同的autocmd同时寻址:h?目前,我在一个额外的行中写入它:
autocmd文件类型help wincmd L
autocmd文件类型h wincmd L
此autocmd通过查看帮助文件的文件类型来解决此问题。所有帮助文件都是
help
文件类型,因此在
help
文件类型的设置下,此autocmd将运行。您可以通过在任何文件中执行
:sef help
来测试这一点,而您的窗口中存在拆分,因此@danbruegge的第二个autocmd将不需要在拆分之前检查文件类型,
:au BufEnter*/doc/*if&filetype='help'| wincmd L| endif
这是令人敬畏的
augroup my_filetype_settings
autocmd!
autocmd FileType help if winnr('$') > 2 | wincmd K | else | wincmd L | endif
augroup END