Ist es möglich, zu einer Funktion zu :map
en, die den Modus erkennen kann, in dem sie aufgerufen wurde? Das ist, was ich habe:
func! s:ShowModeFunction()
echomsg mode(1)
endfunc
noremap ShowMode ShowModeFunction()
map \m ShowMode
Die Zuordnung \m
ruft letztendlich die oberste Funktion auf, die eine Zeichenfolge ausgibt, die den Normalmodus, den Operator-Pending-Modus oder einen der Visual-Modi angibt.
Dies funktioniert jedoch nur mit in der mittleren Zuordnung; jeder Doppelpunkt-Befehl würde den endgültigen mode()
-Aufruf nutzlos machen, da er dann immer "Normalmodus" zurückgeben würde. Leider erfordert strikt einen Ausdruck auf der rechten Seite, und da die Funktion nichts zurückgibt, wird der implizite Rückgabewert 0
verwendet, der den Cursor in die erste Spalte verschiebt.