Ist es möglich, in einem Mapper-anstehende Mapping zu bestimmen, ob die Bewegung zeilenweise, blockweise oder normal ist?

8

Wenn ich ein Mapping mit omap oder onoremap deklariere, würde ich gerne den Fall behandeln, in dem die Bewegung blockweise, zeilenweise oder standardisiert ist.

Betrachten wir zum Beispiel den folgenden Block:

%Vor%

Cursor steht auf dem Buchstaben f. Angenommen, ich definiere eine Operatorkarte von K bis :normal! vjl (gehe zu Buchstabe k).

%Vor%

Interessanterweise bekomme ich dvK , dK , d^VK jeweils

%Vor%

Aber wenn ich dVK laufen lasse, wird es nicht funktionieren, ich bekomme genau das gleiche wie mit dvK .

Ich habe versucht, visualmode() zu verwenden (Zuordnung definiert als @=visualmode()<cr>jl<cr> , aber das funktioniert nicht. Es scheint, dass der Rückgabewert dieser Funktion nicht sofort betroffen ist, wenn Sie v , V oder CTRL-V verwenden im vom Bediener anfragenden Modus.

Hat jemand bitte eine Ahnung?
Danke

    
Benoit 19.12.2011, 16:20
quelle

2 Antworten

0

Ich habe einige Antworten auf von einem Operator ausgehende Zuordnungen geschrieben. In einer von ihnen 1 Ich skizzierte einen Überblick über eine Funktion, die die verschiedenen Fälle (char, line, blockweise Auswahl) gemäß der Dokumentation behandeln sollte:

%Vor%

Hier ist ein Beispiel, das die Anzahl der Leerzeichen mit <F4> : & gt;

zählt %Vor%

1 vim Rufen Sie eine Funktion in einem vmap auf

    
sehe 24.01.2012 22:42
quelle
0

Um zu erreichen, was Sie wollten, können Sie einfach

definieren %Vor%

Beachten Sie, dass diese Bewegung, die durch einen ex-Befehl gebildet wird, immer charakteristisch ist (siehe :h movement

Dann können Sie dv oder dV oder d^V frei verwenden, um die Bewegung zu einem anderen Typ zu machen und zu bekommen, was Sie wollen.

    
Liu Sha 28.08.2017 09:29
quelle

Tags und Links