2010-07-01 7 views
5

In Vim 7 zeigt Ctrl-X Ctrl-O eine Liste möglicher Werte an, aber ich finde, dass diese Tastensequenz zu lang ist, wenn ich die Autocomplete-Funktion häufig verwende. Zum Beispiel möchte ich in einer HTML-Datei sehen, dass die Liste automatisch erscheint, nachdem ich einen < gefolgt von einem oder zwei Buchstaben eingegeben habe. In einer CSS-Datei möchte ich die Liste sehen, nachdem ich die Taste ":" gedrückt habe. Gibt es eine Möglichkeit, dies einzurichten?Show Vim Omnicomplete auf bestimmte Zeichen anstelle von Strg-X Strg-O?

Antwort

8

Um die Omnicompletion bei der Eingabe eines ":" zu aktivieren, können Sie das folgende Mapping verwenden.

imap : :<c-x><c-o> 

Der Nachteil ist, dass jedes Mal, wenn Sie „:“ omnicompletion wird aktiviert werden, auch wenn die Eingabe „:“ in den Kommentaren oder in jedem anderen Kontext , in dem Sie nicht omnicompletion wollen.

Ich habe ctrl-Raum aktiv omnicompletion abgebildet:

imap <c-space> <c-x><c-o> 

Das gibt mir die Wahl omni zu aktivieren, wenn ich es brauche.

+0

Ich würde mit Habi auf diesem zustimmen. Es ist besser, Omni-Completion spezifisch auszulösen, wenn Sie es benötigen, als es automatisch auszulösen. Omni-Completion sollte ein Werkzeug sein, um Ihnen zu helfen, nicht eine Krücke, auf die Sie sich verlassen. – jamessan

+3

Ich würde sagen, beschränken es nur Dateityp auf die CSS (als einzige Zeit werde geben Sie: ist, wenn Sie diese Optionen wollen 'au Filetype css imap:.: ' – sleepynate

+0

@sleepynate Danke, das ist genau das, was Ich wollte! – geoffeg

1

Eine andere Alternative, die ich einfacher gefunden habe, ist nur zweimal drücken, wenn Sie Autovervollständigung möchten, und einmal für regelmäßige Registerkarte. In die folgende Zeile in Ihre ~/.vimrc

imap <tab><tab> <c-x><c-o>