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