有没有办法让Vim帮助文档在垂直分割窗格中打开,而不是水平分割窗格中打开?
:vertical
(vert
) 可以使用:
:vert help
你也可以使用topleft
(to
)和botright
(bo
)来控制窗口是在左上角还是右下角分割。例如,要在一个纵向分割的右侧窗口中打开帮助:
:vert bo help
FileType
事件作为自动命令,如下所示:autocmd FileType help wincmd L
虽然这将改变任何帮助窗口的位置,以及在手动放置窗口后如果您正在查看的文件更改则移动窗口的位置。但我认为这是任何解决方案都存在的问题。
:vsplit
)能够得到很多赞? - iconoclasthelp,*
而不是简单地使用help
的原因是什么。
此外,我注意到当我将此命令添加到我的_vimrc
并启动一个新的GVim实例时,此命令可以正常工作,但是在当前的GVim会话中运行该命令时却无法正常工作(我必须手动执行:set ft=help
来触发autocmd)。 - Anthony Geogheganhelp
文件类型,因此在设置 help
文件类型时,这个 autocmd 将运行。您可以通过在任何文件中执行 :sef help
来测试它,同时窗口中有一个分割,因此不需要 @danbruegge 的第二个 autocmd。 - EdJoJobautocmd FileType help wincmd L
仅在第一次打开帮助窗口时发生。尝试打开一个帮助窗口,关闭它,然后再打开一个帮助窗口。在第一个帮助窗口之后,其余的窗口将在水平分割中打开。 - Steve Ward:Help
。下面是解决方案。创建~/.vim/after/ftplugin/help.vim
文件,在其中覆盖任何Vim设置,特别是针对help
,并添加以下行:autocmd BufWinEnter <buffer> wincmd L
help
文件在垂直拆分中打开。此外,它没有Sean答案中描述的副作用。就我个人而言,这是目前为止完美的解决方案。这个命令应该可以做到:
:vert help
:vsplit
的作用只是将当前窗口垂直划分。它如何在竖向面板中帮助打开? - doubleDown:vert
并不等同于:vsplit
。从文档中可以看到:_":vert {cmd}
,执行{cmd},如果它包含一个拆分窗口的命令,那么将垂直拆分窗口。"_ 编辑:哦,你的评论是在这个答案错误发布时发出的... - orlpaugroup helpfiles
au!
au BufRead,BufEnter */doc/* wincmd L
augroup END
wincmd L
。你可以使用:he wincmd
了解更多信息。:au BufEnter */doc/* if &filetype=='help' | wincmd L | endif
。如果文件类型是帮助文档,则移动到左侧窗口。 - roxautocmd FileType help wincmd L
对我只起作用一次,这个方法非常好! - WW00WWautocmd FileType
在neovim中不起作用,因为帮助缓冲区仍然隐藏。但是使用if &filetype=='help'
的BufEnter可以解决问题。此外,在wincmd L
之后,如果帮助窗口变得太窄,我还会执行| if winwidth(0) < 78 | wincmd T | ...
以在新标签页中重新打开它。 - StanislavBufRead
事件,BufEnter
足够)。 - bloodyBufRead
事件,BufEnter
就足够了)。 - undefined~/.vim/ftplugin/help.vim
中。wincmd L
.vimrc
文件中:command -nargs=* -complete=help Help vertical belowright help <args>
现在你可以使用:Help
命令打开垂直帮助窗口(注意首字母大写)。
-- Open help window in a vertical split to the right.
vim.api.nvim_create_autocmd("BufWinEnter", {
group = vim.api.nvim_create_augroup("help_window_right", {}),
pattern = { "*.txt" },
callback = function()
if vim.o.filetype == 'help' then vim.cmd.wincmd("L") end
end
})
如果当前标签页中有多个窗口,则动态打开帮助窗口的位置在顶部;如果当前标签页中只有一个窗口,则在右侧打开。
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
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()
每个窗口只会运行一次(这就是w:
前缀的作用,仅运行wincmd L
)。
当打开“帮助”文件时,这个函数会被调用。这不会像EdJoJob的解决方案那样产生副作用。
cnoremap help vert help
。这会创建一个命令模式映射,当你在命令模式下输入help
时,它会自动展开为vert help
。 - Keith Pinsoncnoremap help vert help
会让help
中的每个字母单独出现,因此在命令行中不会显示单词help
。有没有其他方法可以解决这个问题?也许可以尝试一些不同于cnoremap
的东西? - iconoclast