VIM: usuwanie od aktualnej pozycji do spacji


172

Często podczas programowania mam do czynienia z zagnieżdżonym obiektem, który chciałbym usunąć z kodu w środku takiej linii:

htmlDoc.WriteLine("<b><h3>" + this.cbAllSyncs.SelectedItem.ToString() + "</h3></b>");

Część, którą chciałbym usunąć, to:

this.cbAllSyncs.SelectedItem.ToString()

Wiem, że mogę policzyć liczbę słów i kropek i wprowadzić, 7dwaby usunąć z mojej bieżącej pozycji kursora „to”. Jednak to, co chciałbym zrobić, to w ogóle nie liczyć i usuwać do miejsca jednym poleceniem. czy to możliwe?

Odpowiedzi:


343

Spróbuj dtspace. Ogólnie dtxusuwa od aktualnej pozycji do tuż przed x. Po prostu txprzesuwa kursor tuż przed znakiem xw bieżącej linii.

Aby usunąć do spacji włącznie, użyj dfspace.


2
To działa świetnie! Daje mi również pewną dodatkową elastyczność, aby dostać się do innych określonych punktów w tym obiekcie. Dzięki!
Blake Blackwell

27
df<space>usuwa do i włączając następną spację.
glenn jackman

5
równie przydatne, dfT <spacja> usuwa z poprzedniej przestrzeni.
hgmnz

3
Możesz również dodać liczbę tuż przed, taby usunąć do tylu znaków. np. d2t<space>usunie do dwóch spacji.
Waseem

7
Zawsze używam mnemonika tjako „till stackoverflow.com/questions/7409134/ ...
acw

71

Możesz użyć dWlub dEzgodnie z sugestią @glenn , jeśli nie chcesz usuwać samego miejsca.

WORD (wielkie litery W) składa się z sekwencji nie wprost, oddzielone białą przestrzeni.

Spójrz na ruchy słów .


1
Gdybym mógł głosować za dwiema odpowiedziami, zrobiłbym to, ponieważ rozwiązuje to konkretne pytanie, które zadałem. Dzięki za link!
Blake Blackwell

5
lub dE- usuń do końca ciąg znaków innych niż puste (nie obejmuje następującego
odstępu

@BlakeBlackwell Kto powiedział, że nie możesz głosować na dwie odpowiedzi? Zrobiłem to już w tej sprawie. To jest przydatne informacje.
javadba

20

jednym z możliwych rozwiązań jest użycie funkcji usuwania z wyszukiwaniem.

więc wpisz, d/<space>a vim usunie, dopóki nie trafi w spację.


2
Jest to bardziej ogólne niż dWdlatego, że można go również użyć do usunięcia z kursora do dowolnego znaku, na przykład 2d/+w tym przypadku - co spowoduje również usunięcie konkatenacji ciągów.
Dave Jarvis

1
możesz zrobić 2dW i to działa równie dobrze. w rzeczywistości uważam to za lepsze rozwiązanie, ponieważ będzie działać również z kartami i innymi białymi znakami. Usuwa również końcowe spacje, które chcesz usunąć do.
barkmadley

15

Jeśli chcesz usunąć z dowolnego miejsca wewnątrz WORD, za pomocą jednego polecenia, po prostu użyj daW

(możesz oczywiście użyć, dawjeśli chcesz ograniczyć się do jednego słowa)

Używam go dość często, ponieważ oszczędza to ruchu na początku słowa (w twoim przypadku)


daw i daW zachowują się dla mnie tak samo - oba usuwają całe słowo bez względu na to, na której literze znajduje się mój kursor. Nie pewny dlaczego.
Will

daw nie usunie białych spacji po słowie, podczas gdy daW to zrobi
Louis

4
  • usuń dla bieżącej pozycji do konkretnego przykładu znaku "

    dt "
  • usunąć słowo od pozycji, na której znajduje się kursor, aż do końca słowa

    dw
  • usuń całe słowo, na którym znajduje się kursor, niezależnie od pozycji, w której znajduje się kursor na słowie, to również przełącza Cię w tryb wstawiania, aby umożliwić natychmiastowe wstawienie.

    diw

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.