Vim이 C / C ++ 함수의 문서를 보여 주려면 어떻게해야합니까?


18

대부분의 편집기에는 함수 위에 캐럿을 배치하여 일부 키를 누를 때와 같은 기능이 있으며, 함수가 취하는 인수의 수와 유형과 함께 해당 함수의 문서를 표시합니다.

Vim이 그러한 지원을 제공하는지 궁금합니다. 예를 들어 C로 코딩하는 동안 내장 함수를 사용합니다 qsort(). 인수의 유형과 수에 대해 잘 모르기 때문에 Vim을 탈출하지 않고 알고 싶습니다. 가능합니까?


2
이것이 정확히 원하는 것인지 확실하지 않지만 옵션에 원하는 값을 'keywordprg'제공하면 (원하는 언어의 문서를 처리 할 수있는 프로그램 이름) K키워드를 입력하면 함수), 원하는 정보를 가져와야합니다. 설치 예를 들어, cppman( github.com/aitjcize/cppman을 )과 같은 당신의 vimrc 내부에 autocmd를 추가 autocmd FileType cpp setlocal keywordprg=cppman, 다음 cppman은 C 내부 문서를 처리해야 ++ 버퍼. 그래도 테스트되지 않았습니다.
saginaw

2
@saginaw cppman훌륭한 제안이지만 C 및 C ++ 맨 페이지 ( manpages-posix-devlibstdc++-X.Y-doc데비안 기반 시스템의 패키지)가 설치되어 있으면 오래된 man것이 작동합니다.
muru

답변:


9

YouCompleteMe 를 설정할 수 있으면 C, C ++, JavaScript, Go 및 기타 언어를 지원합니다. 작동 방식은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

설치 하는 것은 약간 성가 시며 일단 설치 되면 을 만들어 C 및 C ++맞게 구성 해야 합니다 .ycm_extra_conf.py. 나는 이 repo 에서 하나를 들어 올리고이 효과를 얻었습니다.


4
"설치하기가 조금 성가신 일이 아닙니다."... 그것은 과소 평가입니다. 그래도 아주 좋습니다. ^ _ ~
Sardathrion-남용에 반대

4
함수 인수가 입력되는 동안 완료 팝업을 강제로 열 수있는 방법이 있습니까? 예를 들어, 첫 번째 인수의 첫 글자를 입력하자마자 qsort(a팝업 창이 사라지고 다음 인수를 기억하기 어렵습니다.
thiagowfx

1
그러나 그것은 단지 함수의 프로토 타입을 보여줍니다. 이클립스가 javadocs와 같이 doxygen 주석을 표시하는 방법은 무엇입니까? 나는 매개 변수, 출력, 노트, 심판을 의미합니다 ...
Zeta.Investigator

1
@ Zeta.Investigator 파이썬에서 많이 사용하는 것 중 하나는 YcmCompleter GoTo보통 함수 / 클래스가 코드에서 정의 된 곳으로 보내는 것입니다. 그것은 당신이 요청한 모든 것을 나열하는 docstring 바로 위의 라인입니다. 인라인 주석이 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

이것은 내가 시도한 모든 데비안 파생 배포판에서 즉시 작동하는 것 같습니다. 특정 구성이 필요하지 않습니다.


1
그것은 함수가 printf(1)아니라 명령 의 맨 페이지입니다 printf(3). 어쨌든 C 함수 맨 페이지는 from ( manpages-dev보통은 기본적으로 설치되지만 항상 그런 것은 아니며) 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에 내장 된 "include-search"기능을 사용할 수도 있습니다 : [i명령 행에서 커서 아래에 단어의 "서명"을 인쇄하려면을 누르십시오 .

[나는

참조하십시오 :help include-search.


1
[i이상하다. 그것은 작동 stdlib.h하고 qsort있지만 cstdlibstd::qsort하거나 qsort.
muru

내가 /있는 명명법에 익숙하지 않은 사람들에게는 파일에 사용 된 명명법 이 무엇인지 <C-w>의미 합니다. 그런 다음 미리보기 창을 닫는 데 사용할 수 있습니다 . CTRL-W:help:pc
danielson317

1

Vim의 C / C ++ 파일 유형에는 "미리보기"기능을 지원하는 적절한 전처리 기능이 제공됩니다. 따라서 completeopt 옵션에 "미리보기"를 추가하고 삽입 모드 완료시 기능 서명을보십시오.

일반 모드에서는 CTRL + W}를 사용하여 미리보기 창에서 함수 선언을 수동으로 열 수 있습니다.



0

YouCompleteMe를 설치하십시오. 커서를 식별자 위에 놓으면 YcmCompleter GetDoc명령을 입력 하여 하단의 작은 미리보기 창에 문서를 가져옵니다. 파이썬 및 c / c ++와 같은 많은 언어에서 작동합니다.

Youcompleteme는 자동 완성 기능 중에 미리보기 창도 표시합니다. 문서 미리보기의 동작을 g:ycm_autoclose_preview_window_after_completion변수로 사용자 정의 할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.