Emacs:在点处插入单词替换字符串查询

时间:2011-11-24 12:25:12

标签: emacs

C-w之后点击C-s但是对于替换字符串(并替换regexp)查询,是否有类似于将单词插入到isearch查询之后?

我也很喜欢Sacha Chua修改C-x将整个单词插入isearch:

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

如果可以在替换字符串中使用它,这在某些情况下也非常有用。

我会非常感谢任何提示! 谢谢!

3 个答案:

答案 0 :(得分:8)

这样做,虽然它不像isbarch中的 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中,发生等等。

答案 1 :(得分:2)

两个答案:

  1. Replace+会在您调用替换命令时自动将点上的文本作为默认值。

  2. 更一般地说,Icicles的功能类似于scottfrazer的代码(上图),但它更为通用。在任何时候,在任何迷你缓冲区中,您都可以点击 M - 。(默认情况下)在点处拾取文本(“东西”)并将其插入迷你缓冲区。您可以重复此操作,以(a)选择相同种类的连续事物(例如单词),像 Cw 那样累积它们Isearch,或(b)选择其他不同的事物。更多解释here

答案 2 :(得分:2)

我认为这已经存在于Emacs中了 - 你只需要用M-S-%替换然后再按M-n(当迷你缓冲区为空时),这填写了光标下的单词,还有更多有用的东西你可以这样做,检查http://endlessparentheses.com/predicting-the-future-with-the-m-n-key.html?source=rss#disqus_thread