jak zmapować klawisz Y (shift + y) do kopiowania z bieżącej pozycji kursora zamiast kopiowania całej linii?

Nov 20 2020

Chciałbym zmapować shift+yklawisz, 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

2 filbranden Nov 20 2020 at 06:48

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 vjako operatora (lub modyfikatora dla operatora), aby przełączyć bruch 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 Ypolecenie 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 ebę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 voperatora bezpośrednio, yvbjest tak łatwy do wpisania, jak Ybi nie wymaga żadnych niestandardowych mapowań ani funkcji).