2009-06-28 8 views
9

Ich weiß, dass ich Wortvervollständigung durch CTRL+N & CTRL+P und Code-Vervollständigung durch omnifunc mit CTRL+XCTRL+O zu bekommen. Ich probierte zusätzlich Supertab (sehr nett), weil ich an die TAB-Vervollständigung gewöhnt bin. Das hat alles gut funktioniert. Ich würde gerne mögliche Treffer sehen, während ich tippe, also habe ich auch versucht autocomplpop.vim, was genau das tut.Word/Code Completion in VIM

Was ich mag zwar erreichen, würde mit einem kleinen Twist eine Kombination aus beidem zusammen sein: Ich mag Vorschläge Pop-up sehen, wie ich gebe (wie bei autocompop), aber wenn ich soll TABdas Wort sein nur auf den größten gemeinsamen Spiel erweitert:

foo bar testor booze test baz teter 
te<TAB> 

Nachdem ich te in der 2. Zeile eingeben, sollte das Popup test, teter und testor vorschlagen.

Wenn ich TAB drücke, sollte es nichts tun, denn es gibt keinen gemeinsamen Boden als te. Nachdem ich einen zusätzlichen s eingegeben und TAB gedrückt habe, sollte es zu test (weil es die kleinste gemeinsame Masse ist) und zu testor nach einem 2. TAB erweitern.

bearbeiten: Ich versuche, mehr klar ...

  • te<TAB>
    • sollte nichts tun, weil "wir", wenn ein 't' nicht wissen (te t er) oder ein 's' (te s t, te s tor) sollte folgen.
  • tes<TAB>
    • zu test erweitern sollte (denn das ist für beide Werke - Test und testor - und teter ist nicht mehr eine mögliche Übereinstimmung).
  • test<TAB>
    • sollte testor (nur Spiel) erweitern.

Nun, die Vorschläge Popup ist nur Bonus, aber ich würde wirklich lieben das TAB Verhalten zu sehen. Hoffentlich komme ich hier nicht zu esoterisch und du kannst mir mit einigen Script-Tricks oder Plugins helfen, VIM zu zähmen, um genau das zu tun.

+0

Ist "test" nicht eine mögliche Übereinstimmung für "test "? So behandelt bash es ... (Abgesehen von diesem dritten Fall, beende deine Beispiele die Vervollständigungsregeln von Mirror Bash ...) – Stobor

Antwort

6
:set completeopt=longest,menu,preview 

vielleicht?

(Ich bin nicht sicher, ob Ihre Aussage

„wenn ich TAB drücken, sollte es nichts tun, weil es keine mehr Gemeinsamkeiten als te“

Konflikte mit Ihrem später Aussage

"zu testor nach einer zweiten TAB."

Es scheint mir, dass es keinen allgemeineren Grund als "test" an diesem Punkt gibt ... Es sei denn, Sie gehen davon aus, dass der erste Tab auf den längsten gemeinsamen Boden geht und dann die folgenden Tabs durch die anderen Matches laufen bin nach was ich oben habe ...)

+0

Wenn ich ': set completeopt = longest, menu, preview' verwende und die Tabulatortaste nach' te' drückst, ist es fertig zu "testor". Das möchte ich nicht erreichen. – Brutus

+0

Jemand auf Superuser hatte eine ähnliche Frage (http://superuser.com/questions/117490/vim-autocompletion-making-xu-expand-to-longest-match) und sie sagten, dass SuperTab mit am längsten durcheinander gebracht wurde. Haben Sie versucht, Supertab zu deaktivieren? – idbrii

+0

: set completeopt = am längsten, Menü ist was du willst. – qed