Er det muligt at have vim auto-komplette funktionsnavne, variabler osv., Når du bruger det til at programmere?

Mange IDEer udfylder automatisk funktionsnavne, variabler, metodenavne osv., når brugeren skriver. De bedste udfylder navnene baseret på både sprogets indbyggede bibliotek og det, der allerede er defineret i andre filer i det samme program.

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

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

linjen eatF viser automatisk eatFood() som en tilgængelig automatisk komplet indstilling.

Har Vim denne mulighed? Hvis ja, hvordan kan jeg aktivere det?

Svar

Der er mange forskellige varianter af autofuldførelse i vim. En måde kan være at bruge SuperTab . Dette giver en måde at bruge udfyldning af faner på mere eller mindre når som helst. Dette vil gøre det muligt for dig at trykke på Tab efter at du “delvist har skrevet ordet for at få en komplet liste. Skriv f.eks. eatF efterfulgt af Tab for at udvide til eatFood.

Bemærk : disse billeder linker alle til eksempel-gifs i aktion.

mg src = “https://i.stack.imgur.com/dVuOT.png” alt = “supertab-kompletteringer” title = “Klik for at se en gif”>

Vim har fremragende andre muligheder. Du bør læse :h ins-completion for at se de forskellige indbyggede færdiggørelsesmuligheder. Brug af vim “s CtrlX Ctrl O , kombineret med et python-opmærksomt plugin som jedi kan give en komplet smag. Jedi kan konfigureres til at give dokumentation om fuldførelse af omni (dette er hvad CtrlX Ctrl O gør ). Derefter vises dokumentation for færdiggørelseskandidaterne i et delt vindue.

mg src = “https://i.stack.imgur.com/etSIu.png” alt = “ctrlxctrlo complete” title = “Klik for at se en gif”>

Brug af lignende plugins, men forskellige muligheder fører til alle mulige adfærd. Det er f.eks. Muligt ikke at skulle bede om autofuldførelse (hvis det er det, du er efter). I stedet for, når du har skrevet et antal bogstaver (siger 2 eller 3) af et ord, kan et plugin prøv at tilbyde mulige afslutninger på en intelligent måde i en menu.

mg src = “https://i.stack.imgur.com/gtNK0.png” alt = ” skriv billedbeskrivelse her “title =” Klik for at se en gif “>

Så det korte svar er et ja! Men konfigurationsprocessen kan være lidt kompliceret. Jeg tænker på det som et skridt i den lange trappe med at mestre vim.

Kommentarer

  • Jeg ‘ har prøvet dem alle, og jeg kommer altid tilbage til SuperTab, det ‘ er det mindst påtrængende.
  • Jeg kan også godt lide YouCompleteMe-pluginet, da det antyder som du-type, og du kan enten vælge eller ignorere forslag. Ja, visuelt er det svært at ignorere det, men det er meget uinteressant i min arbejdsgang, fordi det requi res færre tastetryk.
  • Jeg ‘ har ændret animationerne til at være ” ved klik “, i den forstand at de er knyttet til gif-animationerne.
  • Jeg kan ‘ ikke bruge YouCompleteMe på min arbejdscomputer, fordi jeg don ‘ t har rod til at installere afhængighederne, SuperTab er langt det næstbedste valg.
  • @mixedmath I mit tilfælde er superTab ikke ‘ fungerer ikke.

Svar

Sådan funktionalitet – dvs. søgning i den aktuelle fil ( og alle åbne filer) til automatisk udfyldelse, skal aktiveres som standard med Ctrl+P:

skærmbillede af autofuldførelse i brug

Du kan gå til n ext-forslag med Ctrl+N, p forkasteligt forslag med Ctrl+P og vælg det ved at skrive et hvilket som helst bogstav (som tilføjes lige efter forslaget).

Kommentarer

  • Til redaktøren (Jasper): Jeg vil mere sandsynligt skrive igen noget, som jeg har skrevet for nylig, ikke noget jeg ‘ skriver i fremtiden, eller som er i begyndelsen af fil. Derfor er ^P mere naturlig IMHO. Ellers tak for redigeringen (jeg håber, jeg klikkede på højre knap, og du fik din +2).
  • Ja, jeg fik de imaginære internetpunkter 🙂 Jeg har altid troet, at forslagslisten ville blive sorteret alfabetisk. ..
  • @Jasper rækkefølge for udseende det er (i det mindste for mig bestemt, se også ovenfor: world,word,wood og ikke omvendt).Så ^P er den sidst anvendte færdiggørelse, hvilket er meget praktisk (jeg går sjældent længere end 3 emner på listen, selv i en lang fil).
  • protip : inoremap <C-Space> <C-N>

Svar

Vim har understøttelse til færdiggørelse indbygget . Du kan læse om de forskellige færdiggørelser, som Vim understøtter, ved :h ins-completion.

Generelt set til alle formål, jeg har fundet, er tilføjelser komplet efter min smag der er dog nogle kompletterings-plugins, der tilføjer mere værdi ud over hvad ins-completions tilbyder. NeoComplete , YCM (YouCompleteMe) er nogle få for det samme. De er mere avancerede i den forstand, at de forsøger at kombinere forskellige typer af færdiggørelser mere præcist, og de har også avancerede cachemekanismer, så de har tendens til at være hurtigere. YCM går endda i den grad at arbejde med eksterne kompilatorer / hjælpeprogrammer for at give bedre IntelliSense.

Svar

Ja, scripts til automatisk udfyldning for vim eksisterer. Det “bedste” valg afhænger af dit programmeringssprog. Da din eksempelkode er Python, foreslår jeg at se på Jedi . Byg oven på, at der findes Du fuldender mig , som også understøtter andre sprog, men sommetider ses som for stor. For andre sprog kan du gennemse det lange sæt på vim-scripts .

Svar

I indsættelsestilstand skal du skrive det første par tegn i et ord og derefter trykke på:

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

Dette er især nyttigt, når du indtaster navne på variabler i et program.

Indstillingen “komplet” styrer, hvor søgeordene søges (inkluderer filer, tagfiler, buffere og mere).

Indstillingen “completeopt” styrer, hvordan færdiggørelsen finder sted (for eksempel om der vises en menu).

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *