Emacsでカーソルの下にある単語を検索
Vimの"*"に当たるものがEmacsにはないので既存のisearch-forwardを少し便利にしてみました.
isearch-forward-with-headingコマンド(isearch-forwardの前に単語の頭にカーソルを移動する)をC-sにバインドすることにより, カーソルの乗っている単語をC-s C-wでさくっと検索できるようになります.
6行目のgridのiの前にカーソルがあるときに,C-s C-wを押すと
検索できる.
カーソルのある位置の単語の頭にカーソルを持ってくるのはgtags.elのgtags-find-tagをインスパイアしたので長いですが,本当は5行ぐらいで書けると思います.「今いるカーソル下の単語の頭にカーソルを移動する」関数ってありそうですよね.
;; Heading to the beginning of word before incsearch ;; isearch-forward-with-headingで"isfh" (defconst isfh-symbol-regexp "[A-Za-z_][A-Za-z_0-9]*" "Regexp matching word chars.") (defconst isfh-symbol-chars "[0-9A-Za-z_]" "Regexp matching word char.") (defun isfh-match-string (n) (buffer-substring (match-beginning n) (match-end n))) (defun isfh-get-current-token () (cond ((looking-at isfh-symbol-chars) (while (looking-at isfh-symbol-chars) (forward-char -1)) (forward-char 1)) (t (while (looking-at "[ \t]") (forward-char 1)))) (if (looking-at isfh-symbol-regexp) (isfh-match-string 0) nil)) (defun isearch-forward-with-heading () "Search the word your cursor looking at." (interactive) (isfh-get-current-token) (command-execute 'isearch-forward)) (global-set-key "\C-s" 'isearch-forward-with-heading)
しゃじ
elim先生とmickey24先生にC-s C-wを教えてもらいました.あざっす.
http://twitter.com/elim/status/1018811586
←↓↑→ on Twitter: "@suztomo EmacsだとC-s C-wでVimの*と似たようなことができるけど,カーソル位置から単語末までしか検索対象にならないみたいだね."
追記
やっぱりあった: backward-word.
(defun isearch-forward-with-heading () "Search the word your cursor looking at." (interactive) (command-execute 'backward-word) (command-execute 'isearch-forward)) (global-set-key "\C-s" 'isearch-forward-with-heading)
これだけでok