如何使Vim显示C / C ++函数的文档?


17

大多数编辑器都有一个功能,例如当您通过将尖号放在函数上来按下某些键时,它会弹出该函数的文档以及该函数采用的参数的数量和类型。

我想知道Vim是否提供这种支持。例如,在用C进行编码时,我使用了内置函数qsort()。由于我不确定所用参数的类型和数量,因此我想在不逃脱Vim的情况下知道它。可能吗?


2
不确定这是否正是您想要的,但是如果您为选项提供正确的值'keywordprg'(可以处理所需语言文档的程序名称),则可以点击K一个关键字(可以是函数),则应获取所需的信息。例如,如果您安装cppmangithub.com/aitjcize/cppman)并在vimrc内添加一个autocmd,例如autocmd FileType cpp setlocal keywordprg=cppmancppman则应在c ++缓冲区内处理文档。虽然没有测试。
saginaw '16

2
@saginaw虽然这cppman是一个很好的建议,但是如果您已安装了C和C ++联机帮助页(manpages-posix-dev以及libstdc++-X.Y-doc基于Debian的系统上的软件包),那么man应该可以使用old old 。
muru

Answers:


8

如果可以设置YouCompleteMe,则它支持C,C ++,JavaScript,Go和其他一些语言。实际情况如下:

在此处输入图片说明 在此处输入图片说明

安装有点烦人,安装完成后,您需要通过创建来针对C和C ++配置它.ycm_extra_conf.py。我从此仓库中取出一个,并获得了这种效果。


4
“安装有点烦人,”……这是一种轻描淡写的说法。尽管如此,它还是很好。^ _〜
Sardathrion -恢复莫妮卡

4
有什么方法可以在键入函数参数时强制完成补全弹出窗口保持打开状态?例如,一旦您输入第一个参数的第一个字母qsort(a,弹出窗口就会消失,从而很难记住下一个参数。
thiagowfx

1
但这仅显示了该函数的原型。如何使它显示其doxygen注释(就像Eclipse使用javadocs一样)?我的意思是参数,输出,注释,参考...
Zeta.Investigator

1
@ Zeta.Investigator我在Python中大量使用的一件事是YcmCompleter GoTo,它通常会将您带到代码中定义函数/类的地方。这是文档字符串上方的那一行,其中列出了您所要求的所有内容。我不确定内联注释是否在C / Java / C ++中位于同一位置。
user1717828

8

对于C,按下K关键字将直接拉出内置手册页。例如,将光标放在printf关键字上:

printf("Hello, %s!", foo);

现在按K(大写字母K),联机帮助页printf应出现在VIM中:

NAME
   printf - format and print data

SYNOPSIS
   printf FORMAT [ARGUMENT]...
   printf OPTION

DESCRIPTION
   Print ARGUMENT(s) according to FORMAT, or execute according to OPTION:

   --help display this help and exit

   --version
          output version information and exit

   FORMAT controls the output as in C printf.  Interpreted sequences are:

   \"     double quote
   \\     backslash

   ... It continues for quite a few scrollable pages

在我尝试过的所有Debian发行版中,这似乎都是开箱即用的,不需要特定的配置。


1
那是printf(1)命令的手册页,而不是printf(3)函数。无论如何,C函数手册页来自manpages-dev,通常默认情况下会安装from ,但并非总是如此,并且POSIX函数位于manpages-posix-dev-通常默认情况下未安装,C ++文档(libstdc++-X.Y-doc)也没有。
muru

5

如果您需要适当的文档,则saginaw注释中的插件似乎可以满足您的C ++需求。我不知道通用的语言,但您可能可以在vim.org上找到其他语言的替代语言。


如果…

  • 您的代码已经被ctags索引了,
  • 您的索引还包括标准库,
  • 而您想要的只是一个提示

您可以用来<C-w>}在预览窗口中的光标下方打开关键字的定义。YMMV,当然。

:help preview-window:help tags:help ctags


您还可以使用Vim内置的“包含搜索”功能:[i在命令行中按此键可在光标下打印单词的“签名”:

[一世

请参阅:help include-search


1
[i很奇怪。它适用于stdlib.hqsort,但不适用于cstdliband std::qsort或just qsort
muru

对于那些我不熟悉命名法的人,这<C-w>意味着文件中CTRL-W使用的命名法:help。然后,您可以:pc用来关闭预览窗口。
danielson317

1

Vim的C / C ++文件类型带有不错的多功能完成功能,该功能支持“预览”功能。因此,将“ preview”添加到您的completeopt选项中,并在您完成插入模式完成时看到函数签名。

在普通模式下,可以按CTRL + W}手动在预览窗口中打开函数声明。



0

安装YouCompleteMe。将光标放在标识符上时,输入YcmCompleter GetDoc命令以在底部的预览窗口中获取文档。它适用于多种语言,例如python和c / c ++。

Youcompleteme在自动完成功能期间还会显示预览窗口。您可以使用g:ycm_autoclose_preview_window_after_completion变量自定义文档预览的行为。

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.