在Vim中,正常模式下的*键搜索光标下的单词.在GNU Emacs中,最接近的本机等价物将是:
C-s C-w
Run Code Online (Sandbox Code Playgroud)
但这并不完全相同.它打开增量搜索迷你缓冲区,并从当前缓冲区中的光标复制到单词的末尾.在Vim中,你会搜索整个单词,即使你在按*时也在单词的中间.
我已经煮了一些elisp来做类似的事情:
(defun find-word-under-cursor (arg)
(interactive "p")
(if (looking-at "\\<") () (re-search-backward "\\<" (point-min)))
(isearch-forward))
Run Code Online (Sandbox Code Playgroud)
在点燃之前,它会向后退到单词的开头.我把它绑定到C- +,这很容易在我的键盘上打字,类似于*,所以当我输入C-+ C-w它从单词的开头复制到搜索迷你缓冲区.
但是,这仍然不完美.理想情况下,它会regexp搜索"\<" word "\>"不显示部分匹配(搜索单词"bar"不应匹配"foobar",只是"bar"自己).我尝试使用search-forward-regexp和concat'ing\<>但是这并没有包装在文件中,没有突出显示匹配并且通常非常蹩脚.isearch-*函数似乎是最好的选择,但是这些在编写脚本时表现不佳.
有任何想法吗?任何人都可以对elisp的位进行任何改进吗?还是有其他一些我忽略的方式?