Är det möjligt att ha vim-autofullständiga funktionsnamn, variabler etc. när man använder det för att programmera?

Många IDE: er fyller automatiskt i funktionsnamn, variabler, metodnamn, etc. när användaren skriver. De bästa kompletterar namnen baserat både på språkets inbyggda bibliotek och vad som redan har definierats i andra filer i samma program.

Till exempel när jag skriver följande Python-program:

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

raden eatF visar automatiskt eatFood() som ett tillgängligt alternativ för automatisk komplettering.

Har Vim den här funktionen? Om så är fallet, hur kan jag aktivera det?

Svar

Det finns många olika smaker av autoslutförande i vim. Ett sätt kan vara att använda SuperTab . Detta ger ett sätt att använda tabb-komplettering mer eller mindre när som helst. Detta skulle göra det möjligt för dig att trycka på Tab efter att du ”delvis har skrivit in ordet för att få en kompletteringslista. Skriv till exempel eatF följt av Tab för att expandera till eatFood.

Observera : alla dessa bilder länkar till exempel-gifs i aktion.

mg src = ”https://i.stack.imgur.com/dVuOT.png” alt = ”supertab complete” title = ”Klicka för att se en gif”>

Vim har utmärkta andra alternativ. Du bör läsa :h ins-completion för att se olika inbyggda kompletteringsalternativ. Använda vim ”s CtrlX Ctrl O , kombinerat med ett pythonmedvetet plugin som jedi kan ge en kompletterande smak. Jedi kan konfigureras för att ge dokumentation om omni-komplettering (detta är vad CtrlX Ctrl O gör ). Då visas dokumentation för slutförande kandidater i ett delat fönster.

mg src = ”https://i.stack.imgur.com/etSIu.png” alt = ”ctrlxctrlo complete” title = ”Klicka för att se en gif”>

Att använda liknande plugins men olika alternativ leder till alla slags beteenden. Det är till exempel möjligt att inte behöva fråga om autoslutförande (om det är vad du är ute efter). I stället, efter att du har skrivit ett antal bokstäver (säg 2 eller 3) av ett ord, kan ett plugin försök att på ett intelligent sätt erbjuda möjliga kompletteringar i en meny.

mg src = ”https://i.stack.imgur.com/gtNK0.png” alt = ” ange bildbeskrivning här ”title =” Klicka för att se en gif ”>

Så det korta svaret är ja! Men konfigurationsprocessen kan vara lite komplicerad. Jag tänker på det som ett steg i den långa trappan för att behärska vim.

Kommentarer

  • Jag ’ har provat dem alla och jag kommer alltid tillbaka till SuperTab, det är ’ som är minst påträngande.
  • Jag gillar också YouCompleteMe-plugin-programmet, eftersom det föreslår som du-typ och du kan antingen välja eller ignorera förslag. Ja, visuellt är det svårt att ignorera det, men det är väldigt ointressant i mitt arbetsflöde eftersom det requi res färre tangenttryckningar.
  • Jag ’ har ändrat animationerna till att vara ” vid klick ”, i den meningen att de är länkade till gif-animationerna.
  • Jag kan ’ inte använda YouCompleteMe på min arbetsdator eftersom jag don ’ t har root för att installera beroenden, SuperTab är det absolut bästa valet.
  • @mixedmath I mitt fall är SuperTab ’ fungerar inte.

Svar

Sådan funktionalitet – dvs. söka i den aktuella filen ( och alla öppna filer) för automatisk komplettering, bör aktiveras som standard med Ctrl+P:

skärmdump av autoslutförande i bruk

Du kan gå till n ext-förslaget med Ctrl+N, p falskt förslag med Ctrl+P och välj det genom att skriva valfri bokstav (som läggs till direkt efter förslaget).

Kommentarer

  • Till redaktören (Jasper): Jag vill troligen skriva igen något som jag nyligen har skrivit, inte något jag ’ skriver i framtiden eller som är i början av fil. Därför är ^P mer naturligt IMHO. Annars tack för redigeringen (jag hoppas att jag klickade på högerknappen och du fick din +2).
  • Japp, jag fick de imaginära internetpunkterna 🙂 Jag har alltid trott att förslagslistan skulle sorteras alfabetiskt. ..
  • @Jasper ordning på utseendet är det (åtminstone för mig säkert, se även ovan: world,word,wood och inte tvärtom).Så ^P är den senast använda kompletteringen, vilket är väldigt praktiskt (jag går sällan längre än tre objekt i listan, även i en lång fil).
  • protip : inoremap <C-Space> <C-N>

Svar

Vim har stöd för att slutföra nativt . Du kan läsa om de olika kompletteringarna som Vim stöder på :h ins-completion.

I allmänhet, för alla ändamål som jag har hittat, räcker det med kompletteringar för min smak dock finns det några kompletteringsprogram som tillför mer värde utöver vad ins-kompletteringar erbjuder. NeoComplete , YCM (YouCompleteMe) är några för samma sak. De är mer avancerade i den meningen att de försöker kombinera olika typer av kompletteringar mer exakt, och de har också avancerade cachemekanismer, så de tenderar att vara snabbare. YCM går till och med i den utsträckningen att arbeta med externa kompilatorer / verktyg för att ge bättre IntelliSense.

Svar

Ja, automatisk kompletteringsskript för vim finns. Det bästa valet beror på ditt programmeringsspråk. Eftersom din exempelkod är Python föreslår jag att du tittar på Jedi . Bygg på det Du slutför mig finns, som också har stöd för andra språk, men ibland ses som för stort. För andra språk kan du bläddra igenom den långa uppsättningen på vim-skript .

Svar

I infogningsläge skriver du de första paret i ett ord och trycker sedan på:

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

Detta är särskilt användbart när du anger namn på variabler i ett program.

Alternativet ”komplett” styr var nyckelorden söks (inkluderar filer, taggfiler, buffertar med mera).

Alternativet ”completeopt” styr hur slutförandet sker (till exempel om en meny visas).

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *