Je možné mít vim automatické dokončování názvů funkcí, proměnných atd., Když je používáte k programování?

Mnoho IDE automaticky dokončuje názvy funkcí, proměnné, názvy metod atd. jako typy uživatelů. Nejlepší dokončují názvy podle vestavěné knihovny jazyka a podle toho, co již bylo definováno v jiných souborech stejného programu.

Například když píšu následující Program v Pythonu:

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

řádek eatF automaticky zobrazí eatFood() jako dostupná možnost automatického dokončování.

Má Vim tuto schopnost? Pokud ano, jak to mohu povolit?

Odpovědět

Ve vim existuje mnoho různých příchutí automatického doplňování. Jedním ze způsobů může být použití SuperTab . To poskytuje způsob, jak použít doplňování karet víceméně kdykoli. To by vám umožnilo stisknout klávesu Tab poté, co „částečně zadáte slovo a získáte seznam dokončení. Například zadáním eatF následovaného klávesou k rozšíření na eatFood.

Poznámka : všechny tyto obrázky odkazují na ukázkové gify v akci.

mg src = „https://i.stack.imgur.com/dVuOT.png“ alt = „supertab completions“ title = „Kliknutím zobrazíte gif“>

Vim má vynikající další možnosti. Chcete-li zobrazit, měli byste si přečíst :h ins-completion paleta vestavěných možností dokončení. Použití vim „s CtrlX Ctrl O v kombinaci s doplněk podporující python, jako je jedi , může být dokonalý. Jedi lze nakonfigurovat tak, aby poskytoval dokumentaci o úplném dokončení (to je CtrlX Ctrl O ). Pak by se dokumentace pro kandidáty na dokončení objevila v rozděleném okně.

mg src = „https://i.stack.imgur.com/etSIu.png“ alt = „ctrlxctrlo dokončení“ title = „Kliknutím zobrazíte gif“>

Používání podobných doplňků, ale různé možnosti vedou ke všem druhům chování. Je například možné, abyste nemuseli vyzývat k automatickému doplnění (pokud to je to, po čem jste znovu). Místo toho, po zadání určitého počtu písmen (řekněme 2 nebo 3) slova, může plugin zkuste inteligentně nabídnout možná dokončení v nabídce.

mg src = „https://i.stack.imgur.com/gtNK0.png“ alt = “ zde zadejte popis obrázku „title =“ Kliknutím zobrazíte gif „>

Krátká odpověď je tedy ano! Proces konfigurace však může být trochu komplikovaný. Považuji to za krok v dlouhém schodišti zvládnutí vimu.

Komentáře

  • Snažil jsem se je vyzkoušet všechny a vždy se vrátím na SuperTab, je to ‚ nejméně rušivé.
  • Také se mi opravdu líbí plugin YouCompleteMe, protože navrhuje, jak píšete a můžete si buď vybrat, nebo ignorovat návrhy. Ano, vizuálně je těžké to ignorovat, ale v mém pracovním postupu je to velmi nenápadné, protože requi res méně klíčových úderů.
  • Změnil jsem ‚ animace tak, aby byly “ po kliknutí “ v tom smyslu, že jsou propojeny s gif animacemi.
  • Nemohu ‚ na vašem pracovním počítači použít YouCompleteMe, protože don ‚ nemáte root pro instalaci závislostí, SuperTab je zdaleka další nejlepší volba.
  • @mixedmath V mém případě superTab nemá ‚ Funguje.

Odpovědět

Taková funkcionalita – tj. hledání aktuálního souboru ( a všechny otevřené soubory) k automatickému dokončení by mělo být ve výchozím nastavení povoleno s Ctrl+P:

používaným snímkem automatického doplňování

Můžete přejít na n návrh ext s Ctrl+N, p zjevný návrh s Ctrl+P a vyberte jej zadáním libovolného písmena (které bude připojeno hned za návrhem).

Komentáře

  • Redaktorovi (Jasperovi): Pravděpodobně chci znovu napsat něco, co jsem nedávno napsal, ne něco, co ‚ napíšu v budoucnu, nebo to je na začátku soubor. Proto je ^P přirozenější IMHO. Jinak děkuji za úpravu (doufám, že jsem kliknul na pravé tlačítko a vy jste dostali +2).
  • Ano, mám ty imaginární internetové body 🙂 Vždycky jsem si myslel, že seznam návrhů bude seřazen abecedně. ..
  • @Jasper pořadí vzhledu je (alespoň pro mě určitě, viz také výše: world,word,wood a ne naopak).Takže ^P je poslední použité dokončení, které je velmi užitečné (málokdy jdu v seznamu dále než 3 položky, dokonce i v dlouhém souboru).
  • protip : inoremap <C-Space> <C-N>

odpověď

Vim podporuje nativní dokončení . O různých různých dokončováních, která Vim podporuje, si můžete přečíst na :h ins-completion.

Obecně platí, že pro všechny účely, které jsem našel, mi podle mého vkusu stačí úplné dokončení. , nicméně existují některé doplňkové pluginy, které přidávají větší hodnotu nad rámec toho, co ins-completions nabízí. NeoComplete , YCM (YouCompleteMe) je několik za stejné. Jsou pokročilejší v tom smyslu, že se snaží přesněji kombinovat různé typy dokončení, a mají také pokročilé mechanismy ukládání do mezipaměti, takže mají tendenci být rychlejší. YCM dokonce jde do té míry, aby pracoval s externími překladači / nástroji, aby poskytoval lepší technologii IntelliSense.

Odpověď

Ano, skripty automatického dokončování pro vim existují. „Nejlepší“ volba závisí na vašem programovacím jazyce. Jako váš příklad kódu je Python, doporučuji podívat se na Jedi . Stavět na tom Dokončíte mě existuje, což podporuje i jiné jazyky, ale někdy je považováno za příliš velké. U ostatních jazyků můžete procházet dlouhou sadu skriptů vim .

Odpovědět

V režimu vkládání zadejte prvních pár znaků slova a stiskněte:

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

To je zvláště užitečné při zadávání názvy proměnných v programu.

Možnost „Complete“ určuje, kde se hledají klíčová slova (zahrnují soubory, soubory značek, vyrovnávací paměti atd.).

Možnost „CompleteOpt“ určuje, jak k dokončení dochází (například zda je zobrazena nabídka).

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *