2012-05-30 10 views
7

Ich schreibe ein Plugin für die Kommentierung des Codes in besonderer Weise und es sollte ein bisschen anders, wenn im visuellen oder normalen Modi aufgerufen.Vim: wie bekomme ich den Modus Ich bin derzeit in

Gibt es eine Funktion oder einen Weg, um den Modus zu bestimmen, in dem der Benutzer war (war), als die Funktion aufgerufen wurde?

Antwort

6

Es gibt

Modus ([expr]) einen String zurück, der den aktuellen Modus anzeigt.

http://vimdoc.sourceforge.net/htmldoc/eval.html#mode%28%29

aber, dass da Sie möglicherweise nicht wahrscheinlich gehen in den Befehlsmodus in den rhs des Mapping zu starten.

Eine robustere Art und Weise etwas andere Zuordnungen wie

nmap <Leader>c :call MyFunc('n')<CR> 
vmap <Leader>c :call MyFunc('v')<CR> 

einzurichten wäre und das Argument Wert verwenden zu wissen, in welchem ​​Modus der Benutzer war in.

+4

Sie verwenden sollten 'nnoremap' /' vnoremap 'Hier sind sie stabiler (dh es gibt viel weniger Möglichkeiten für den Endbenutzer, das Mapping versehentlich zu unterbrechen) und sind somit die einzige Option für ein Plugin. – ZyX

Verwandte Themen