Question

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 du texte qui est marqué dans le tampon courant. Semblable à ce que je peux faire dans le bloc-notes ou le wordpad. Comme dans Puis-je marquer du texte dans le tampon et faire un C-s ou C-r et être capable de rechercher avec le texte marqué sans taper réellement le texte entier de la recherche?

Merci,

Rohit

Était-ce utile?

La solution

Oui. M-W (pour obtenir une copie du texte sélectionné) C-s <RET> C-y <RET>. Ensuite, répétez C-s si nécessaire. De même pour C-r.

Autres conseils

@Alex le cloue.

Une autre option que j’utilise assez souvent est C-s C-w de rechercher le mot après la marque actuelle. Frapper C-w plusieurs fois augmente la recherche avec des mots supplémentaires (par exemple, C-s C-w C-w C-w recherche les 3 mots après la marque actuelle).

De même, C-s M-s C-e recherche le reste de la ligne après la marque actuelle et C-s C-M-y recherche le caractère après la marque. Ce sont tous deux répétables de la même manière (le premier en répétant de manière quelque peu maladroite M-s C-e après C-s).

J'utilise le texte suivant qui ne pose pas le problème de devoir taper plus d'un C-s successif pour rechercher 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 "<C-f3>") 'search-selection)

L'inconvénient du code précédent est que le texte sélectionné est copié dans l'étirement. Le code suivant n'a pas ce problème:

    (defun search-selection (beg end)
      "search for selected text"
      (interactive "r")
      (let (
            (selection (buffer-substring-no-properties beg end))
           )
        (deactivate-mark)
        (isearch-mode t nil nil nil)
        (isearch-yank-string selection)
      )
    )
    (define-key global-map (kbd "<C-f3>") 'search-selection)

Les autres réponses décrivent comment rechercher un texte copié ou comment rechercher le mot à la pointe. Mais aucun d’entre eux ne décrit réellement comment & Rechercher avec le texte marqué. & ";

L'ajout du crochet suivant fera en sorte que le texte actuellement sélectionné soit le texte utilisé pour une recherche:

(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-string region))))

(add-hook 'isearch-mode-hook #'jrh-isearch-with-region)

Conseil: Cela s’agence parfaitement avec région élargie .

La séquence de touches la plus courte pour faire cela est M - w C - s M - y .

Il existe une fonction intéressante pour cela: isearch-forward-symbol-at-point. Il met en évidence toutes les occurrences du mot où se trouve votre point - inutile de placer le point au début du mot. Ensuite, vous pouvez passer à la suivante ou à la précédente avec C-s ou C-r.

Notez que c'est une correspondance exacte: si vous l'utilisez sur hi, il ne correspondra pas à chill par exemple.

J'ai mappé si command-f (mac OSX): (global-set-key (kbd "s-f") 'isearch-forward-symbol-at-point) dans le fichier init.

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 mieux:

  

& # 8220; Ctrl + s Ctrl + w & # 8221 ;. Cela va rechercher le mot actuel, mais vous devez vous déplacer   votre curseur au début du mot en premier.

http: // xah- forum.blogspot.com/2009/08/search-word-under-cursor-in-emacs.html

Vous pouvez obtenir de l'aide de C-s en effectuant C-h k C-s, et il est écrit:

  

Tapez DEL pour annuler le dernier élément saisi à la fin de la chaîne de recherche. Type RET   pour sortir, laissant le point à l'endroit trouvé. Tapez LFD (C-j) pour faire correspondre la fin   de ligne. Tapez C-s pour rechercher à nouveau avant, C-r pour rechercher à nouveau   en arrière. Tapez C-w pour insérer le mot ou le caractère suivant dans la mémoire tampon sur le   fin de la chaîne de recherche et recherchez-la. Tapez C-M-w pour supprimer   caractère à partir de la fin de la chaîne de recherche. Type C-M-y pour extraire l'omble de   mettre en mémoire tampon la fin de la chaîne de recherche et la rechercher. Tapez M-s C-e à   tirez le reste de la ligne sur la fin de la chaîne de recherche et recherchez-la. Type   C-y pour tirer la dernière chaîne de texte tué. Tapez M-y pour remplacer la chaîne   juste tiré dans l'invite de recherche avec la chaîne tué avant elle. Type C-q   citer un caractère de contrôle pour le rechercher. Tapez C-x 8 RET pour ajouter un   caractère à rechercher par nom Unicode, avec complétion. C-g tandis que   la recherche ou lorsque la recherche a échoué annule la saisie de ce qui a   été trouvé avec succès. C-g lorsque la recherche est réussie avorte et   déplace le point vers le point de départ.

     

Si vous essayez de quitter avec la chaîne de recherche encore vide, il invoquera   recherche non incrémentale.

     

Tapez M-c pour basculer la recherche en respectant la casse. Tapez M-s i pour basculer   recherche en texte invisible. Tapez M-r pour activer le mode d’expression régulière.   Tapez M-s w pour basculer en mode mot. Tapez M-s _ pour basculer en mode symbole. Type   M-s 'pour basculer les caractères.

     

Tapez M-s SPC pour activer la correspondance d’espace. Dans les recherches incrémentielles, un   l’espace ou les espaces correspond normalement à n’importe quel espace défini par le   variable & # 8216; search-whitespace-regexp & # 8217 ;; voir aussi les variables   & # 8216; isearch-lax-whitespace & # 8217; et & # 8216; isearch-regexp-lax-whitespace & # 8217;.

     

Tapez M-s e pour modifier la chaîne de recherche dans le mini-tampon.

     

Un anneau de recherche des 16 chaînes de recherche précédentes est également pris en charge.   Tapez M-n pour rechercher l'élément suivant dans l'anneau de recherche. Tapez M-p à   rechercher l'élément précédent dans l'anneau de recherche. Type C-M-i à   complétez la chaîne de recherche à l'aide de l'anneau de recherche.

     

Tapez M-% pour exécuter & # 8216; query-replace & # 8217; avec ficelle à remplacer de la dernière   chaîne de recherche. Tapez C-M-% pour exécuter & # 8216; query-replace-regexp & # 8217; avec le dernier   chaîne de recherche. Tapez M-s o pour exécuter & # 8216; se produire & # 8217; cela montre la dernière recherche   chaîne. Tapez M-s h pour exécuter & # 8216; highlight-regexp & # 8217; qui met en évidence la   dernière chaîne de recherche.

     

Tapez C-h b pour afficher toutes les liaisons de clé Isearch. Tapez C-h k pour afficher   documentation de la clé Isearch. Tapez C-h m pour afficher la documentation de   Mode de recherche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top