Beaucoup des réponses ici n'abordent pas vraiment la question directement. L'auteur veut savoir comment supprimer jusqu'au premier caractère non-espace. Certaines des réponses peuvent techniquement fonctionner, mais regardons comment faire cela explicitement.
Les exemples suivants démontrent comment faire cela en mode normal avec des variations qui tiennent compte de la position de départ du curseur. Les c̲aractères s̲oulignés indiquent la position du curseur :
dw: foo_ bar → foob̲ar
La commande delete word, décrite dans d'autres réponses, fonctionne très bien pour supprimer jusqu'au prochain caractère non-espace lorsque notre curseur est positionné avant la cible.
db: foo b̲ar → b̲ar
Naturellement, nous voudrions essayer l'inverse de dw pour supprimer en arrière jusqu'au premier caractère non-espace avant le curseur. Cependant, comme montré ci-dessus, la commande delete back-word supprime plus que ce que l'on attend - elle efface également le mot précédent. Pour ce cas, nous devrions utiliser :
dT: foo b̲ar → foob̲ar
...où est le premier caractère non-espace avant le curseur. La commande delete back-unTil efface tout jusqu'à mais sans inclure le caractère , qui, dans ce cas, est le caractère o à la fin de "foo".
dt: foo_ bar → foob̲ar
Similaire à la commande précédente, nous pouvons utiliser delete until (avec un "t" minuscule) pour supprimer des caractères en avant jusqu'au prochain caractère (le b dans "bar", par exemple). Cela atteint le même résultat que dw dans le but de cette question.
diw: foo _ bar → foob̲ar
Si notre curseur est positionné au milieu de l'espace, nous pouvons utiliser la commande delete inner word pour supprimer l'espace des deux côtés.
d/↵: foo_ \n
bar → foob̲ar
Si l'espace que nous voulons supprimer inclut des sauts de ligne, nous pouvons utiliser la commande indiquée ci-dessus pour delete until matched pattern of , où le pattern dans ce cas est juste le premier caractère non-espace. Comme montré, appuyez sur Enter pour compléter cette commande.
Lorsque le premier caractère non-espace se trouve au début de la ligne après le saut, Vim supprimera l'espace, mais la cible restera sur la ligne suivante. Nous devons ajouter J à la commande ci-dessus pour Join les lignes (un "j" majuscule).
d/↵J: foo_ \n
bar → foob̲ar