Comment remplacer le mot actuel sous le curseur dans Emacs?
Je sais que je peux utiliser query-replace ou replace-string mais chaque fois que je le fais, je dois taper une chaîne entière à remplacer, c'est juste ennuyeux.
Vi a la commande cword équivalente et je peux utiliser un raccourci pour tirer le mot sous le curseur pour le remplacer:
nmap <leader>z :%s#\<<C-r>=expand("<cword>")<CR>\>#
Quelqu'un sait comment le faire avec Emacs?
Réponses:
Utilisez le copier-coller:
M-d C-_ M-x replace-string RET C-y
(kill-word
,undo
,replace-string
,yank
). Si vous avez déjà commencé le remplacement, vous pouvez revenir à la mémoire tampon d' origine pour faire le copier-coller avec la fenêtre habituelle ou tampon des commandes de commutation:M-x replace-string RET … C-x o M-d C-_ C-x o C-y
. Vous pouvez utiliser un argument préfixe surM-d
(par exempleESC 4 2 M-d
) pour remplacer plusieurs mots.Si vous prévoyez de remplacer un ou plusieurs mots au niveau du curseur, vous pouvez plutôt commencer à partir de la recherche incrémentielle (
C-s
), utiliserC-w
pour commencer la recherche du mot sous le curseur, puis appuyez surM-%
pour passer àreplace-string
.la source
La recherche incrémentale a cette fonctionnalité, mais pas les fonctions de remplacement. Heureusement, la recherche incrémentielle permet de passer en mode de remplacement une fois que vous avez sélectionné un terme de recherche. Alors:
Comme vous le savez probablement en utilisant M-%normalement, il s'agit d'un mode de remplacement de requête dans lequel il vous demande quoi faire avec chaque correspondance. Si vous voulez simplement les remplacer tous, appuyez !sur le premier match
la source
la source
Je suis absolument nouveau sur emacs mais je peux suggérer ce qui suit:
Vous pouvez maintenant écrire un nouveau mot. Fonctionne presque comme
cw
dans vimla source
Si vous allez dans la recherche et le remplacement en
M-S-%
appuyant simplement surM-n
remplit le mot sous le curseur, appuyez à nouveau pour l'envelopper dans le "délimiteur de symboles".la source
Je luttais et je voulais la même chose depuis mon passage de Vim à Emacs.
Après quelques recherches et expérimentations, j'ai trouvé la fonction ci-dessous qui vous permet de faire la même chose avec le paquet Evil installé ou en utilisant spacemacs.
Il fonctionne également avec la région active (ou la sélection visuelle en terme de vim) et cela peut être très utile pour remplacer un mot comme abc-def-hij:
puis dans votre init.el, définissez la même liaison de clé:
la liaison de touches est légèrement différente de celle de vim qui est "espace z" mais je n'ai pas compris comment mapper cela dans emacs quand le mode diabolique est là. continuez à vous plaindre pas un préfixe etc et je suis relativement nouveau pour emacs. Mais toujours pas trop mal et je suis satisfait de cette solution pour le moment.
la source
Cela a déjà été répondu et je ne peux pas commenter car je n'ai pas encore assez de réputation. Mais ce que vous cherchez est
ciw
en vim.Dans emacs, le plus proche que je suis venu est cette combinaison:
M-b M-d
Cela remonte au début du mot sur lequel se trouve le curseur, puis supprime le mot.
la source