Ist es möglich, dass vim Funktionsnamen, Variablen usw. automatisch vervollständigt, wenn es zum Programmieren verwendet wird?

Viele IDEs vervollständigen automatisch Funktionsnamen, Variablen, Methodennamen usw. als Benutzertypen. Die besten vervollständigen die Namen sowohl basierend auf der integrierten Bibliothek der Sprache als auch auf dem, was bereits in anderen Dateien desselben Programms definiert wurde.

Zum Beispiel, während ich Folgendes eingebe Python-Programm:

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

In der Zeile eatF wird automatisch eatFood() als verfügbare Option zur automatischen Vervollständigung.

Verfügt Vim über diese Funktion? Wenn ja, wie kann ich es aktivieren?

Antwort

In vim gibt es viele verschiedene Arten der automatischen Vervollständigung. Eine Möglichkeit könnte darin bestehen, SuperTab zu verwenden. Dies bietet eine Möglichkeit, die Tab-Vervollständigung mehr oder weniger jederzeit zu verwenden. Auf diese Weise können Sie Tab drücken, nachdem Sie das Wort teilweise eingegeben haben, um eine Abschlussliste zu erhalten. Geben Sie beispielsweise eatF gefolgt von Tab ein zum Erweitern auf eatFood.

Bitte beachten Sie, dass : Diese Bilder sind alle mit Beispiel-Gifs in Aktion verknüpft.

mg src = „https://i.stack.imgur.com/dVuOT.png“ alt = „supertab vervollständigungen“ title = „Klicken, um ein GIF zu sehen“>

Vim bietet hervorragende andere Optionen. Sie sollten :h ins-completion lesen, um zu sehen die Vielzahl der integrierten Vervollständigungsoptionen. Verwenden von vims „ Strg X Strg O , kombiniert mit Ein Python-fähiges Plugin wie jedi kann einen Abschlussgeschmack verleihen. Jedi kann so konfiguriert werden, dass Dokumentation zur Omni-Vervollständigung gegeben wird (dies ist, was Strg X Strg O tut ). Die Dokumentation für die Abschlusskandidaten wird dann in einem geteilten Fenster angezeigt.

mg src = „https://i.stack.imgur.com/etSIu.png“ alt = „ctrlxctrlo Vervollständigung“ title = „Klicken, um ein GIF anzuzeigen“>

Die Verwendung ähnlicher Plugins, aber unterschiedlicher Optionen führt zu allen möglichen Verhaltensweisen. Es ist beispielsweise möglich, dass Sie nicht zur automatischen Vervollständigung aufgefordert werden müssen (wenn Sie danach suchen). Stattdessen kann ein Plugin nach der Eingabe einer bestimmten Anzahl von Buchstaben (z. B. 2 oder 3) eines Wortes verwendet werden Versuchen Sie, mögliche Vervollständigungen in einem Menü intelligent anzubieten.

mg src = „https://i.stack.imgur.com/gtNK0.png“ alt = “ Geben Sie hier die Bildbeschreibung ein. „title =“ Klicken Sie hier, um ein GIF anzuzeigen. „>

Die kurze Antwort lautet also yes! Aber der Konfigurationsprozess kann etwas kompliziert sein. Ich betrachte ihn als einen Schritt in der langen Treppe zur Beherrschung von vim.

Kommentare

  • Ich ‚ habe sie alle ausprobiert und komme immer wieder zu SuperTab zurück. ‚ ist am wenigsten aufdringlich.
  • Ich mag das YouCompleteMe-Plugin auch sehr, da es während des Tippens vorgeschlagen wird und Sie Vorschläge entweder auswählen oder ignorieren können. Ja, visuell ist es schwer zu ignorieren, aber es ist in meinem Workflow sehr unauffällig, weil es Requi Res weniger Tastenanschläge.
  • Ich ‚ habe die Animationen so geändert, dass sie “ sind, wenn Sie auf in dem Sinne, dass sie mit den GIF-Animationen verknüpft sind.
  • Ich kann ‚ YouCompleteMe auf meinem Arbeitscomputer nicht verwenden, weil ich ‚ hat kein root, um die Abhängigkeiten zu installieren, SuperTab ist bei weitem die nächstbeste Wahl.
  • @mixedmath In meinem Fall tut superTab nicht ‚ funktioniert nicht.

Antwort

Solche Funktionen – dh Durchsuchen der aktuellen Datei ( und alle geöffneten Dateien) für die automatische Vervollständigung sollten standardmäßig mit Ctrl+P:

Screenshot der verwendeten automatischen Vervollständigung

Sie können mit iv id = „3aa9c1ccc6“ zum n ext-Vorschlag gehen. >

, der p revious Vorschlag mitCtrl+Pund wählen Sie es aus, indem Sie einen beliebigen Buchstaben eingeben (der direkt nach dem Vorschlag angehängt wird).

Kommentare

  • An den Herausgeber (Jasper): Ich möchte eher noch einmal etwas schreiben, das ich kürzlich geschrieben habe, nicht etwas, das ich ‚ in Zukunft schreiben werde oder das am Anfang des Datei. Daher ist ^P meiner Meinung nach natürlicher. Ansonsten danke für die Bearbeitung (ich hoffe ich habe auf den rechten Button geklickt und du hast deine +2).
  • Ja, ich habe diese imaginären Internetpunkte bekommen 🙂 Ich dachte immer, dass die Vorschlagsliste alphabetisch sortiert sein würde. ..
  • @Jasper Reihenfolge des Auftretens ist es (zumindest für mich sicherlich auch oben: world,word,wood und nicht umgekehrt).^P ist also die zuletzt verwendete Vervollständigung, was sehr praktisch ist (ich gehe selten weiter als 3 Elemente in der Liste, selbst in einer langen Datei).
  • protip : inoremap <C-Space> <C-N>

Antwort

Vim unterstützt die native Fertigstellung . Informationen zu den verschiedenen Vervollständigungen, die Vim unterstützt, finden Sie unter :h ins-completion.

Im Allgemeinen reichen Ins-Vervollständigungen für alle Zwecke, die ich gefunden habe, für meinen Geschmack aus Es gibt jedoch einige Abschluss-Plugins, die mehr Wert bieten als Ins-Vervollständigungen. NeoComplete , YCM (YouCompleteMe) sind einige davon. Sie sind in dem Sinne fortgeschrittener, dass sie versuchen, verschiedene Arten von Vervollständigungen genauer zu kombinieren, und sie haben auch fortgeschrittene Caching-Mechanismen, so dass sie tendenziell schneller sind. YCM arbeitet sogar so weit, mit externen Compilern / Dienstprogrammen zusammenzuarbeiten, um ein besseres IntelliSense bereitzustellen.

Antwort

Ja, Skripte für die automatische Vervollständigung für vim existieren. Die „beste“ Wahl hängt von Ihrer Programmiersprache ab. Da Ihr Beispielcode Python ist, schlage ich vor, einen Blick auf Jedi zu werfen. Bauen Sie darauf auf Sie vervollständigen mich , das auch andere Sprachen unterstützt, aber manchmal als zu groß angesehen wird. Für andere Sprachen können Sie die lange Reihe von vim-Skripten durchsuchen.

Antwort

Geben Sie im Einfügemodus die ersten Zeichen eines Wortes ein und drücken Sie dann:

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

Dies ist besonders nützlich, wenn Sie das eingeben Namen von Variablen in einem Programm.

Die Option „complete“ steuert, wo die Schlüsselwörter gesucht werden (einschließlich Dateien, Tag-Dateien, Puffer usw.).

Die Option „completeopt“ Steuert, wie der Abschluss erfolgt (z. B. ob ein Menü angezeigt wird).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.