ฉันจะให้ 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เป็นข้อเสนอแนะที่ยอดเยี่ยมหากคุณมี manpages C และ C ++ ( manpages-posix-devและlibstdc++-X.Y-docแพ็คเกจบนระบบที่ใช้ Debian) แล้วmanควรใช้ old old ธรรมดา
muru

คำตอบ:


8

หากคุณสามารถตั้งค่าYouCompleteMeได้ก็รองรับ C, C ++, JavaScript, Go และภาษาอื่น ๆ นี่มันใช้งานจริง:

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

เป็นบิตที่น่ารำคาญที่จะติดตั้งและเมื่อติดตั้งคุณต้องกำหนดค่าสำหรับ C และ C ++.ycm_extra_conf.pyโดยการสร้าง ฉันยกหนึ่งจากrepo นี้และได้รับผลกระทบนี้


4
"น่ารำคาญนิดหน่อยที่จะติดตั้ง" ... นั่นเป็นการพูดเกินจริง ถึงกระนั้นก็ดีมาก ^ _ ~
Sardathrion - Reinstate Monica

4
มีวิธีใดที่จะบังคับให้ป๊อปอัปเสร็จสมบูรณ์เปิดอยู่ในขณะที่พิมพ์อาร์กิวเมนต์ของฟังก์ชันหรือไม่ ตัวอย่างเช่นทันทีที่คุณพิมพ์อักษรตัวแรกของอาร์กิวเมนต์แรกqsort(aหน้าต่างป๊อปอัปจะหายไปทำให้ยากต่อการจดจำอาร์กิวเมนต์ต่อไป
thiagowfx

1
แต่มันเพิ่งแสดงต้นแบบของฟังก์ชั่น วิธีทำให้แสดงความคิดเห็น doxygen (เช่น Eclipse ทำกับ javadocs)? ฉันหมายถึงพารามิเตอร์เอาต์พุตหมายเหตุการอ้างอิง ...
Zeta.Investigator

1
@ Zeta.Investigator สิ่งหนึ่งที่ฉันใช้อย่างมากใน Python คือYcmCompleter GoToซึ่งมักจะส่งคุณไปยังที่ซึ่งฟังก์ชัน / คลาสนั้นถูกกำหนดในโค้ด นั่นคือบรรทัดที่อยู่เหนือ docstring ซึ่งจะแสดงรายการทุกอย่างที่คุณขอ ฉันไม่แน่ใจว่าการแสดงความคิดเห็นแบบอินไลน์อยู่ในที่เดียวกันใน C / Java / C ++
user1717828

8

สำหรับ C การกดปุ่มKคำหลักจะเป็นการดึง manpage ในตัวขึ้นมาโดยตรง ตัวอย่างเช่นวางเคอร์เซอร์บนprintfคำหลัก:

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

ตอนนี้กดK(ตัวพิมพ์ใหญ่ K) และ manpage สำหรับ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

ดูเหมือนว่าจะทำงานนอกกรอบใน Distros ที่ได้จาก Debian ทั้งหมดที่ฉันได้ลองใช้มาโดยไม่จำเป็นต้องมีการกำหนดค่าเฉพาะ


1
นั่นคือ manpage ของprintf(1)คำสั่งไม่ใช่printf(3)ฟังก์ชัน ในกรณีใด ๆ การจัดการฟังก์ชั่น C มาจาก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


คุณยังสามารถใช้ฟังก์ชัน "include-search" ในตัวของ Vim ได้: กด[iเพื่อพิมพ์ "ลายเซ็น" ของคำใต้เคอร์เซอร์ในบรรทัดคำสั่ง:

[ผม

:help include-searchดู


1
[iแปลก การทำงานสำหรับstdlib.hและqsortแต่ไม่cstdlibและหรือเพียงแค่std::qsort qsort
muru

สำหรับผู้ที่ไม่คุ้นเคยกับการตั้งชื่อในขณะที่ฉันเป็น / <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ตัวแปร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.