jak zmapować klawisz Y (shift + y) do kopiowania z bieżącej pozycji kursora zamiast kopiowania całej linii?
Chciałbym zmapować shift+y
klawisz, aby przesunąć kursor o jedną pozycję w prawo, nacisnąć klawisz y i poczekać na polecenie ruchu. Podobnie jak w przypadku klawisza p. Gdy jest używany bez przesunięcia, ekran wkleja zawartość za kursorem, a gdy jest używany z przesunięciem, wkleja przed. Na przykład. Kiedy muszę skopiować słowo w odwrotnej kolejności, muszę to zrobić (l+y+b)
. Chciałbym to zrobić tylko z (shift+y+b)
. Oznacza to, że chciałbym kopiować z aktualnej pozycji kursora, a nie z poprzedniej pozycji.
Odpowiedzi
Kiedy muszę skopiować słowo w odwrotnej kolejności, muszę to zrobić
(l+y+b)
. Chciałbym to zrobić tylko z(shift+y+b)
. Oznacza to, że chciałbym kopiować z aktualnej pozycji kursora, a nie z poprzedniej pozycji.
Jeśli chcesz skopiować bieżące słowo, gdy kursor znajduje się na jego końcu, możesz użyć yvb
, który używa v
jako operatora (lub modyfikatora dla operatora), aby przełączyć b
ruch z ruchu „wyłącznego” na „włączający” .
Zobacz :help o_v:
Jeśli ruch był już znakowy, przełącz włącz / wyłącz. Można to wykorzystać do uczynienia ruchu wyłącznego włączającym i włączającym wyłącznym.
(Również :help exclusive.)
Jeśli chcesz, aby Y
polecenie zachowywało się w ten sposób, możesz po prostu użyć:
nnoremap Y yv
Należy jednak pamiętać, że chociaż jest to przydatne yvb
, może mieć niepożądane skutki uboczne w innych sytuacjach (takie jak ruch do przodu e
będzie teraz wyłączny, linewise stanie się znakami itp.) Możliwe jest utworzenie bardziej szczegółowego odwzorowania (np. zawsze wykonuj ruch inkluzywny itp.), ale to zaczyna być dość skomplikowane w przypadku wszystkich przypadków narożnych, które należy załatwić.
(Moja rada: po prostu użyj v
operatora bezpośrednio, yvb
jest tak łatwy do wpisania, jak Yb
i nie wymaga żadnych niestandardowych mapowań ani funkcji).