Autovervollständigung in Vim

258

Nach einem langen "Training" bin ich endlich zu Vim gewechselt; aber ich habe einige Probleme mit der automatischen Vervollständigung. Wie kann ich während der Eingabe einen Codevorschlag haben?

Normalerweise entwickle ich PHP, Ruby, HTML, C und CSS.

diegocstn
quelle

Antworten:

143

Sie können ein Plugin wie AutoComplPop verwenden , um während der Eingabe eine automatische Code-Vervollständigung zu erhalten.

2015 Edit: Ich persönlich benutze YouCompleteMe jetzt.

michaelmichael
quelle
10
Dies wird dringend empfohlen. Erleichtert die Eingabe von CX CO, CP oder CN.
Amjith
Ich habe es versucht, aber es scheint nicht zu funktionieren. Es gibt wahrscheinlich einen Konflikt mit anderen Skripten.
Diegocstn
1
Legen Sie die Dateien in den angegebenen Verzeichnissen in ~ / .vim ab?
Michaelmichael
1
@dieguitoweb ACP funktioniert standardmäßig nicht mit allen Dateitypen. Sie müssen es "hacken", damit es mit JavaScript, ActionScript und PHP funktioniert. Hier erkläre ich, wie ich es mache. Und hier ist ein weiterer Hinweis für PHP.
Romainl
Jetzt funktioniert es :) Alle Dateien befanden sich bereits in den richtigen Verzeichnissen. Ich habe das Skript nur durch einen neuen Download aus dem Git-Repository ersetzt und jetzt ist es in Ordnung. vielen dank
diegocstn
438

Verwenden Sie diese CtrlOption N, um im Einfügemodus eine Liste mit Wortvorschlägen abzurufen. Geben Sie ein :help i_CTRL-N, um die Dokumentation von Vim zu dieser Funktionalität anzuzeigen.

Hier ist ein Beispiel für den Import des Python-Wörterbuchs in Vim.

Orbit
quelle
15
danke das ist toll, aber wie kann ich diese Liste automatisch haben, ohne <Strg + N> zu drücken?
Diegocstn
5
Das hat mir Michaelmichael mit dem Plugin erzählt, das er erwähnt hat. Sie können sich auch SuperTab ansehen.
projecktzero
4
Fügen Sie für die CSS-Unterstützung den Bindestrich für die integrierte automatische Vervollständigung hinzu, indem Sie 'set iskeyword + = -' zu Ihrer .vimrc
mahalie am
3
Dies ist die umfassendste und einheimischste Methode :-)
Srikant
5
@ Hi-Angel Der 'Auto'-Teil besteht darin, dass er automatisch Optionen für die Vervollständigung eines Wortes festlegt und das Wort bei Auswahl einer Option automatisch konkurriert.
CJBS
26

Wenn Sie VIM Version 8+ verwenden, geben Sie einfach Ctrl + noder ein Ctrl + p.

Engelo Polotto
quelle
11

Sie können mit der integrierten omnifuncEinstellung beginnen.

Einfach ausgedrückt:

filetype plugin on
au FileType php setl ofu=phpcomplete#CompletePHP
au FileType ruby,eruby setl ofu=rubycomplete#Complete
au FileType html,xhtml setl ofu=htmlcomplete#CompleteTags
au FileType c setl ofu=ccomplete#CompleteCpp
au FileType css setl ofu=csscomplete#CompleteCSS

Geben Sie .vimrcdann <Ctrl-X><Ctrl-O>im unteren Bereich Ihren Einfügemodus ein.

Ich verlasse mich immer auf diese CSS-Vervollständigung.

ernix
quelle
was tut setlbedeuten? Vielen Dank.
Qed
Ok, ich habe es verstanden, es bedeutet setlocal. Aber warum brauchen wir hier setlocal?
Qed
Sehen Sie sich an, wie es Sie nervt, wenn Sie eine andere Datei im selben Puffer öffnen.
ernix
2
@ernix Von Ihrem Link: Ein Puffer in Vim ist ... eine offene Instanz einer Datei ... Ich kenne mich mit Puffern, Fenstern und Registerkarten aus. Ich weiß jedoch nicht, wie ich eine andere Datei im selben Puffer öffnen soll. Mir scheint, wenn Sie eine Datei öffnen, wird sie immer in einem neuen Puffer geöffnet und dieser Puffer zur Pufferliste hinzugefügt. Ich weiß, dass es andere Möglichkeiten gibt, Puffer zu verwenden, wie z. B. die Schnellkorrekturliste, aber ich wusste nicht, wie sich die Datei in einem Puffer ändert . :h bufferssagt: Ein Puffer ist eine Datei, die zum Bearbeiten in den Speicher geladen wird. Trotzdem habe ich Vim erst seit 3 ​​Monaten ernsthaft benutzt. und bin sicherlich offen für Korrekturen.
JakeD
1
@ JakeD Ah ja. Du hast recht. Ich habe "Instanz" genommen, was falsch bedeutet. Ich habe falsch verstanden, dass Sie über Prozesse mit unterschiedlichen PIDs gesprochen haben. Entschuldigung, vergiss einfach, was ich gesagt habe.
ernix
6

Ich habe kürzlich ein Projekt namens OniVim entdeckt , ein elektronenbasiertes Front-End für NeoVim, das über eine sehr gute automatische Vervollständigung für mehrere Sprachen verfügt. Da es sich im Grunde nur um einen Wrapper um NeoVim handelt, haben Sie die volle Leistung von vim zu Ihrer Verfügung, wenn die GUI nicht Ihren Anforderungen entspricht. Es befindet sich noch in der frühen Entwicklung, aber es verbessert sich schnell und es gibt eine wirklich aktive Community. Ich benutze vim seit über 10 Jahren und habe vor ein paar Wochen angefangen, Oni zu testen, und obwohl es hier und da einige Fehler gibt, ist es mir nicht in die Quere gekommen. Ich würde es neuen vim-Benutzern empfehlen, die immer noch ihre vim-Finger bekommen!

Geben Sie hier die Bildbeschreibung ein

OniVim: https://www.onivim.io/

Parker Ault
quelle
32
Für mich ist der gesamte Punkt von Vim die Verwendung des Terminals ... Wenn ich eine Elektronen-App verwenden wollte, verwende ich nur Vscode mit einer Vim-Erweiterung.
Mohamed Benkedadra
2
@MohamedBenkedadra Aber würde dir das wirklich die volle Kraft von Vim bringen? Zum einen bin ich ein großer Fan des Such- und Ersetzungsmustersystems, und ich wäre angenehm überrascht, wenn ein Vim-Emulations-Plugin dies unterstützen würde.
SilverWolf - Stellen Sie Monica am
3

Ich benutze Neocomplcache seit ungefähr einem halben Jahr. Es ist ein Plugin, das einen Wortcache in all Ihren Puffern sammelt und diese dann zur automatischen Vervollständigung bereitstellt.

Auf der Projektseite im vorherigen Link befinden sich eine Reihe von Screenshots. Neocomplcache bietet auch eine Vielzahl von Konfigurationsoptionen, von denen es auch grundlegende Beispiele auf der Projektseite gibt.

Wenn Sie mehr Tiefe benötigen, können Sie sich den entsprechenden Abschnitt in meinem vimrc ansehen - suchen Sie einfach nach dem Wort neocomplcache.

sp3ctum
quelle
1

Hier ist Link ! für PHP.

Drücken Sie beim Schreiben einiger PHP-Funktionen Strg + x gefolgt von Strg + o.

Vielen Dank an Oseems Solutions für das Tutorial

Brian Kenia
quelle
1

Wenn Sie nur die automatische Vervollständigung aus dem Cache Ihrer aktuellen Puffer durchführen möchten, ist supertab einfacher zu installieren als neocomplete und kann auf Mac vorinstalliertem vim ohne MacVim verwendet werden.

Sie können andere Alternativen bei vim awesome überprüfen .

tning
quelle
0

Für PHP sind Padawan mit Deoplete großartige Lösungen für eine robuste PHP-Autovervollständigung in Neovim. Ich habe viele Dinge ausprobiert und Padawan arbeitet wie ein Zauber!

Für Vim können Sie Neocomplete anstelle von Deoplete verwenden.

Ich habe einen Artikel geschrieben, wie man eine Vim PHP IDE erstellt, wenn jemand interessiert ist. Natürlich ist Padawan ein Teil davon.

Matthieu
quelle
0

Eine weitere Option ist coc.nvim .

Es ist sehr schnell und die Fertigstellung ist großartig, da Intellisense dieselbe automatische Vervollständigung wie VScode verwendet. Es hat auch Fusselfunktionen. Es zeigt also, dass Sie möglicherweise einen Fehler haben. Es unterstützt eine Vielzahl von Sprachen.

Das Einrichten und Konfigurieren kann etwas dauern, aber ich denke, es ist die beste Autocompletion-Engine für vim da draußen.

ak17
quelle