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.
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 Ctrl–X 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 Ctrl–X Ctrl – O gør ). Derefter vises dokumentation for færdiggørelseskandidaterne i et delt vindue.
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.
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
:
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
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).
^P
mere naturlig IMHO. Ellers tak for redigeringen (jeg håber, jeg klikkede på højre knap, og du fik din +2).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).inoremap <C-Space> <C-N>