วิธีรับ C + + กรอกอัตโนมัติอัจฉริยะ


32

บรรณาธิการบางคน (เช่น visual studio บน windows) ทำการเติมข้อความอัตโนมัติ C ++ ซึ่งเข้าใจ C ++ ตัวอย่างเช่นกำหนด:

#include <vector>

int main(void) {
  std::vector<int> v;
  v.i

ในสตูดิโอภาพอัตโนมัติเสร็จรู้วิธีการเดียวในการเริ่มต้นที่ที่มีฉันเป็นstd::vector<int>insert

เป็นไปได้ที่จะได้รับการเติมข้อความอัตโนมัติประเภทนี้เป็นกลุ่มหรือไม่?


3
ปลั๊กอิน YouCompleteMeสามารถเรียนรู้แง่การเติมข้อความอัตโนมัติและสามารถเข้าใจภาษา C ครอบครัว
alxndr

@alxndr เอกสารประกอบค่อนข้างสับสนสำหรับฉันในกรณีที่ติดตั้งด้วย vundle และทันทีที่ฉันเริ่มต้นกับมันเซิร์ฟเวอร์ YCM ขัดข้อง!
Abhinav Gauniyal

YCM ใช้งานได้ดีสำหรับฉันเว้นแต่ว่าฉันมีเทมเพลตหนัก (boost.geo) ที่มันเพิ่ม laoooots ของ laod ให้กับระบบ การตั้งค่าของฉันเป็นระเบียบขณะที่ยากที่จะส่วนสารสกัดจาก YCM ...
โยฮันเน

@yo 'คำถามนี้ค่อนข้างเฉพาะเจาะจงกับการใช้ vim กับ C ++ วิธีแก้ปัญหาสำหรับมันอาจจะไม่ใช้กับคนที่ใช้ Vim เขียน Perl (และในทางกลับกัน) ดังนั้นc ++ดูดีสำหรับฉัน แต่แน่นอนว่าVi และ Vim Metaเป็นสถานที่ที่เหมาะสมในการพูดคุยกัน
Derobert

2
@AbhinavGauniyal ฟังดูคล้ายกับปัญหาที่ฉันเคยเห็นเมื่อใช้ YCM คุณใช้ระบบอะไร สำหรับ OSX ดูที่นี่ ฉันไม่ได้ใช้ MacVim แต่ฉันติดตั้ง CMake ด้วย Homebrew แล้วฉันcded ไปยังไดเรกทอรีปลั๊กอิน YCM ( ~/.vim/bundleสำหรับผม) ./install --clang-completerและวิ่ง
bsmith89

คำตอบ:


28

ฉันชอบclang_complete มากสำหรับเรื่องนี้ มันต้องมีเสียงดังกราวด์และคุณต้องบอกว่า libclang อยู่ในระบบของคุณที่ไหน หลังจากนั้นก็ใช้งานได้อย่างยอดเยี่ยม

ผู้คนอาจแนะนำ YouCompleteMe แต่บอกตามตรงว่าปลั๊กอินนั้นเต็มไปด้วยสิ่งที่บอกว่าทำและมันต้องติดตั้งหลายขั้นตอนมากเกินไป ฉันยังมี segfault Vim หลายต่อหลายครั้ง ฉันไม่มีความสุขกับ clang_complete

นี่คือสิ่งที่ฉันได้รับเมื่อฉันพิมพ์v.:เสียงดังกราวสมบูรณ์


4
ตกลง ฉันมีปัญหามากมายกับ YCM (รวมถึง segfaults ที่กล่าวถึง) และหลังจากการตั้งค่าหลายชั่วโมงฉันก็ไม่เคยทำงานให้เต็มที่
CharlesL

1
ฉันให้เซิร์ฟเวอร์ YCM เกิดข้อผิดพลาดหลายครั้งรอคอยที่จะ clang_complete นี่คือข้อมูลที่เกี่ยวข้องสำหรับผู้ใช้รายอื่น: github.com/Rip-Rip/clang_complete/blob/master/doc/…
Abhinav Gauniyal

1
ฉันมีสิ่งที่ตรงกันข้าม YCM ทำงานได้ดี (แม้ว่าจะเป็น PITA ที่จะติดตั้ง) แต่เสียงดังกราวไม่เคยทำงาน ...
Sardathrion - Reinstate Monica

คุณสามารถซ่อนทั้งหมดเพื่อดูรหัสสองสามบรรทัดได้หรือไม่
แมตต์ซี

@ MatthewCliatt ซ่อนอะไรนะ? เมนูป๊อปอัพ ไม่มีอะไรพิเศษในรหัส มันreturn 0อยู่ใต้เมนูป๊อปอัพนั้น
akshay

8

ปลั๊กอิน YouCompleteMe ( Link ) นั้นใช้งานได้ดีเยี่ยมสำหรับฉัน มันใช้ libclang เพื่อสร้างคุณสมบัติเติมข้อความอัตโนมัติให้เสร็จสมบูรณ์ถูกต้อง

มันมีการปรับแต่งมากมายโดยเฉพาะอย่างยิ่งเมื่อทำงานกับการรวบรวมธง คุณสามารถแก้ไข "ตัวสร้างการตั้งค่าสถานะ" เพื่อแก้ไขสคริปต์หลามต่อโครงการ ( ตัวอย่าง ) แต่สำหรับฉันข้อได้เปรียบหลักคือสนับสนุนฐานข้อมูลการรวบรวม Clang ( ลิงก์! ) ซึ่งหมายความว่าคุณสามารถรวบรวมรหัสของคุณตามปกติและขอให้ส่งเสียงดังกราวให้กระจายธงทั้งหมดที่ใช้สำหรับการรวบรวมและใช้ธงเหล่านั้นด้วย YouCompleteMe มีประโยชน์มากถ้าคุณต้องการให้เครื่องมือการเติมข้อความอัตโนมัติของคุณตระหนักถึงคำจำกัดความแมโครของคุณหรือตำแหน่งของไฟล์ส่วนหัวทั้งหมดในระบบของคุณโดยไม่ต้องพยายามพิมพ์ด้วยตนเอง


3

YouCompleteMe นั้นไม่ใช่เรื่องยากที่จะติดตั้งและมันค่อนข้างมีเสถียรภาพสำหรับฉันฉันได้ย้ายจาก clang_complete ไปยัง YouCompleteMe เมื่อหลายปีก่อน สิ่งหนึ่งที่ฉันเห็นด้วยก็คือมันเต็มไปด้วยประวัติความเป็นมาที่ยิ่งใหญ่การอ้างอิงภายในจำนวนมากและการสนับสนุนหลายภาษาที่คุณอาจไม่สนใจ แต่ก็จะจบลงด้วยการโคลน submodules นั่นเป็นปัญหาของ YouComplemeMe แต่ก็ยังใช้งานได้

ฉันทำงานด้วยทางแยกโดยมีวัตถุประสงค์พิเศษเพื่อสนับสนุน C ++ ที่ดีกว่าคุณสามารถตรวจสอบ gif นี้โดยแสดงว่า:

https://s3.amazonaws.com/f.cl.ly/items/1e2F0A123h331c1G0L0R/SadBart.gif

มันใช้ประโยชน์จากข้อมูลพารามิเตอร์ใหม่ที่เสียงดังกราวสามารถให้คุณอาจเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้จากบทความนี้ของฉัน: http://nosubstance.me/articles/2015-01-29-better-completion-for-cpp/


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