การเติมข้อความอัตโนมัติใน Vim


258

หลังจากการฝึกฝนมาเป็นเวลานานฉันก็เปลี่ยนมาเป็นกลุ่มในที่สุด แต่ฉันมีปัญหากับการเติมข้อความอัตโนมัติ ฉันจะมีข้อเสนอแนะรหัสในขณะที่ฉันพิมพ์ได้อย่างไร

ฉันมักจะพัฒนา PHP, Ruby, HTML, C และ CSS

คำตอบ:


143

คุณสามารถใช้ปลั๊กอินเช่นAutoComplPopเพื่อให้ได้รหัสที่สมบูรณ์โดยอัตโนมัติเมื่อคุณพิมพ์

2015 แก้ไข: ฉันใช้YouCompleteMeทันที


10
แนะนำเป็นอย่างยิ่ง พยายามพิมพ์ CX CO, CP หรือ CN
Amjith

ฉันลองแล้ว แต่ดูเหมือนว่ามันใช้งานไม่ได้ .. อาจมีข้อขัดแย้งกับสคริปต์อื่น ..
diegocstn

1
คุณวางไฟล์ลงในไดเรกทอรีที่ระบุใน ~ / .vim หรือไม่
michaelmichael

1
@dieguitoweb ACP ไม่ทำงานกับไฟล์ทุกชนิดตามค่าเริ่มต้น คุณต้อง "แฮ็ค" เพื่อให้มันทำงานกับ JavaScript, ActionScript และ PHP ที่นี่ฉันอธิบายว่าฉันจะทำอย่างไร และนี่คือคำแนะนำอื่นสำหรับ PHP
romainl

ตอนนี้มันทำงานแล้ว :) ไฟล์ทั้งหมดอยู่ในไดเรกทอรีที่ถูกต้องแล้ว .. ฉันแค่แทนที่สคริปต์ด้วยการดาวน์โหลดใหม่จากที่เก็บ git และตอนนี้ก็ใช้ได้ ขอบคุณมาก
diegocstn

438

ใช้Ctrl- Nเพื่อรับรายการคำแนะนำคำศัพท์ขณะอยู่ในโหมดแทรก พิมพ์:help i_CTRL-Nเพื่อดูเอกสารของ Vim เกี่ยวกับฟังก์ชันนี้

นี่คือตัวอย่างของการนำเข้าพจนานุกรม Python ลงในกลุ่ม


15
ขอบคุณนี่ยอดเยี่ยม แต่ฉันจะมีรายการนี้แบบอัตโนมัติโดยไม่ต้องกด <ctrl + N> ได้อย่างไร
diegocstn

5
นั่นคือสิ่งที่ michaelmichael บอกคุณด้วยปลั๊กอินที่เขากล่าวถึง นอกจากนี้คุณอาจดู SuperTab
projecktzero

4
สำหรับการรองรับ CSS ให้เพิ่มขีดกลางสำหรับการเติมข้อความอัตโนมัติในตัวโดยการเพิ่ม 'set iskeyword + = -' ไปยัง. vimrc ของคุณ
mahalie

3
นี่เป็นวิธีที่ครอบคลุมและเป็นภาษาท้องถิ่นที่สุดในการดำเนินการ :-)
Srikant

5
@ Hi-Angel ส่วน 'auto' คือการกำหนดตัวเลือกโดยอัตโนมัติเพื่อให้คำสมบูรณ์และจะแข่งขันกับคำที่เลือกโดยอัตโนมัติ
CJBS


11

คุณสามารถเริ่มต้นจากในตัว omnifuncการตั้งค่าตัว

เพียงแค่ใส่:

filetype plugin on
au FileType php setl ofu=phpcomplete#CompletePHP
au FileType ruby,eruby setl ofu=rubycomplete#Complete
au FileType html,xhtml setl ofu=htmlcomplete#CompleteTags
au FileType c setl ofu=ccomplete#CompleteCpp
au FileType css setl ofu=csscomplete#CompleteCSS

ที่ด้านล่างของคุณ.vimrcจากนั้นพิมพ์<Ctrl-X><Ctrl-O>ในโหมดแทรก

ฉันมักจะพึ่งพาความสมบูรณ์ของ CSS นี้


สิ่งที่ไม่setlหมายถึง? ขอบคุณ
QED

ตกลงฉันเข้าใจแล้วมันหมายถึง setlocal แต่ทำไมเราต้อง setlocal ที่นี่
QED

ดูว่ามันรบกวนคุณอย่างไรเมื่อคุณเปิดไฟล์อื่นในบัฟเฟอร์เดียวกัน
ernix

2
@ernix จากลิงก์ของคุณ: บัฟเฟอร์ใน Vim คือ ... อินสแตนซ์ที่เปิดอยู่ของไฟล์ ...ฉันรู้เกี่ยวกับบัฟเฟอร์หน้าต่างและแท็บ แต่ฉันไม่รู้เกี่ยวกับการเปิดไฟล์อื่นในบัฟเฟอร์เดียวกัน สำหรับผมแล้วดูเหมือนว่าเมื่อคุณเปิดไฟล์มันจะเปิดในบัฟเฟอร์ใหม่เสมอและเพิ่มบัฟเฟอร์นั้นลงในรายการบัฟเฟอร์ ฉันรู้ว่ามีวิธีอื่น ๆ ที่ใช้บัฟเฟอร์เช่นรายการแก้ไขด่วน แต่ฉันไม่รู้เกี่ยวกับการเปลี่ยนไฟล์ที่อยู่ในบัฟเฟอร์ :h buffersพูดว่า: บัฟเฟอร์เป็นไฟล์ที่โหลดลงในหน่วยความจำสำหรับการแก้ไข ที่กล่าวว่าฉันใช้ Vim อย่างจริงจังเป็นเวลา 3 โมเท่านั้น และฉันก็เปิดรับการแก้ไขอย่างแน่นอน
JakeD

1
@ JakeD Ah ใช่ คุณถูก. ฉันใช้ "อินสแตนซ์" ความหมายในทางที่ผิด ฉันเข้าใจผิดว่าคุณกำลังพูดถึงกระบวนการที่มี PID ต่างกัน ขอโทษฉันลืมสิ่งที่ฉันพูดไป
ernix

6

นอกจากนี้ยังมีhttps://github.com/Valloric/YouCompleteMeและรวมถึงสิ่งต่าง ๆ เช่นเจไดและยังมีการแข่งขันที่คลุมเครือ จนถึงตอนนี้ฉันพบว่า YCM นั้นเร็วที่สุดในบรรดาสิ่งที่ฉันได้ลอง

แก้ไข: นอกจากนี้ยังมีใหม่บางอย่างเช่นhttps://github.com/maralla/completor.vim


6

ฉันเพิ่งค้นพบโปรเจ็กต์ที่เรียกว่าOniVimซึ่งเป็น front-end ของอิเล็กตรอนสำหรับ NeoVim ที่มาพร้อมกับการเติมข้อความอัตโนมัติที่ดีมากสำหรับหลายภาษานอกกรอบและเนื่องจากโดยทั่วไปมันเป็นเพียง wrapper รอบ NeoVim คุณจึงมีพลังเต็มเปี่ยม เมื่อ GUI ของคุณไม่ตรงตามความต้องการของคุณ มันยังอยู่ในช่วงการพัฒนา แต่ก็มีการปรับปรุงอย่างรวดเร็วและมีชุมชนที่ใช้งานอยู่รอบตัว ฉันใช้เสียงเรียกร้องมานานกว่า 10 ปีและเริ่มให้การทดสอบกับ Oni เมื่อไม่กี่สัปดาห์ที่ผ่านมาและในขณะที่มันมีข้อบกพร่องบางอย่างที่นี่ ฉันขอแนะนำอย่างยิ่งให้กับผู้ใช้ที่เป็นกลุ่มใหม่ที่ยังคงได้รับนิ้วมือของพวกเขา!

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

OniVim: https://www.onivim.io/


32
ให้ฉันจุดทั้งหมดของกลุ่มคือการใช้ขั้ว ... ถ้าฉันต้องการที่จะใช้แอปอิเล็กตรอนฉันจะใช้ vscode มีนามสกุลเป็นกลุ่ม ..
โมฮาเหม็ Benkedadra

2
@MohamedBenkedadra แต่นั่นจะทำให้คุณได้รับพลังเต็มที่จาก Vim หรือเปล่า? ฉันเป็นแฟนตัวยงของระบบรูปแบบการค้นหาและแทนที่สิ่งหนึ่งและฉันรู้สึกประหลาดใจหากปลั๊กอิน vim-emulation สนับสนุนสิ่งนั้น
SilverWolf - Reinstate Monica

3

ฉันใช้neocomplcacheประมาณครึ่งปี มันเป็นปลั๊กอินที่รวบรวมแคชของคำในบัฟเฟอร์ทั้งหมดของคุณแล้วให้พวกเขากรอกข้อมูลอัตโนมัติ

มีอาร์เรย์ของภาพหน้าจอในหน้าโครงการในลิงค์ก่อนหน้า Neocomplcache ยังมีตัวเลือกการกำหนดค่ามากมายซึ่งมีตัวอย่างพื้นฐานในหน้าโครงการด้วย

หากคุณต้องการความลึกเพิ่มเติมคุณสามารถดูหัวข้อที่เกี่ยวข้องในvimrcของฉัน- เพียงค้นหาคำว่า neocomplcache



1

หากคุณต้องการเติมแคชอัตโนมัติของบัฟเฟอร์ปัจจุบันของคุณเท่านั้นSupertabสามารถติดตั้งได้ง่ายกว่าระบบneocompleteสามารถทำงานบน Mac ที่ติดตั้งไว้ล่วงหน้าโดยไม่ต้องใช้ MacVim

คุณสามารถตรวจสอบทางเลือกอื่น ๆ ที่เป็นกลุ่มที่น่ากลัว


0

สำหรับ PHP, PadawanกับDeopleteเป็นโซลูชั่นที่ยอดเยี่ยมสำหรับการเติมข้อความอัตโนมัติ PHP ที่มีประสิทธิภาพใน Neovim ฉันลองหลายสิ่งหลายอย่างและปาดาวันทำงานอย่างมีเสน่ห์!

สำหรับกลุ่มคุณสามารถใช้Neocompleteแทน Deoplete ได้

ฉันเขียนบทความเกี่ยวกับวิธีสร้างVim PHP IDEถ้าใครสนใจ แน่นอนว่า Padawan เป็นส่วนหนึ่งของมัน


0

ตัวเลือกหนึ่งคือcoc.nvim

มันเร็วมากและการเสร็จสมบูรณ์นั้นยอดเยี่ยมเนื่องจากใช้ Intellisense การเติมข้อความอัตโนมัติแบบเดียวกับที่ VScode มี นอกจากนี้ยังมีความสามารถที่เป็นขุย ดังนั้นมันจะแสดงว่าคุณเป็นคุณอาจมีข้อผิดพลาด รองรับภาษามากมาย

อาจใช้เวลาเล็กน้อยในการตั้งค่าและกำหนดค่า แต่สิ่งที่ฉันเป็นเครื่องมือเติมข้อความอัตโนมัติที่ดีที่สุดสำหรับกลุ่มที่มีเป็นกลุ่ม

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