Emacs: isearch Current Word
Here's a command to isearch the word under cursor.
(defun xah-search-current-word () "Call `isearch' on current word or text selection. “word” here is A to Z, a to z, and hyphen 「-」 and underline 「_」, independent of syntax table. URL `http://ergoemacs.org/emacs/modernization_isearch.html' Version 2015-04-09" (interactive) (let ( -p1 -p2 ) (if (use-region-p) (progn (setq -p1 (region-beginning)) (setq -p2 (region-end))) (save-excursion (skip-chars-backward "-_A-Za-z0-9") (setq -p1 (point)) (right-char) (skip-chars-forward "-_A-Za-z0-9") (setq -p2 (point)))) (setq mark-active nil) (when (< -p1 (point)) (goto-char -p1)) (isearch-mode t) (isearch-yank-string (buffer-substring-no-properties -p1 -p2))))
You need to give it a easy key. Such as F8. 〔➤see Emacs: How to Define Keys〕
Also, you should set your isearch repeat to arrow keys. Emacs: isearch by Arrow Keys.
Problem with Emacs's isearch
Emacs's “isearch” has some problems. Suppose you have this line:
… aa-bb-▮cc xx yy …
and your cursor is on the second dash. You want to search the next occurrence of the word “aa-bb-cc”. You have to press 【Alt+b Alt+b Ctrl+s Ctrl+w Ctrl+w Ctrl+w Ctrl+s】. That's about 8 keys. In vim, it's just a single key press 【*】.
addendum: Emacs 24.4 has the new command
isearch-forward-symbol-at-point that improved the situation but still pretty bad. Now to search current word under cursor, you need to press 【Alt+s . Alt+s _ Ctrl+s】. 〔➤see Emacs: Search / Highlight Words〕 Besides the too-many-keys problem, this command has more problems:
isearch-forward-symbol-at-pointis on “symbols” only. What chars are part of “symbol” is unpredictable, mode-dependent.
- The search is with boundary check. That is, if current symbol is “xyz”, it'll will not find occurrences of “xyz2”.
Find and Replace Topic
or, buy something from Best Keyboard for Emacs