Usuń od kursora do n-tego wystąpienia znaku x


16

Wiem, że mogę usunąć z kursorem aż włącznie pierwszego wystąpienia danego znaku X z d/x<CR>lub ze v/x<CR>djeśli chcę zobaczyć wybór, a następnie usunąć. Jak mogę usunąć z bieżącej pozycji kursora do n- tego wystąpienia x ?

Na przykład, jeśli kursor znajduje się za pierwszą spacją w

yada yada yada
yada yada yada x
yada yada yada x
yada yada yada x

xx

i wpisuję polecenie, aby usunąć do trzeciego x wynik musi być:

yada
xx

Odpowiedzi:


22

Możesz to zrobić :

wd4/x<Enter>

Jeśli zaczniesz w lewym górnym rogu tekstu

Wyjaśnienie

  • w : przejście do początku następnego słowa
  • d : usunąć
  • 4/x<Enter> : do czwartego wystąpienia x

Jeśli nie wiesz, ile razy chcesz to zrobić wcześniej, możesz również: d/x<Enter>a następnie nacisnąć, .aby powtórzyć


5
Końcówka Bonus: To działa również fi przyjaciele ( F, t, T, ;): np 2fxbędzie Ci na sekundę x, lub 2;powtórzy ostatni fdwukrotnie.
Martin Tournoij

1
@Carpetsmoker: Działa to tylko w przypadku liter w bieżącym wierszu.
Jürgen Krämer,

5

Możesz to zrobić, pisząc

<n>df<x>

gdzie:

<n> is the number of occurrence of particular character
df<x> means delete till you find the occurrence of character x

0
<n>macro 

jest powszechnie używany w vimie do powtarzania makra „n” razy.

więc aby usunąć do pierwszego wystąpienia x, użyłbyś 1dfx. Podobnie, aby usunąć do trzeciego wystąpienia x, użyłbyś 3dfx.


1
Myślę, że przegapiłeś słowo „makro”: w vim makro jest sekwencją klucza zapisaną w rejestrze i wywołujesz @xgdzie xjest twój rejestr. To, o czym mówisz, to polecenie trybu normalnego.
statox

Tak, miałem na myśli normalne polecenie. Ale dotyczy to również makra. Możemy uruchomić makro n razy, dodając liczbę przed makrem.
thenakulchawla

1
Tak to prawda. Właśnie wskazałem, że <n>macronie jest to standardowa notacja w vimie dla makr, a ponieważ twoja odpowiedź używa polecenia trybu normalnego, jest prawie taka sama jak komenda kapila.
statox

0

Dany:

yada yada yada$
yada yada yada x$
yada yada yada x$
yada yada yada x$
xx$

gdzie $wskazują końce linii ( :set listtryb), jeśli kursor znajduje się na początku drugiej yadalinii w pierwszym wierszu, najpierw musimy cofnąć się do poprzedniej spacji za pomocą h, aby uwzględnić ją podczas usuwania. Więc po prostu 4d/xEnter. Innymi słowy, tylko liczba przed d/x. Wynik jest dokładnie:

yada$
xx$
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.