Làm cách nào để Vim hiển thị tài liệu về chức năng C / C ++?


17

Hầu hết các trình soạn thảo có một tính năng như khi bạn nhấn một số phím bằng cách đặt dấu mũ lên một hàm, nó sẽ bật tài liệu của hàm đó cùng với số lượng và loại đối số mà hàm đó sử dụng.

Tôi đã tự hỏi liệu Vim có cung cấp hỗ trợ như vậy. Ví dụ, trong khi mã hóa bằng C, tôi sử dụng hàm dựng sẵn qsort(). Vì tôi không chắc chắn về loại và số lượng đối số cần có, tôi muốn biết nó mà không thoát khỏi Vim. Có thể không?


2
Không chắc chắn đây là chính xác những gì bạn muốn, nhưng nếu bạn đưa ra giá trị đúng cho tùy chọn 'keywordprg'(tên của chương trình có thể xử lý tài liệu cho ngôn ngữ bạn muốn), thì bằng cách nhấn Kvào từ khóa (có thể là tên của một chức năng), bạn sẽ nhận được thông tin bạn muốn. Ví dụ: nếu bạn cài đặt cppman( github.com/aitjcize/cppman ) và thêm autocmd bên trong vimrc của bạn, chẳng hạn như autocmd FileType cpp setlocal keywordprg=cppman, thì cppmannên xử lý tài liệu bên trong bộ đệm c ++. Không được thử nghiệm mặc dù.
saginaw

2
@saginaw Mặc dù cppmanlà một gợi ý tuyệt vời, nếu bạn đã cài đặt các trang web C và C ++ ( manpages-posix-devlibstdc++-X.Y-doccác gói trên các hệ thống dựa trên Debian), đơn giản là cũ mansẽ hoạt động.
muru

Câu trả lời:


8

Nếu bạn có thể thiết lập YouCompleteMe , nó hỗ trợ C, C ++, JavaScript, Go và một số ngôn ngữ khác. Đây là hành động:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Việc cài đặt hơi khó chịu và một khi đã cài đặt, bạn cần định cấu hình cho C và C ++ bằng cách tạo một .ycm_extra_conf.py. Tôi nâng một cái từ repo này , và có được hiệu ứng này.


4
"Hơi khó chịu khi cài đặt", ... Đó là một cách nói nhẹ nhàng. Tuy nhiên, nó là rất tốt. ^ _ ~
Sardathrion - Phục hồi Monica

4
Có cách nào để buộc các cửa sổ bật lên hoàn thành vẫn mở trong khi các đối số chức năng được gõ không? Ví dụ: ngay khi bạn nhập chữ cái đầu tiên của đối số đầu tiên qsort(a, cửa sổ bật lên sẽ biến mất, gây khó khăn cho việc nhớ các đối số tiếp theo.
thiagowfx

1
Nhưng nó chỉ hiển thị nguyên mẫu của chức năng. Làm cách nào để làm cho nó hiển thị các nhận xét doxygen của nó (giống như Eclipse làm với javadocs)? Ý tôi là thông số, đầu ra, ghi chú, refs ...
Zeta.Investigator

1
@ Zeta.Investigator Một điều tôi sử dụng nhiều trong Python là YcmCompleter GoTo, nó thường đưa bạn đến nơi hàm / lớp được định nghĩa trong mã. Đó là dòng ngay phía trên chuỗi, liệt kê mọi thứ bạn yêu cầu. Tôi không chắc chắn nếu bình luận nội tuyến ở cùng một vị trí trong C / Java / C ++.
dùng1717828

8

Đối với C, nhấn Kvào từ khóa sẽ kéo trực tiếp trang chủ tích hợp. Chẳng hạn, đặt con trỏ vào printftừ khóa:

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

Bây giờ, nhấn K(chữ hoa K) và trang chủ printfsẽ xuất hiện trong 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

Điều này dường như hoạt động tốt trong tất cả các bản phát hành có nguồn gốc từ Debian mà tôi đã dùng thử, không yêu cầu cấu hình cụ thể.


1
Đó là trang chủ của printf(1)lệnh, không phải printf(3)chức năng. Trong mọi trường hợp, các trang của hàm C là từ manpages-dev, thường được cài đặt theo mặc định, nhưng không phải luôn luôn và các hàm POSIX nằm trong manpages-posix-dev- thường không được cài đặt theo mặc định, cũng không phải là tài liệu C ++ ( libstdc++-X.Y-doc).
muru

5

Nếu bạn muốn có tài liệu phù hợp , plugin trong bình luận của saginaw dường như đáp ứng nhu cầu C ++ của bạn. Tôi không biết về một ngôn ngữ chung chung nhưng có lẽ bạn có thể tìm thấy các lựa chọn thay thế cho các ngôn ngữ khác trên vim.org.


Nếu…

  • mã của bạn đã được lập chỉ mục với ctags,
  • chỉ mục của bạn cũng bao gồm thư viện tiêu chuẩn,
  • và tất cả những gì bạn muốn là một gợi ý ,

bạn có thể sử dụng <C-w>}để mở định nghĩa của từ khóa dưới con trỏ trong cửa sổ xem trước. YMMV, tất nhiên.

Xem :help preview-window, :help tags:help ctags.


Bạn cũng có thể sử dụng chức năng "bao gồm tìm kiếm" tích hợp của Vim: nhấn [iđể in "chữ ký" của từ dưới con trỏ trong dòng lệnh:

[Tôi

Xem :help include-search.


1
[ithật kỳ lạ Nó hoạt động cho stdlib.hqsort, nhưng không cstdlibstd::qsorthoặc chỉ qsort.
muru

Đối với những người không quen thuộc với danh pháp như tôi / đã <C-w>có nghĩa CTRL-Wlà danh pháp được sử dụng trong các :helptệp. Sau đó, bạn có thể sử dụng :pcđể đóng cửa sổ xem trước.
danielson317

1

Loại tệp C / C ++ của Vim đi kèm với chức năng omnicompletion phong nha, hỗ trợ chức năng "xem trước". Vì vậy, hãy thêm "xem trước" vào tùy chọn hoàn thành của bạn và xem chữ ký hàm khi bạn hoàn thành chế độ chèn.

Ở chế độ bình thường, bạn có thể CTRL + W} để mở khai báo hàm trong cửa sổ xem trước theo cách thủ công.


1

Như đã đề cập, nhấn Kvào từ khóa hoạt động bằng cách tìm kiếm một trang người đàn ông. Để nhận trang man C ++, bạn có thể thử https://github.com/aitjcize/cppman (trang này có "trang man" từ cplusplus.com và cppreference.com).


0

Cài đặt YouCompleteMe. Khi bạn đặt con trỏ lên một mã định danh, hãy nhập YcmCompleter GetDoclệnh để lấy tài liệu trong một cửa sổ xem trước nhỏ ở phía dưới. Nó hoạt động trên nhiều ngôn ngữ như python và c / c ++.

Youcompleteme cũng hiển thị cửa sổ xem trước trong tính năng tự động hoàn tất của nó. Bạn có thể tùy chỉnh hành vi của bản xem trước tài liệu với g:ycm_autoclose_preview_window_after_completionbiến.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.