Як я можу змусити Vim показати документацію функції C / C ++?


17

У більшості редакторів є така функція, як коли ви натискаєте деякі клавіші, розміщуючи клавішу над функцією, вона вискакує документацію цієї функції разом із числом та типом аргументів, які функція приймає.

Мені було цікаво, чи пропонує Vim таку підтримку. Наприклад, під час кодування в C я використовую вбудовану функцію qsort(). Оскільки я не впевнений у типі та кількості аргументів, які він бере, я хотів би це знати, не уникаючи Vim. Це можливо?


2
Не впевнений, що це саме те, що ви хочете, але якщо ви надаєте правильне значення опції 'keywordprg'(назва програми, яка може обробляти документацію для потрібної мови), то натискаючи Kна ключове слово (яке може бути ім'ям функцію), ви повинні отримати потрібну інформацію. Наприклад, якщо ви встановите cppman( github.com/aitjcize/cppman ) і додаєте autocmd всередину свого vimrc, наприклад autocmd FileType cpp setlocal keywordprg=cppman, cppmanслід обробити документацію всередині буфера c ++. Хоча не перевірено.
saginaw

2
@saginaw Хоча cppmanце відмінна пропозиція, якщо у вас встановлені керування C та C ++ ( manpages-posix-devі libstdc++-X.Y-docпакети в системах на базі Debian), звичайний старий manповинен працювати.
муру

Відповіді:


8

Якщо ви можете налаштувати YouCompleteMe , він підтримує C, C ++, JavaScript, Go та деякі інші мови. Ось це в дії:

введіть тут опис зображення введіть тут опис зображення

Встановити це трохи прикро , і після його встановлення вам потрібно налаштувати його на C і C ++ , створивши .ycm_extra_conf.py. Я підняв одну з цієї репо , і отримав цей ефект.


4
"трішки неприємно встановлювати", ... Це заниження. Все-таки це дуже добре. ^ _ ~
Сардатріон

4
Чи є спосіб змусити спливаючі вікна завершення залишатися відкритими під час введення аргументів функції? Наприклад, як тільки ви набираєте першу букву першого аргументу qsort(a, спливаюче вікно зникає, що ускладнює запам’ятовування наступних аргументів.
thiagowfx

1
Але це просто показує прототип функції. Як змусити його показувати свої доксигенні коментарі (як Eclipse робить з javadocs)? Я маю на увазі параметри, вихід, нотатки,
реф

1
@ Zeta.Investigator Одне, що я дуже використовую в Python, це те YcmCompleter GoTo, що зазвичай відправляє вас туди, де в коді була визначена функція / клас. Це рядок, що знаходиться над документом, в якому перераховано все, про що ви просили. Я не впевнений, чи вбудовані коментарі в одному і тому ж місці в C / Java / C ++.
користувач1717828

8

Для C натискання Kна ключове слово буде безпосередньо підтягувати вбудовану сторінку сторінки. Наприклад, розмістіть курсор на printfключовому слові:

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

Тепер натисніть K(верхній регістр К), і вікно сторінки для V 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)функція. У будь-якому випадку, manpages-devкерують функціями C , які зазвичай встановлюються за замовчуванням, але не завжди. Функції POSIX є manpages-posix-dev- як правило, не встановлюються за замовчуванням, а також документація на C ++ ( libstdc++-X.Y-doc).
муру

5

Якщо ви хочете належної документації , плагін у коментарі saginaw, здається, покриває ваші потреби C ++. Я не знаю загального, але ви, ймовірно, можете знайти альтернативи для інших мов на vim.org.


Якщо…

  • ваш код уже індексований ctags,
  • ваш індекс також включає стандартну бібліотеку,
  • і все, що ви хочете, - це підказка ,

ви можете використовувати <C-w>}для відкриття визначення ключового слова під курсором у вікні попереднього перегляду. YMMV, звичайно.

Дивіться :help preview-window, :help tagsі :help ctags.


Ви також можете використовувати вбудований функціонал Vim "включити-пошук": натисніть, [iщоб надрукувати "підпис" цього слова під курсором у командному рядку:

[i

Див :help include-search.


1
[iдивно. Це працює для stdlib.hі qsort, але не cstdlibі, std::qsortабо просто qsort.
муру

Для тих, хто незнайомий з номенклатурою, як я є / був <C-w>засобом CTRL-WЯка номенклатура використовується у :helpфайлах. Потім ви можете використовувати :pcдля закриття вікна попереднього перегляду.
danielson317

1

Тип файлу C / C ++ Vim поставляється з гідною функцією omnicompletion, яка підтримує функцію "попереднього перегляду". Тому додайте "попередній перегляд" до опції завершення та побачите підпис функції, коли ви вставляєте режим завершення.

У звичайному режимі ви можете CTRL + W}, щоб відкрити функцію декларації у вікні попереднього перегляду вручну.


1

Як уже згадувалося, натискання Kна ключове слово працює за допомогою пошуку на сторінці людини Для отримання чоловічих сторінок C ++ ви можете спробувати https://github.com/aitjcize/cppman (він отримує "чоловічі сторінки" від cplusplus.com та cppreference.com).


0

Встановіть YouCompleteMe. Коли ви кладете курсор на ідентифікатор, введіть YcmCompleter GetDocкоманду, щоб отримати документ у невеликому вікні попереднього перегляду внизу. Він працює на багатьох мовах, таких як python та c / c ++.

Youcompleteme також відображає вікно попереднього перегляду під час його автоматичного заповнення. Ви можете налаштувати поведінку попереднього перегляду документа зі g:ycm_autoclose_preview_window_after_completionзмінною.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.