2009-10-22 19 views
129

Spesso quando si sviluppa mi trovo di fronte a un oggetto nidificato che mi piacerebbe cancellare dal codice nel bel mezzo di una linea come questa:VIM: l'eliminazione dalla posizione attuale fino uno spazio

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

La parte che mi piacerebbe eliminare è:

this.cbAllSyncs.SelectedItem.ToString() 

so che posso contare il numero di parole e periodi e inserire dw a de lete dalla posizione corrente del cursore su "questo". Tuttavia, quello che mi piacerebbe fare è non dover contare affatto e cancellare nello spazio con un solo comando. È possibile?

risposta

243

Prova dtspazio. In generale dtx cancella dalla posizione corrente fino a poco prima x. Solo tx sposta il cursore immediatamente prima del carattere x nella riga corrente.

Per eliminare fino al lo spazio, utilizzare dfspazio.

+0

Questa grande opera! Mi dà anche una certa flessibilità per arrivare ad altri punti certi all'interno di quell'oggetto. Grazie! –

+25

'df ' elimina fino a includere lo spazio successivo. –

+5

ugualmente utile, dfT elimina nello spazio precedente. – hgmnz

54

È possibile utilizzare dW o dE come @glenn suggerito se non si desidera eliminare lo spazio stesso.

A WORD (W maiuscolo) è costituito da una sequenza di caratteri non vuoti, separati da uno spazio bianco .

Dai uno sguardo allo word motions.

+0

Se potessi votare per due risposte che sarebbe, dal momento che questo risolve la domanda specifica che ho chiesto. Grazie per il link! –

+3

o 'dE' - cancella fino alla fine della sequenza di caratteri non vuoti (non include il seguente vuoto) –

+0

@BlakeBlackwell Chi dice che non puoi votare per due risposte? l'ho già fatto su questa domanda Questa è v informazioni utili. – javadba

16

una possibile soluzione è utilizzare l'eliminazione con una ricerca.

quindi digitare d/<space> e vim eliminerà finché non raggiunge uno spazio.

+2

Questo è più generale di 'dW' perché puoi anche usarlo per eliminare dal cursore qualsiasi carattere, come' 2d/+ ', in questo caso - che eliminerebbe anche le concatenazioni di stringhe. –

+1

si può fare 2dW e questo si comporta altrettanto bene. infatti la considero una soluzione migliore dal momento che funzionerà anche con schede e altri spazi bianchi. Rimuove anche gli spazi bianchi finali che si desidera eliminare fino a. – barkmadley

1

dtspazio è la risposta alla tua domanda, ma df+ sembra che sarà risolvere il problema meglio.

+0

Non fa niente per me. –

11

Se si desidera eliminare dal ovunque all'interno della parola, e in un unico comando, basta usare daW

(si può ovviamente utilizzare dunw se si desidera limite a una parola)

io lo uso un bel po 'perché si risparmia una mossa per l'inizio della parola (nel tuo caso)

+0

daw e daW si comportano allo stesso modo per me - entrambi cancellano l'intera parola indipendentemente dalla lettera su cui si trova il mio cursore. Non so perché. – Will

+0

daw non cancellerà gli spazi bianchi dopo la parola, mentre daW sarà – Louis

1
  • eliminare per la posizione corrente di un esempio specifico carattere "

    dt"
  • eliminare la parola dalla posizione del cursore è fino alla fine della parola

    dw
  • eliminare l'intero parola il cursore si trova indipendentemente dalla posizione in cui si trova il cursore sulla parola, questo ti mette anche in modalità di inserimento per consentire l'inserimento immediato.

    diw
+0

Grazie, con la tua spiegazione capisco come funziona l'eliminazione – Maxim

Problemi correlati