VIM: suppression de la position actuelle jusqu'à un espace

172

Souvent, lors du développement, je suis confronté à un objet imbriqué que j'aimerais supprimer du code au milieu d'une ligne comme celle-ci:

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

La partie que je voudrais supprimer est:

this.cbAllSyncs.SelectedItem.ToString()

Je sais que je peux compter le nombre de mots et de points et entrer 7dwpour supprimer de la position actuelle du curseur "ceci". Cependant, ce que j'aimerais faire, c'est ne pas avoir à compter du tout et supprimer dans l'espace avec une seule commande. Est-ce possible?

Blake Blackwell
la source

Réponses:

343

Essayez dtspace. En général dtxsupprime de la position actuelle jusqu'à juste avant x. Il suffit de txdéplacer le curseur juste avant le caractère de xla ligne courante.

Pour supprimer jusqu'à et y compris l'espace, utilisez dfspace.

amit
la source
2
Cela fonctionne très bien! Cela me donne également une certaine flexibilité supplémentaire pour arriver à d'autres certains points de cet objet. Merci!
Blake Blackwell
27
df<space>supprime jusqu'à et y compris l'espace suivant.
glenn jackman
5
tout aussi utile, dfT <espace> supprime jusqu'à l'espace précédent.
hgmnz
3
Vous pouvez également ajouter un décompte juste avant le tpour supprimer jusqu'à autant de caractères. par exemple d2t<space>supprimera jusqu'à deux espaces.
Waseem
7
J'utilise toujours le mnémonique tcomme 'till stackoverflow.com/questions/7409134
...
71

Vous pouvez utiliser dWou dEcomme @glenn suggéré si vous ne souhaitez pas supprimer l'espace lui-même.

Un MOT (W majuscule) se compose d'une séquence de caractères non vides, séparés par des espaces.

Jetez un œil aux motions .

CMS
la source
1
Si je pouvais voter pour deux réponses, je le ferais, car cela résout la question précise que j'ai posée. Merci pour le lien!
Blake Blackwell
5
ou dE- supprimer jusqu'à la fin de la séquence de caractères non vierges (n'inclut pas le blanc suivant)
glenn jackman
@BlakeBlackwell Qui a dit que vous ne pouviez pas voter pour deux réponses? je l'ai déjà fait sur cette question. Ce sont des informations utiles.
javadba
20

une solution possible consiste à utiliser la suppression avec une recherche.

alors tapez d/<space>et vim supprimera jusqu'à ce qu'il atteigne un espace.

barkmadley
la source
2
Ceci est plus général que dWparce que vous pouvez également l'utiliser pour supprimer du curseur vers n'importe quel caractère, tel que 2d/+, dans ce cas, ce qui supprimerait également les concaténations de chaînes.
Dave Jarvis
1
vous pouvez faire 2dW et cela fonctionne tout aussi bien. en fait, je considère que c'est une meilleure solution car elle fonctionnera également avec les onglets et autres espaces. Il supprime également l'espace blanc de fin que vous souhaitez supprimer jusqu'à.
barkmadley
15

Si vous souhaitez supprimer n'importe où dans le MOT, et en une seule commande, utilisez simplement daW

(vous pouvez bien sûr utiliser dawsi vous souhaitez vous limiter à un mot)

Je l'utilise beaucoup car cela évite de passer au début du mot (dans votre cas)

Louis
la source
daw et daW se comportent de la même manière pour moi - tous deux suppriment le mot entier, quelle que soit la lettre sur laquelle se trouve le curseur. Pas certain de pourquoi.
Will
daw ne supprimera pas les espaces blancs après le mot, alors que daW le fera
Louis
5
  • supprimer pour la position actuelle à un exemple de caractère spécifique "

    dt "
  • supprimer le mot de la position le curseur est allumé jusqu'à la fin du mot

    dw
  • supprimer le mot entier sur lequel se trouve le curseur quelle que soit la position du curseur sur le mot, cela vous met également en mode insertion pour vous permettre d'insérer immédiatement.

    diw
Naseeruddin VN
la source
2

dtspaceest la réponse à votre question, mais il df+semble que cela résoudra mieux votre problème.

Dan Goldstein
la source
Ça ne fait rien pour moi.
Guillermo Siliceo Trueba