J’utilise emacs pour visualiser et éditer du code et d’autres fichiers texte. Je voulais savoir s’il y avait un moyen de rechercher en avant ou en arrière le texte marqué dans le tampon actuel. Semblable à ce que je peux faire dans le bloc-notes ou le wordpad. Comme dans le cas, puis-je marquer du texte dans le tampon et faire un Cs ou un Cr et être capable de rechercher avec le texte marqué sans réellement taper dans tout le texte de recherche?
Je vous remercie,
Rohit
Oui. MW
(pour obtenir une copie du texte sélectionné) Cs
. Répétez ensuite Cs
au besoin. De même pour Cr
.
@Alex le cloue.
Une autre option que j’utilise assez souvent est Cs Cw
pour rechercher le mot après la marque en cours. Frapper Cw
plusieurs resockets augmente la recherche avec des mots supplémentaires (par exemple, Cs Cw Cw Cw
recherche les 3 mots après la marque en cours).
De même, Cs Ms Ce
recherche le rest de la ligne après la marque en cours et Cs CMy
recherche le caractère après la marque. Celles-ci sont toutes deux répétables de la même manière (la première en répétant quelque peu maladroitement Ms Ce
après Cs
).
J’utilise le suivant qui n’a pas le problème de devoir taper plus d’un Cs successif pour trouver des occurrences ultérieures:
(defun search-selection (beg end) "search for selected text" (interactive "r") (kill-ring-save beg end) (isearch-mode t nil nil nil) (isearch-yank-pop) ) (define-key global-map (kbd "") 'search-selection)
L’inconvénient du code précédent est que le texte sélectionné est copié sur le tronçon. Le code suivant n’a pas ce problème:
(defun search-selection (beg end) "search for selected text" (interactive "r") (let ( (selection (buffer-subssortingng-no-properties beg end)) ) (deactivate-mark) (isearch-mode t nil nil nil) (isearch-yank-ssortingng selection) ) ) (define-key global-map (kbd "") 'search-selection)
D’autres réponses décrivent comment rechercher un texte copié ou comment rechercher le mot au point. Mais aucun d’entre eux ne décrit comment “rechercher avec le texte marqué”.
L’ajout du hook suivant fera en sorte que le texte actuellement sélectionné est le texte utilisé pour une isearch:
(defun jrh-isearch-with-region () "Use region as the isearch text." (when mark-active (let ((region (funcall region-extract-function nil))) (deactivate-mark) (isearch-push-state) (isearch-yank-ssortingng region)))) (add-hook 'isearch-mode-hook #'jrh-isearch-with-region)
Astuce: Cela se marie bien avec expand-region .
La séquence de touches la plus courte est M – w C -s M -y .
Il y a une grande fonction pour cela: isearch-forward-symbol-at-point
. Il met en évidence toutes les occurrences du mot où se trouve votre point – pas besoin de placer le point au début du mot. Ensuite, vous pouvez passer à la prochaine ou à la précédente avec Cs ou Cr.
Notez que c’est une correspondance exacte: si vous l’utilisez sur hi
elle ne correspondra pas au chill
par exemple.
J’ai mappé si à command-f
(mac OSX): (global-set-key (kbd "sf") 'isearch-forward-symbol-at-point)
dans le fichier d’initialisation.
Les réponses ci-dessus (y compris celle acceptée) sont trop lourdes à mon humble avis. J’ai trouvé les informations suivantes et je les aime bien:
“Ctrl + s Ctrl + w”. Cela recherchera le mot actuel, mais vous devez d’abord déplacer votre curseur au début du mot.
http://xah-forum.blogspot.com/2009/08/search-word-under-cursor-in-emacs.html