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?

Blake Blackwell
źródło

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.

dobrze
źródło
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 .

CMS
źródło
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ę.

barkmadley
źródło
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)

Louis
źródło
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
Naseeruddin VN
źródło
2

dtspacejest odpowiedzią na Twoje pytanie, ale df+wygląda na to, że lepiej rozwiąże Twój problem.

Dan Goldstein
źródło
To nic dla mnie nie robi.
Guillermo Siliceo Trueba