Er det mulig å ha vim automatisk komplette funksjonsnavn, variabler osv. Når du bruker det til å programmere?

Mange IDEer fullfører automatisk funksjonsnavn, variabler, metodenavn, etc. når brukeren skriver inn. De beste fullfører navnene basert på både språkets innebygde bibliotek og det som allerede er definert i andre filer i det samme programmet.

For eksempel når jeg skriver inn følgende Python-program:

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

linjen eatF vil automatisk vise eatFood() som et tilgjengelig alternativ for automatisk fullføring.

Har Vim denne muligheten? I så fall hvordan kan jeg aktivere det?

Svar

Det er mange forskjellige smaker av autofullføring i vim. En måte kan være å bruke SuperTab . Dette gir en måte å bruke fullføring av faner på mer eller mindre når som helst. Dette vil gjøre det mulig for deg å trykke Tab etter at du «delvis har skrevet ordet for å få en fullstendig liste. Skriv for eksempel eatF etterfulgt av Tab for å utvide til eatFood.

Vær oppmerksom på : alle disse bildene lenker til eksempler på gifs i aksjon.

mg src = «https://i.stack.imgur.com/dVuOT.png» alt = «supertab complete» title = «Klikk for å se en gif»>

Vim har utmerkede andre alternativer. Du bør lese :h ins-completion for å se mangfoldet av innebygde fullføringsalternativer. Bruke vim «s CtrlX Ctrl O , kombinert med et python-bevisst plugin som jedi kan gi en kompletterende smak. Jedi kan konfigureres til å gi dokumentasjon på omni-fullføring (dette er hva CtrlX Ctrl O gjør ). Deretter vises dokumentasjon for fullføringskandidatene i et delt vindu.

mg src = «https://i.stack.imgur.com/etSIu.png» alt = «ctrlxctrlo complete» title = «Klikk for å se en gif»>

Ved å bruke lignende plugins, men forskjellige alternativer fører til all slags oppførsel. Det er for eksempel mulig å ikke trenge å be om autofullføring (hvis det er det du er ute etter). I stedet, etter at du har skrevet inn et antall bokstaver (si 2 eller 3) av et ord, kan et plugin prøv å tilby mulige utførelser på en intelligent måte i en meny.

mg src = «https://i.stack.imgur.com/gtNK0.png» alt = » skriv inn bildebeskrivelse her «title =» Klikk for å se en gif «>

Så det korte svaret er et ja! Men konfigurasjonsprosessen kan være litt komplisert. Jeg tenker på det som et skritt i den lange trappen for å mestre vim.

Kommentarer

  • Jeg ‘ har prøvd dem alle, og jeg kommer alltid tilbake til SuperTab, det er ‘ som er minst påtrengende.
  • Jeg liker også YouCompleteMe-pluginet, da det antyder som du skriver, og du kan enten velge eller ignorere forslag. Ja, visuelt er det vanskelig å ignorere det, men det er veldig lite påtrengende i arbeidsflyten min fordi den requi res færre tastetrykk.
  • Jeg ‘ har endret animasjonene til å være » ved å klikke «, i den forstand at de er koblet til gif-animasjonene.
  • Jeg kan ‘ ikke bruke YouCompleteMe på arbeidsdatamaskinen min fordi jeg don ‘ t har rot til å installere avhengighetene, SuperTab er det klart beste valget.
  • @mixedmath I mitt tilfelle er SuperTab ikke ‘ fungerer ikke.

Svar

Slik funksjonalitet – dvs. å søke i den nåværende filen ( og alle åpne filer) for automatisk fullføring, bør være aktivert som standard med Ctrl+P:

skjermbilde av autofullføring i bruk

Du kan gå til n ext-forslaget med Ctrl+N, p falske forslag med Ctrl+P og velg den ved å skrive en bokstav (som blir lagt til rett etter forslaget).

Kommentarer

  • Til redaktøren (Jasper): Jeg vil mer sannsynlig skrive igjen noe jeg har skrevet nylig, ikke noe jeg ‘ skriver i fremtiden, eller som er i begynnelsen av fil. Derfor er ^P mer naturlig IMHO. Ellers takk for redigeringen (jeg håper jeg klikket på høyre knapp og du fikk +2).
  • Jepp, jeg fikk de imaginære internettpunktene 🙂 Jeg har alltid trodd at forslagslisten ville bli sortert alfabetisk. ..
  • @Jasper rekkefølgen på utseendet det er (i hvert fall for meg absolutt, se også ovenfor: world,word,wood og ikke omvendt).Så ^P er den siste brukte fullføringen, noe som er veldig nyttig (jeg går sjelden lenger enn 3 elementer i listen, selv i en lang fil).
  • protip : inoremap <C-Space> <C-N>

Svar

Vim har støtte for ferdigstillelse naturlig . Du kan lese om de forskjellige kompletteringene som Vim støtter på :h ins-completion.

Generelt sett, for alle formål jeg har funnet, er innfyllinger nok for min smak , men det er noen kompletterings plugins som gir mer verdi utover hva ins-completions tilbyr. NeoComplete , YCM (YouCompleteMe) er noen få for det samme. De er mer avanserte i den forstand at de prøver å kombinere forskjellige typer fullføringer mer nøyaktig, og de har også avanserte cachemekanismer, så de pleier å være raskere. YCM går til og med i den grad å jobbe med eksterne kompilatorer / verktøy for å gi bedre IntelliSense.

Svar

Ja, skripter for automatisk ferdigstillelse for vim eksisterer. Det «beste» valget avhenger av programmeringsspråket ditt. Ettersom eksempelkoden din er Python, foreslår jeg at du tar en titt på Jedi . Bygg på toppen av at Du fullfører meg eksisterer, som også har støtte for andre språk, men noen ganger blir sett på som for stor. For andre språk kan du bla gjennom det lange settet på vim-skript .

Svar

I innsettingsmodus skriver du inn de første par tegnene i et ord, og trykker deretter på:

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

Dette er spesielt nyttig når du skriver inn navn på variabler i et program.

Alternativet «komplett» kontrollerer hvor det blir søkt etter nøkkelordene (inkluderer filer, taggfiler, buffere og mer).

Alternativet «completeopt» styrer hvordan fullføringen skjer (for eksempel om en meny vises).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *