Veel IDEs vullen automatisch functienamen, variabelen, namen van methoden, enz. aan terwijl de gebruiker typt. De beste vullen de namen aan op basis van zowel de ingebouwde bibliotheek van de taal als wat al is gedefinieerd in andere bestanden van hetzelfde programma.
Bijvoorbeeld, terwijl ik het volgende typ Python-programma:
hungy = True def eatFood(food): pass if hungry: eatF
de regel eatF
zou automatisch eatFood()
als een beschikbare auto-complete optie.
Heeft Vim deze mogelijkheid? Zo ja, hoe kan ik het inschakelen?
Answer
Er zijn veel verschillende smaken van autocomplete in vim. Een manier zou kunnen zijn om SuperTab te gebruiken. Dit biedt een manier om tabaanvulling op min of meer elk moment te gebruiken. Dit zou je in staat stellen om op Tab te drukken nadat je “het woord gedeeltelijk hebt getypt om een voltooiingslijst te krijgen. Typ bijvoorbeeld eatF
gevolgd door Tab om uit te breiden naar eatFood.
Let op : deze afbeeldingen linken allemaal naar voorbeeld-gifs in actie.
Vim heeft uitstekende andere opties. Je moet :h ins-completion
lezen om te zien de verscheidenheid aan ingebouwde voltooiingsopties. Het gebruik van vim “s Ctrl–X Ctrl – O , gecombineerd met een python-bewuste plug-in zoals jedi kan een voltooiingssmaak geven. Jedi kan worden geconfigureerd om documentatie te geven over omni-voltooiing (dit is wat Ctrl–X Ctrl – O doet ). De documentatie voor de voltooiingskandidaten zou dan in een gesplitst venster verschijnen.
Het gebruik van vergelijkbare plug-ins maar verschillende opties leidt tot allerlei soorten gedrag. Het is bijvoorbeeld mogelijk dat u niet hoeft te vragen om automatische aanvulling (als dat is wat u zoekt). In plaats daarvan kan een plug-in nadat u een aantal letters (bijvoorbeeld 2 of 3) van een woord hebt getypt probeer intelligent mogelijke aanvullingen in een menu aan te bieden.
Dus het korte antwoord is een ja! Maar het configuratieproces kan een beetje ingewikkeld zijn. Ik beschouw het als een stap in de lange trap van het beheersen van vim.
Opmerkingen
- Ik ‘ heb ze allemaal geprobeerd en ik kom altijd terug naar SuperTab, het ‘ is het minst opdringerig.
- Ik hou ook erg van de YouCompleteMe-plug-in, omdat deze suggereert terwijl je typt en je suggesties kunt kiezen of negeren. Ja, visueel is het moeilijk te negeren, maar het is niet storend in mijn workflow omdat het requi res minder toetsaanslagen.
- Ik ‘ heb de animaties gewijzigd in ” bij klik “, in de zin dat ze zijn gekoppeld aan de gif-animaties.
- Ik kan ‘ YouCompleteMe niet gebruiken op mijn werkcomputer omdat ik don ‘ t hebben root om de afhankelijkheden te installeren, SuperTab is verreweg de op één na beste keuze.
- @mixedmath In mijn geval heeft superTab geen ‘ werkt niet.
Antwoord
Dergelijke functionaliteit – dwz zoeken in het huidige bestand ( en alle geopende bestanden) voor automatisch aanvullen, moet standaard zijn ingeschakeld met Ctrl+P
:
Je kunt naar de n ext-suggestie gaan met Ctrl+N
, de p eerbiedige suggestie met Ctrl+P
en selecteer deze door een letter te typen (die direct na de suggestie wordt toegevoegd).
Opmerkingen
Antwoord
Vim heeft native ondersteuning voor voltooiing . Je kunt lezen over de verschillende voltooiingen die Vim ondersteunt op :h ins-completion
.
In het algemeen, voor alle doeleinden die ik heb gevonden, zijn ins-aanvullingen voldoende naar mijn smaak Er zijn echter enkele completering-plug-ins die meer waarde toevoegen dan wat ins-completions biedt. NeoComplete , YCM (YouCompleteMe) zijn er een paar voor hetzelfde. Ze zijn geavanceerder in de zin dat ze verschillende soorten voltooiingen nauwkeuriger proberen te combineren, en ze hebben ook geavanceerde cachemechanismen, dus ze zijn meestal sneller. YCM gaat zelfs zover om te werken met externe compilers / hulpprogrammas om betere IntelliSense te bieden.
Antwoord
Ja, scripts voor automatisch aanvullen want vim bestaan. De “beste” keuze is afhankelijk van uw programmeertaal. Aangezien uw voorbeeldcode Python is, raad ik u aan Jedi te bekijken. Daarbovenop bouwen You complete me bestaat, die ook ondersteuning heeft voor andere talen, maar soms als te groot wordt gezien. Voor andere talen kun je bladeren door de lange set op vim-scripts .
Antwoord
Typ in de invoegmodus de eerste paar tekens van een woord en druk vervolgens op:
Ctrl-N to insert the next matching word; or Ctrl-P to insert the previous matching word.
Dit is met name handig bij het invoeren van de namen van variabelen in een programma.
De optie “complete” bepaalt waar de trefwoorden worden doorzocht (inclusief bestanden, tagbestanden, buffers en meer).
De optie “completeopt” bepaalt hoe de voltooiing plaatsvindt (bijvoorbeeld of een menu wordt weergegeven).
^P
natuurlijker IMHO. Anders bedankt voor de bewerking (ik hoop dat ik op de juiste knop heb geklikt en je +2 hebt gekregen).world,word,wood
en niet andersom).Dus^P
is de laatst gebruikte aanvulling, wat erg handig is (ik ga zelden verder dan 3 items in de lijst, zelfs niet in een lang bestand).inoremap <C-Space> <C-N>