Este posibil să aveți nume de funcții, variabile etc. completate automat vim atunci când îl utilizați pentru a programa?

Multe IDE completează automat numele funcțiilor, variabilele, numele metodelor etc., ca tipuri de utilizatori. Cele mai bune completează numele bazate atât pe biblioteca încorporată a limbii, cât și pe ceea ce a fost deja definit în alte fișiere ale aceluiași program.

De exemplu, în timp ce scriu următoarele Program Python:

hungy = True def eatFood(food): pass if hungry: eatF 

linia eatF ar afișa automat eatFood() ca opțiune de completare automată disponibilă.

Are Vim această capacitate? Dacă da, cum îl pot activa?

Răspuns

Există multe arome diferite de completare automată în vim. O modalitate ar putea fi utilizarea SuperTab . Aceasta oferă o modalitate de a utiliza completarea filelor mai mult sau mai puțin în orice moment. Acest lucru vă va permite să apăsați pe Tab după ce ați „tastat parțial cuvântul pentru a obține o listă de finalizare. De exemplu, tastați eatF urmat de Tab pentru a extinde la eatFood.

Vă rugăm să rețineți : aceste imagini leagă toate exemplele de gifuri în acțiune.

mg src = „https://i.stack.imgur.com/dVuOT.png” alt = „completări supertab” title = „Faceți clic pentru a vedea un gif”>

Vim are alte opțiuni excelente. Ar trebui să citiți :h ins-completion pentru a vedea varietatea opțiunilor de completare încorporate. Folosind vim „s CtrlX Ctrl O , combinat cu un plugin care conține python, cum ar fi jedi , poate da o aromă completă. Jedi poate fi configurat pentru a oferi documentație despre omni-completare (asta face CtrlX Ctrl O ). Apoi, documentația pentru candidații de finalizare va apărea într-o fereastră divizată.

mg src = „https://i.stack.imgur.com/etSIu.png” alt = „ctrlxctrlo complete” title = „Faceți clic pentru a vedea un gif”>

Folosind pluginuri similare, dar opțiuni diferite conduc la tot felul de comportamente. Este posibil, de exemplu, să nu trebuiască să solicitați completarea automată (dacă „căutați acest lucru”). În schimb, după ce tastați un număr de litere (de exemplu, 2 sau 3) dintr-un cuvânt, un plugin poate încercați să oferiți în mod inteligent completări posibile într-un meniu.

mg src = „https://i.stack.imgur.com/gtNK0.png” alt = ” introduceți descrierea imaginii aici „title =” Faceți clic pentru a vedea un gif „>

Deci, răspunsul scurt este un da! Dar procesul de configurare poate fi un pic complicat. Cred că este un pas în lunga scară de masterizare a vim.

Comentarii

  • Am ‘ le-am încercat pe toate și revin mereu la SuperTab, este ‘ cel mai puțin intruziv.
  • De asemenea, îmi place foarte mult pluginul YouCompleteMe, întrucât sugerează așa cum tastați și puteți alege sau ignora sugestii. Da, vizual este greu de ignorat, dar este foarte neintruziv în fluxul meu de lucru, deoarece requi Res mai puține lovituri de cheie.
  • Am ‘ am schimbat animațiile pentru a fi ” la clic pe „, în sensul că sunt legate de animațiile gif.
  • Nu pot ‘ să vă folosesc YouCompleteMe pe computerul meu de lucru deoarece nu ‘ nu aveți root pentru a instala dependențele, SuperTab este de departe următoarea cea mai bună alegere.
  • @mixedmath În cazul meu superTab nu are ‘ nu funcționează.

Răspuns

O astfel de funcționalitate – adică, căutarea fișierului curent ( și toate fișierele deschise) pentru completarea automată, ar trebui să fie activate implicit cu Ctrl+P:

captură de ecran a completării automate în uz

Puteți merge la n sugestie ext cu Ctrl+N, p sugestie revioasă cu Ctrl+P și selectați-l tastând orice literă (care va fi adăugată imediat după sugestie).

Comentarii

  • Pentru editor (Jasper): Probabil că vreau să scriu din nou ceva ce am scris recent, nu ceva ce voi ‘ voi scrie în viitor sau care este la începutul fişier. Prin urmare, ^P este un IMHO mai natural. În caz contrar, vă mulțumim pentru editare (sper că am dat clic pe butonul din dreapta și ați obținut +2).
  • Da, am obținut acele puncte imaginare de internet 🙂 Am crezut întotdeauna că lista de sugestii va fi sortată alfabetic. ..
  • @Jasper ordinea de apariție este (cel puțin pentru mine cu siguranță, a se vedea și mai sus: world,word,wood și nu invers).Deci, ^P este ultima finalizare utilizată, care este foarte utilă (rareori merg mai departe de 3 articole din listă, chiar și într-un fișier lung).
  • protip : inoremap <C-Space> <C-N>

Răspuns

Vim are suport pentru finalizarea nativă . Puteți citi despre diferitele completări pe care le acceptă Vim la :h ins-completion.

În general, pentru toate scopurile pe care le-am găsit, completările ins sunt suficiente pentru placerea mea , cu toate acestea, există unele pluginuri de completare care adaugă mai multă valoare dincolo de ceea ce oferă ins-completări. NeoComplete , YCM (YouCompleteMe) sunt câteva pentru același lucru. Sunt mai avansați în sensul că încearcă să combine diferite tipuri de completări cu mai multă precizie și au, de asemenea, mecanisme avansate de stocare în cache, astfel încât tind să fie mai rapide. YCM merge chiar și în măsura în care funcționează cu compilatoare / utilitare externe pentru a oferi IntelliSense mai bun.

Răspuns

Da, scripturi de completare automată căci vim există. Cea mai bună alegere depinde de limbajul de programare. Deoarece codul dvs. de exemplu este Python, vă sugerăm să aruncați o privire la Jedi . Construiește pe deasupra că există Tu mă completezi , care are și suport pentru alte limbi, dar uneori este văzut ca fiind prea mare. Pentru alte limbi, puteți naviga prin setul lung pe scripturi vim .

Răspuns

În modul inserare, tastați primele două caractere ale unui cuvânt, apoi apăsați:

Ctrl-N to insert the next matching word; or Ctrl-P to insert the previous matching word. 

Acest lucru este deosebit de util atunci când introduceți numele variabilelor dintr-un program.

Opțiunea „completă” controlează unde sunt căutate cuvintele cheie (include fișiere, fișiere de etichete, tampoane și multe altele).

Opțiunea „completeopt” controlează modul în care apare finalizarea (de exemplu, dacă este afișat un meniu).

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *