W Vimie, jak usunąć ostatnie słowo i zastąpić innym z mapą?


0

Jest to rodzaj pisania, które często robię:

Kiedy jestem wszędzie na słowie, lubię je kopiować, więc mam prosty

:nmap <Leader>y yiw

A potem przechodzę do innego słowa (wszędzie na nim), aby zastąpić słowem szarpanym, więc piszę

:nnoremap cp "_diwP

(cp dla wyczyść i wklej)

przykład:

poprzednie szarpane słowo: „cześć”

Działa idealnie, jeśli wykonam cp na „pasku” (zamień na poprzednie szarpane)

lorem ipsum bar foo
> lorem ipsum hello foo

ale gdy słowo znajduje się na końcu wiersza (np. z „foo”), daje

lorem ipsum bar foo
> lorem ipsum barhello

Więc mam

:nnoremap cP "_diwp

Pytanie brzmi, jak „scalić”

:nnoremap cp "_diwP
:nnoremap cP "_diwp

na jednej mapie?

Dziękuje Ci za pomoc.

Odpowiedzi:


0

Możesz użyć ciwzamiast, diwa następnie wkleić w trybie wstawiania:

:nnoremap cp "_ciw<C-r>"<Esc>

Lub zawsze używaj, Pale usuwaj tylko oryginalne słowo:

:nnoremap cp "_yiwPl"_de

"_yiwjest przejście do początku oryginalnego słowa ( bkończy się niepowodzeniem, jeśli kursor znajduje się już na pierwszym znaku tego słowa, a obejścia takie jak lbrównież mają pułapki, chyba że :set ve+=onemore).


Przyjąłem: nnoremap cp „_yiwPl” _de Bardzo dziękuję, uwielbiam twoją sztuczkę z „_yiw i nie wiem <<de>> (ale to logika)
Hettomei

dejest podobny, dwale nie usuwa białych znaków przed następnym słowem.
Nikita Kouevda

1

Moja wtyczka ReplaceWithRegister zapewnia grmapowanie podobne do twojego, które obsługuje specjalne przypadki takie jak twoje.

Ponadto możesz być zainteresowany wtyczką Smartput ; zmienia polecenia p/ P, aby automatycznie dostosowywać spacje, przecinki itp. Za jego pomocą możesz również osiągnąć swój cel (chociaż będziesz musiał go użyć :nmap, :nnoremapaby nie włączyć wtyczki w swoich mapowaniach).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.