สั้นฉันกำลังค้นหาคุณสมบัติการเติมข้อความอัตโนมัติที่ใช้งานได้สำหรับเครื่องมือแก้ไข Vim ฉันได้ถกเถียงกันมาก่อนว่า Vim แทนที่ IDE ภายใต้ Linux อย่างสมบูรณ์และแม้ว่ามันจะเป็นจริง แต่ก็ไม่มีคุณสมบัติที่สำคัญอย่างใดอย่างหนึ่ง: การเติมข้อความอัตโนมัติ
ฉันรู้เกี่ยวกับCtrl+ N, บูรณาการเจริญงอกงาม ctags , Taglist , cppcompleteและOmniCppComplete อนิจจาสิ่งเหล่านี้ไม่ตรงกับคำอธิบายของฉันเกี่ยวกับ“ การเติมข้อความอัตโนมัติที่ทำงาน:”
- Ctrl+Nทำงานอย่าง (เท่านั้น) ถ้าคุณได้ forgotton วิธีการสะกดหรือ
class
while
โอ้ดี - Ctagsให้ความรู้พื้นฐานแก่คุณ แต่มีข้อเสียมากมาย
- Taglistเป็นเพียงเสื้อคลุม Ctags และเป็นเช่นนั้นสืบทอดส่วนใหญ่ของข้อเสีย (แม้ว่ามันจะทำงานได้ดีสำหรับการประกาศรายการ )
- cppcompleteใช้งานไม่ได้ตามที่สัญญาและฉันไม่สามารถเข้าใจได้ว่าฉันทำอะไรผิดหรือหาก "ทำงาน" ถูกต้องและข้อ จำกัด นั้นเกิดจากการออกแบบ
- OmniCppCompleteดูเหมือนจะมีปัญหาเช่นเดียวกับ cppcomplete เช่นการเติมข้อมูลอัตโนมัติไม่ทำงานอย่างถูกต้อง นอกจากนี้
tags
ไฟล์จะต้องได้รับการอัพเดตอีกครั้งด้วยตนเอง
ฉันตระหนักถึงความจริงที่ว่าแม้แต่ IDE ที่ทันสมัยและเต็มไปด้วยลมหายใจนั้นก็ไม่ได้นำเสนอโค้ด C ++ ที่สมบูรณ์ นั่นเป็นเหตุผลที่ฉันยอมรับการขาด Vim ในพื้นที่นี้จนถึงขณะนี้ แต่ฉันคิดว่าระดับพื้นฐานของการเติมโค้ดให้สมบูรณ์นั้นไม่ได้ถามมากเกินไปและในความเป็นจริงนั้นจำเป็นสำหรับการใช้งานอย่างมีประสิทธิภาพ ดังนั้นฉันกำลังค้นหาสิ่งที่สามารถทำได้อย่างน้อยสิ่งต่อไปนี้
การรับรู้ไวยากรณ์ cppcomplete สัญญา (แต่ไม่ส่งมอบให้ฉัน) ถูกต้องขอบเขตตระหนักถึงการเติมอัตโนมัติต่อไปนี้:
variableName.abc variableName->abc typeName::abc
และจริงๆแล้วสิ่งอื่นใดก็ไร้ประโยชน์อย่างสมบูรณ์
configurability ฉันต้องระบุ (อย่างง่าย) ที่แหล่งไฟล์อยู่และด้วยเหตุนี้ที่สคริปต์ได้รับข้อมูลการทำให้สมบูรณ์อัตโนมัติจาก ในความเป็นจริงฉันมี Makefile ในไดเรกทอรีซึ่งระบุเส้นทางที่ต้องการรวม Eclipse สามารถตีความข้อมูลที่พบในนั้นทำไมไม่ใช้ Vim script เช่นกัน?
up-to-dateness ทันทีที่ฉันเปลี่ยนบางสิ่งในไฟล์ของฉันฉันต้องการให้การเติมข้อมูลอัตโนมัติสมบูรณ์เพื่อสะท้อนสิ่งนี้ ฉันไม่ต้องการที่จะทริกเกอร์ด้วยตนเอง
ctags
(หรือสิ่งที่เทียบเท่า) นอกจากนี้การเปลี่ยนแปลงควรเพิ่มขึ้นเช่นเมื่อฉันเปลี่ยนไฟล์เพียงไฟล์เดียวก็ไม่สามารถยอมรับได้อย่างสมบูรณ์สำหรับctags
การแยกวิเคราะห์แผนผังไดเรกทอรีทั้งหมด (ซึ่งอาจมีขนาดใหญ่)
ฉันลืมอะไรไปหรือเปล่า อย่าลังเลที่จะอัปเดต
ฉันพอใจกับการกำหนดค่าค่อนข้างมากและ / หรือการแก้ไข แต่ฉันไม่ต้องการเขียนโปรแกรมตั้งแต่ต้นและฉันไม่สามารถดีบักสคริปต์ Vim ได้ดี
บันทึกย่อสุดท้ายฉันชอบสิ่งที่คล้ายกันสำหรับ Java และ C # แต่ฉันเดาว่ามันมากเกินกว่าที่จะคาดหวัง: ctags
เฉพาะแจงไฟล์โค้ดและทั้ง Java และ C # มีเฟรมเวิร์กที่เตรียมไว้ล่วงหน้าจำนวนมากที่จะต้องทำดัชนี น่าเสียดายที่การพัฒนา. NET ที่ไม่มี IDEนั้นเป็น PITA มากกว่า C ++
clang_complete
เป็นเทคนิคที่ดีที่สุด แต่ช้าเกินไปเนื่องจากไม่มีการแคชผลลัพธ์และการคอมไพล์บางส่วน ฉันต้องยอมรับว่าฉันไม่ได้ลองคำตอบทั้งหมดเพราะบางคนต้องการการตั้งค่าที่ซับซ้อนและใช้เวลานาน ฉันจะกลั้นลมหายใจของฉันสำหรับปลั๊กอินที่ใช้งานได้ในขณะนั้นเสียงดังกราวในที่สุดช่วยให้นักพัฒนาสามารถสร้าง AST จากแหล่ง C ++ (จนถึงขณะนี้ไม่มีตัวแยกวิเคราะห์ฟรีที่ดีสำหรับ C ++ ที่มี)
clang_complete
มาแล้วหรือยัง? มันสามารถใช้libclang
กับการแคชตอนนี้และควรเร็วขึ้น
formatted like this
)
sh
(หมายถึงมันอยู่ในห้องสมุดของฉัน) และตามด้วยตัวย่อของชั้นเรียนของฉัน ตัวอย่างเช่นshP
สำหรับParser
ชั้นเรียน จากนั้นสิ่งที่คุณต้องทำคือเขียนshP
และกด CTRL + p (หรือ CTRL + n ถ้าคุณต้องการ) และรับสมาชิกชั้นเรียนจากการใช้งานครั้งสุดท้ายเป็นครั้งแรก (หรือคนแรกไปจนถึงสุดท้ายถ้า CTRL + n)