skrót vi, aby usunąć „do następnego znaku X”

193

Rozumiem, że vi ma klawisze skrótów do usuwania znaków, słów i linii z różnymi opcjami.

Jednak nie mogłem tego znaleźć:

  • usuń z kursora do następnego określonego znaku

Na przykład, mogę wpisać du"oczekując, że edytor „usunie, dopóki nie "zostanie znaleziony następny znak”

Najbliżej wiem, d9wgdzie 9jest liczba słów do usunięcia.

Czy ktoś wie, czy to jest możliwe?

kctang
źródło
Jeśli interesują Cię Vi i Vim, mają teraz swoją własną stronę SE: Vi i Vim
deser

Odpowiedzi:

302

Użyj dtc, gdzie c jest dowolną postacią, np. Dla ciebie, którą chceszdt"

Spowoduje to usunięcie września, ale nie w tym c .

Gdybyś miał:

delete until exclamation point!

I kursor znajdował się na pierwszej spacji i podczas pisania wpisałeś dt!:

delete!

Również dfc.

Spowoduje to usunięcie do i włącznie c .

Użycie df!tego samego przykładu powyżej dałoby ci:

delete

Tylko o „ruchu” może być używany do d, c, yi podobnych poleceń.

Arcege
źródło
7
Przypuszczalnie mnemonik oznacza „do”? Niezła odpowiedź.
przemyśleli
15
Możesz także usunąć poprzednią instancję postaci za pomocą wielkiej wersji poleceń ruchu. Może bardziej przydatny dla przecinków - dT,i dF,.
joelostblom
3
To nie działa na wielu liniach.
0xcaff,
3
Czy można to zrobić na wielu liniach?
Ray
2
Aby zrobić coś podobnego w zakresie wierszy, można wykonać zwykłe wyszukiwanie (jak w odpowiedzi zpletan): d/wordwyszukiwanie do word. Po nim musi być enter (aby zamknąć wyszukiwanie).
Eric O Lebigot,
59
  • Aby usunąć naprzód do znaku „X”, wpisz dtX

  • Aby usunąć do przodu za pomocą znaku „X” dfX

  • Aby usunąć wstecz do znaku „X”, wpisz dTX

  • Aby usunąć wstecz za pomocą znaku „X” dFX

Mark Wong
źródło
30

Wejście dt # (nie polecenie: użyj go jak ruchu takiego jak G)

usunie się z kursora, ale nie uwzględniając #. Możesz podstawić dowolny znak na #.

Jessie
źródło
2
To właściwa odpowiedź! df # usunie również #.
Wietnam
szukałem tego, to jest niesamowite
Nadeem Khedr
18

Wygląda na to, że @Arcege już odpowiedział na pytanie, ale musiałem go d/lusunąć, dopóki znak l; inne postacie też by działały.

zpletan
źródło
3
Działa to w przypadku nowych linii.
jasonszhao
Uwaga: po tym musi być Enter.
Eric O Lebigot,
6

wprzechodzi do następującego słowa. lprzechodzi do następującego charactera.

Dlatego należy d9lusunąć kolejne 9 znaków.

Shun Zhang
źródło
2
Zamknij, lto klawisz strzałki w prawo Vima, więc właściwie usuwasz. I odwrotnie, d9husunęłoby 9 znaków pozostałych.
Walf