Emacs:将光标处的单词插入替换字符串查询

11

是否有一种类似于在isearch查询中按C-s之后通过按C-w插入点之后的单词,但用于替换字符串(和替换正则表达式)查询的 analoque呢?

我也喜欢Sacha Chua的修改版C-x,可以将光标周围的整个单词插入到isearch中:

http://sachachua.com/blog/2008/07/emacs-keyboard-shortcuts-for-navigating-code/

如果它能用于替换字符串,那么这对某些情况非常有用。

如果你有任何提示,我将不胜感激! 谢谢!


一个替代的答案 - Y. E.
3个回答

10

这样做可以解决问题,尽管它不像在isearch中使用C-w那么高级,因为你不能一直按那个键来扩展选择:

(defun my-minibuffer-insert-word-at-point ()
  "Get word at point in original buffer and insert it to minibuffer."
  (interactive)
  (let (word beg)
    (with-current-buffer (window-buffer (minibuffer-selected-window))
      (save-excursion
        (skip-syntax-backward "w_")
        (setq beg (point))
        (skip-syntax-forward "w_")
        (setq word (buffer-substring-no-properties beg (point)))))
    (when word
      (insert word))))

(defun my-minibuffer-setup-hook ()
  (local-set-key (kbd "C-w") 'my-minibuffer-insert-word-at-point))

(add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook)

编辑:请注意,这是在标准的迷你缓冲区中,因此您可以在任何具有迷你缓冲区提示的地方使用它,例如在grep、occur等工具中。


谢谢您的快速回答!这绝对足够接近,并且具有更普遍的优势!谢谢! - user673592

2

2

两个答案:

  1. Replace+ 在调用替换命令时会自动选择光标处的文本作为默认值。

  2. 更普遍地说,Icicles 做了与 scottfrazer 的代码(上面)类似的事情,但它更加通用。在任何时候,在任何迷你缓冲区中,您都可以按下 M-.(默认情况下),以拾取光标处的文本(“things”)并将其插入到迷你缓冲区中。您可以重复此操作,要么(a)拾取同一种类型的连续的“things”(例如单词),像 Isearch 一样累积它们,或者(b)拾取不同的“things”。有关详细说明,请单击这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接