Lors de la recherche d'une chaîne avec C-s
, je veux pouvoir appuyer sur une touche pour quitter le mode de recherche tout en conservant la sélection de la correspondance. De cette façon, je peux immédiatement commencer à taper et remplacer la dernière correspondance.
Par exemple, disons que j'ai le document suivant:
The quick brown fox jumps over the lazy dog.
Si je recherche "paresseux", emacs sélectionnera ce mot comme ça (les crochets sont la sélection, le pipe est le curseur):
The quick brown fox jumps over the [lazy|] dog.
Maintenant, si j'appuie return, emacs conservera la position de mon curseur, mais il désélectionnera "paresseux":
The quick brown fox jumps over the lazy| dog.
Au lieu de cela, je veux un raccourci qui quittera le mode de recherche mais conservera la sélection de correspondance actuelle, comme dans le deuxième état ci-dessus.
M-x query-replace
ce pas ce que vous cherchez?C-s
et de taper ce que je pense que je veux rechercher, puis de changer la requête avec retour arrière à zéro sur la chose que je veux changer. Ensuite, je joue avec quoi exactement je veux le remplacer.M-%
est trop «formel».query-replace
ne résout pas cela.Réponses:
Voici une approche:
Cela lie une clé différente (C-return) pour quitter la recherche en cours et laisser également la dernière correspondance sélectionnée. Cela fonctionnera
isearch-forward-regexp
également, ce qui est pratique.la source
bind-key
vient-il?bind-key
vient d'une autre bibliothèque. J'ai changé la réponse pour utiliser ladefine-key
fonction intégrée à la place.La bibliothèque Isearch + vous permet de le faire facilement et même de l'activer / le désactiver à la volée.
L'option non nulle
isearchp-set-region-flag
définit automatiquement la région (sélection) autour de la dernière cible de recherche lorsque vous quittez isearch.Commande
isearchp-toggle-set-region
, liée à l'M-s M-SPC
option isearch basculeisearchp-set-region-flag
.La commande
set-region-around-search-target
définit manuellement la région autour de la dernière cible de recherche. (Donc, même si l'option n'est pas définie, afin que vous n'obteniez pas de sélection automatique, vous pouvez le faire manuellement.)Library Replace + vous permet de faire la même chose pour
query-replace
etc. Il place la région autour (c.-à-d. Sélectionne) la dernière occurrence de remplacement. Il utilise la même option,,isearchp-set-region-flag
pour contrôler cela, et la commandeset-region-around-search-target
a le même effet.la source