Ich verwende derzeit SuperTab für die Fertigstellung in Vim. Ich möchte jedoch, dass die Vervollständigungen eher wie Bash aussehen. Zum Beispiel, wenn ich schreibe
st
und die möglichen Abschlüsse sind
struct, string
Wenn ich die Tabulatortaste drücke und im Idealfall ein Menü mit möglichen Vervollständigungen anzeige, möchte ich, dass es zu str abgeschlossen wird.
Plugins sind OK.
vim
autocomplete
vimrc
Alexander Duchene
quelle
quelle
Antworten:
Ich denke, das folgende Plugin macht das, wonach Sie fragen:
Du vervollständigst mich
Aus der Beschreibung:
quelle
Putten
set completeopt=menu,longest
stellt sich heraus, den Trick meistens zu tun. Wenn Sie leider mehr Text eingeben und dann erneut die Tabulatortaste drücken, wird versucht, eine vollständige Vervollständigung vorzunehmen, anstatt das nächstlängste gemeinsame Präfix anzugeben.quelle
completeopt+=longest
macht es besser für mich mit dem EingeborenenCTRL-N
FertigstellungAufbauend auf Alexanders Antwort habe ich so etwas in meinem .vimrc
Das 'längste' Stück erledigt also den größten Teil der Arbeit, jedoch nachfolgende Pressen von
<C-n>
Ich fange gerade an, durch die Optionen zu blättern. Wenn Sie drücken<C-e>
dass (e) nds Autovervollständigung, erneut mit auslösen<C-n>
Entspricht der nächstlängeren Teilzeichenfolge. Wenn Sie eine Verknüpfung hinzufügen, müssen Sie nicht zwei Tasten drücken.Das willst du nicht binden
<C-n>
So können Sie auf gewohnte Weise nicht mehr radelnIch habe M gewählt, da es direkt neben N steht und überprüfe (
:h insert-index
) ist standardmäßig nur gebunden ansame as <CR>
.... weil dies vim ist und nichts jemals einfach ist, stellt sich heraus, dass dies bedeutet, dass vim nicht wirklich kann zwischen den beiden Tastendrücken unterscheiden !Wenn Ihnen die Verwendung egal ist
<C-m>
dann nimm einfach was anderes, sonst lies weiter ...Basierend auf diesem anderen Beitrag habe ich die Antwort unten angepasst und die Syntax ein wenig überarbeitet (basierend auf diese )
Ich endete damit:
pumvisible () gibt ein Flag zurück, das angibt, ob das Popup-Menü geöffnet ist. Dies hält uns davon ab, das Verhalten der Eingabetaste im Einfügemodus zu ändern, wenn das Popup-Menü nicht geöffnet ist.
Leider kann ich keine Dokumentation für das finden? und: und warum wir Strings übergeben müssen.
quelle