Je passe maintenant VIM
de TextMate. J'ai trouvé ^+W
en mode INSERT très utile. Cependant, je voudrais supprimer non seulement le mot avant le curseur, mais aussi le mot après ou autour du curseur.
J'ai fait quelques recherches sur Google, mais la seule chose que je puisse trouver était ^+W
de supprimer le mot AVANT le curseur.
vim
keyboard-shortcuts
Mantas
la source
la source
imap <C-d> <C-o>diw
marche aussi. Il ne crée pas non plus de point d'annulation, ce que <Esc> fait presque toujours.Mode normal:
la source
da)
etci)
mais jamais pensé à cela!.vimrc
fichier comme ceci:nmap <Leader>d daw
etnmap <Leader>c caw
aw
c'est un exemple de sélection d'objet. Vous pouvez essayer les sélections d'objets en mode visuel pour voir leur effet: vimdoc.sourceforge.net/htmldoc/motion.html#object-selectJe pense que c'est juste
daw
la source
a
c'est une commande pourAppend text after the cursor [count] times.
mais comment çadaw
marche?d
que vous "supprimerez". Le «a» est une sorte de paramètre, spécifiant que la suppression doit inclure un délimiteur. Enfin le «w», un autreparameter
-si vous voulez- spécifie qu'uneword
unité sera supprimée.dw
etdaw
?dw
supprimera du curseur jusqu'à la fin du mot, tandis quedaw
supprimera le mot entier avec un espace.diw
supprimera le mot entier sans toucher les espaces autour.Ce qui suit fonctionne pour le mode normal: je suis d'accord avec la réponse de Dan Olson selon laquelle vous devriez probablement être en mode normal pour la plupart des suppressions. Plus de détails ci-dessous.
Si le curseur est à l'intérieur du mot:
diw
à supprimer dans le mot (n'inclut pas les espaces)daw
supprimer autour du mot (inclut les espaces avant le mot suivant).Si le curseur est au début du mot, appuyez simplement sur
dw
.Cela peut être multiplié en ajoutant les nombres habituels pour le mouvement, par exemple 2w pour avancer de 2 mots, donc d2w supprime deux mots.
Mode d'insertion ^ w
L'idée d'utiliser hjkl pour se déplacer dans Vim est qu'il est plus productif de garder les mains sur la ligne de départ. À la fin d'un mot, ^ w fonctionne très bien pour supprimer rapidement le mot. Si vous êtes passé en mode insertion, saisissez du texte et utilisez les touches fléchées pour vous retrouver au milieu du mot que vous êtes allé à l'encontre de la philosophie de la ligne de départ.
Si vous êtes en mode normal et que vous voulez changer le mot, vous pouvez simplement utiliser le
c
(changer) plutôt qued
(supprimer) si vous souhaitez changer complètement le mot et revenir en mode d'insertion sans avoir à appuyer suri
pour revenir à taper.la source
Voulez-vous dire comme?
la source
dw
ne supprimera pas au-delà d'un trait d'union ou d'une autre ponctuation.Pour supprimer tous les caractères entre deux espaces blancs, en mode normal:
Pour supprimer un seul mot:
la source
Il ne semble pas y avoir de moyen intégré de le faire en mode insertion, c'était la question. Certaines des autres réponses sont correctes pour le mode normal, tout en soulignant qu'un mappage personnalisé pourrait être créé pour ajouter la fonctionnalité en mode insertion.
Honnêtement, vous devriez probablement faire la plupart de vos suppressions en mode normal. ^ W est bien connu, mais je ne suis pas sûr de pouvoir penser à une situation où je préférerais le faire plutôt qu'esc pour passer en mode normal et avoir les commandes de suppression les plus puissantes à ma disposition.
Vim est très différent d'un certain nombre d'autres éditeurs (y compris TextMate) de cette façon. Si vous l'utilisez de manière productive, vous constaterez probablement que vous ne passez pas beaucoup de temps en mode insertion.
la source
Pour supprimer le mot entier, votre curseur est
diw
activé. Pour supprimer le mot entier, votre curseur est activé et vous mettre en mode insertion
ciw
si vous ne voulez pas supprimer le mot entier mais supprimez d'où vous êtes.
dw/cw
la source
Puisqu'il y a tellement de façons de supprimer un mot, illustrons-les.
En supposant que vous modifiez:
et appeler une commande alors que le curseur est sur la barre 'a' dans ':
la source
Le mode d'insertion n'a malheureusement pas une telle commande. Dans VIM, pour supprimer le mot entier sous le curseur, vous pouvez taper
viwd
en mode NORMAL. Ce qui signifie " V isual-block I nner W ord D elete". Utilisez des majusculesW
pour inclure la ponctuation.la source
La réponse acceptée échoue lorsque vous essayez de répéter la suppression de mots, essayez plutôt cette solution:
Il mappe CTRL-BackSpace, fonctionnant également en mode normal.
la source
Pour supprimer une certaine quantité de caractères avant le curseur, vous pouvez utiliser X. Pour supprimer un certain nombre de mots après le curseur, vous pouvez utiliser dw (plusieurs mots peuvent être supprimés en utilisant 3dw pour 3 mots par exemple). Pour supprimer autour du curseur en général, vous pouvez utiliser daw.
la source
Dans l'ancien vi,
b
déplace le curseur au début du mot avant curseur,w
déplace le curseur au début du mot après curseur,e
déplace le curseur à la fin du mot après curseur etdw
supprime du curseur à la fin du mot.Si vous tapez
wbdw
, vous supprimez le mot autour du curseur, même si le curseur se trouve au début ou à la fin du mot. Notez que les espaces après un mot sont considérés comme faisant partie du mot à supprimer.la source
Pas vraiment sûr de votre utilisation de "avant" et "après", mais avez-vous essayé
?
Edit: je suppose que vous cherchez quelque chose à utiliser en mode insertion. Curieusement, il n'y a rien dans la documentation, ctrl-w semble être tout ce qu'il y a.
la source
J'ai fait deux mappages afin que je puisse obtenir une cohérence en mode insertion et hors mode insertion.
:map <'Key of your choice'> caw
:imap <'Key of your choice'> <'Esc'> caw
la source
Dans ce cas, la solution proposée par OP (c'est-à-dire en utilisant
<c-w>
) peut être combinée avec la réponse acceptée pour donner:alternativement (solution plus courte):
Exemple d'entrée:
Production:
la source