2011-11-24 63 views
9

有没有类似于在点之后将字插入到isearch查询中的C-w之后C-s,而是替换字符串(和替换正则表达式)查询?Emacs:将字插入到替换字符串查询

我也喜欢的C-x萨沙蔡氏修改周围插入点整字到ISEARCH:

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

这也将是非常有用的在某些情况下,如果它可以被用于替换字符串。

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

回答

7

这将做到这一点,虽然没有花哨的CW在ISEARCH,因为你不能不停的按键,扩展选择:

(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的,发生等

+0

感谢您的快速回答!这绝对足够接近并且具有更一般的优势!谢谢! – user673592

2

两个答案:

  1. Replace+当您调用替换命令时,会自动在点处选取文本作为默认值。

  2. 更一般地说,Icicles与scottfrazer的代码(上面)做了类似的事情,但它更一般。任何时候,在任何小型缓冲器中,您都可以打到M-。(默认情况下)在点处拾取文本(“事物”)并将其插入到小型缓冲器中。您可以在重复这一点,或者(a)拿起连续的东西(如单词),积累他们像CW并为ISEARCH,或(b)拿起替代,不同东西点。更多解释here