Is het mogelijk om vim automatisch aanvullen van functienamen, variabelen, enz. Te hebben bij gebruik om te programmeren?

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.

mg src = “https://i.stack.imgur.com/dVuOT.png” alt = “supertab completions” title = “Klik om een gif te zien”>

Vim heeft uitstekende andere opties. Je moet :h ins-completion lezen om te zien de verscheidenheid aan ingebouwde voltooiingsopties. Het gebruik van vim “s CtrlX 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 CtrlX Ctrl O doet ). De documentatie voor de voltooiingskandidaten zou dan in een gesplitst venster verschijnen.

mg src = “https://i.stack.imgur.com/etSIu.png” alt = “ctrlxctrlo completering” title = “Klik om een gif te zien”>

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.

mg src = “https://i.stack.imgur.com/gtNK0.png” alt = ” voer de afbeeldingsbeschrijving hier in “title =” Klik om een gif te zien “>

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:

screenshot van automatisch aanvullen in gebruik

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

  • Aan de redacteur (Jasper): ik wil eerder iets schrijven dat ik onlangs heb geschreven, niet iets dat ik ‘ zal schrijven in de toekomst of dat aan het begin van de het dossier. Daarom is ^P natuurlijker IMHO. Anders bedankt voor de bewerking (ik hoop dat ik op de juiste knop heb geklikt en je +2 hebt gekregen).
  • Ja, ik heb die denkbeeldige internetpunten 🙂 Ik dacht altijd dat de lijst met suggesties alfabetisch zou worden gesorteerd. ..
  • @Jasper volgorde van verschijning is het (althans voor mij zeker, zie ook hierboven: 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).
  • protip : inoremap <C-Space> <C-N>

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).

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *