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.
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 Ctrl–X 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 Ctrl–X Ctrl – O gör ). Då visas dokumentation för slutförande kandidater i ett delat fönster.
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.
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
:
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
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).
^P
mer naturligt IMHO. Annars tack för redigeringen (jag hoppas att jag klickade på högerknappen och du fick din +2).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).inoremap <C-Space> <C-N>