在Vim中查找C++文档

30

我使用vim编写c++代码。

经常会发现自己浪费时间(并且打破了工作状态),去查找一些琐碎的事情,例如:

std::string.substring需要传入(start, length)还是(start, end)参数。

这通常会导致我打开浏览器,等待加载;在Google上搜索;第一个链接无用,尝试第二个链接;好了,完成。

其他人如何在vim中处理这个问题?是否有一个漂亮的*.tgz包可以下载标准函数文档,并在vim内部引用它们?

谢谢!


虽然我很欣赏这个问题(并且因此安装了cppman),但显而易见的第一个改进是将浏览器指向cppreference.com,而不是使用通用的Google搜索。(毕竟,cppman没有做太多其他的事情...) - DevSolar
6个回答

31

您还可以使用cppman,提供以下内容:

适用于Linux/MacOS的C++ 98/11/14手册页

输入图像描述

然后当您在Vim中键入ShiftK时,您可以使用它代替man(请参见@alesplin的回答):

autocmd FileType cpp set keywordprg=cppman

这将打开一个类似于man的页面,其中包含STL文档,您可以使用Vim分页器进行导航。

为了更好地与Vim集成,它可能可以与vim-man或任何其他类似的插件一起使用。

个人而言,我通过重新映射C ++文件的ShiftK来绕过keywordprg,并打开了tmux拆分:

command! -nargs=+ Cppman silent! call system("tmux split-window cppman " . expand(<q-args>))
autocmd FileType cpp nnoremap <silent><buffer> K <Esc>:Cppman <cword><CR>

tmux


“call system("tmux split-window cppman <anything>")” 这段代码没有任何反应。 -> 在我的设置中,这个映射好像不起作用了... 你知道为什么吗? - Jan
@Jan:你安装了tmux吗? - BenC
是的,该命令也可在普通终端中使用... 因此,在终端中执行tmux split-window cppman vector会打开一个新的 tmux 窗口,并显示 vector 的 cppman 页面。 - Jan
这是一个小插件,可以更轻松地在vim中使用cppman:https://github.com/gauteh/vim-cppman - gauteh

11

我不熟悉C++编程,但是如果有相关函数的手册页面,您可以将光标放在函数名称上,然后按下ShiftK来访问它们。这仅适用于已安装手册页面的函数,所以效果因情况而异。


5

推荐使用Zeal,它是一款离线文档浏览器。使用Zealvim,你只需要在文件类型上使用\z,就可以获取当前单词的定义。


4
这可能会有所帮助:
OmniCppComplete - 使用ctags数据库进行C/C++ omni自动完成
还可以看一下这个:
C ++代码自动补全
您还可以查看C ++的Vim Intellisense:
Vim Intellisense - C ++插件

2
这不是OP所问的。Alesplin的回答似乎更合适。 - kaihowl

1

我知道这是一个老问题,但我正在寻找同样的东西,没有任何答案对我有帮助。如果其他人来到这个问题,他们可能会发现这很有用。

你应该使用CRefVim插件。使用它,您将完全访问C参考手册。它是为C而不是为C ++设计的,但仍然非常方便。

The usage:


There are several ways to specify a word CRefVim should search for in order 
to view help: 

正常模式下 cr:获取光标下单词的帮助信息 记忆法 cr:(c)-(r)eference 可视模式下 cr:获取可视选择文本的帮助信息 记忆法 cr:(c)-(r)eference cw: 提示输入 CRefVim 应搜索的单词 记忆法 cw:(c)-reference (w)hat cc: 跳转到 C-reference 手册的目录 记忆法 cc:(c)-reference (c)ontents

注意:默认情况下,是 \,例如按下 \cr 来调用 C-reference

注意:搜寻运算符(++, --, %, ...)的最佳方法是将其可视化选择并按下 cr。

获取帮助请执行 :help crefvimdoc 显示 C-reference 手册请执行 :help crefvim

您也可以使用 :help 。要搜索函数的帮助,请像这样使用它

:help crv-FUNCTION_NAME

使用:h crv-strlen,您可以找到有关strlen()函数的帮助。使用:h crv-operator,您可以找到有关C运算符的章节。


0

这并不是一个“在vim内部”的答案……但为什么不跳过“打开浏览器,搜索Google”这一步呢?只需将浏览器指向好的API文档,并保持其打开状态。http://www.dinkumware.com/manuals/default.aspx是我最喜欢的(也可以下载离线参考),http://www.cplusplus.com/reference/也不错。切换窗口,再点击两三下,你就能得到答案了;我怀疑“在vim内部”的解决方案对你的工作流程影响不会更小。

话虽如此,对于那些使用纯文本界面的人来说,在vim内部找到解决方案确实很不错,所以我期待其他答案的出现。;-)


1
这算是浪费时间和破坏工作流程:切换到另一个应用程序并搜索意味着必须使用鼠标、移动窗口等。这不是问题所要求的,也不是如果有选择的话我想要的。 - Seth Johnson
我认为Shift-K(@alesplin)、<C-X><C-O>(@R.S.Barnes)和Alt-Tab - / - <searchstring>之间没有显著的区别。您还可以注意到,其他两种解决方案只有在您已经在代码中拥有搜索字符串时才能帮助您,而使用我的方法,您可以查找任何内容,我已经使用这种方法多年了。我承认这不完全是OP所要求的,但是你和他都让浏览器搜索看起来比必要的困难,这让我相信你无法同时处理多个应用程序。话说得强烈,但“浪费时间并打乱工作流程”也是如此。 - DevSolar
w3m有用吗?对我来说,Cppman运行得非常好,但是通常浏览网页仍会打断你的工作流程。w3m(和w3m-img)将浏览带到终端,像tmux这样的多路复用器甚至不需要关闭vim。 - John P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接