我有一个文本文件。Emacs是否可以根据正则表达式选择文本并将其放入kill-ring中,这样我就可以将其复制到其他地方?像regex-kill-ring-save这样的东西?
发布于 2010-02-02 21:36:04
受到已经给出的注释的启发( Charles的答案并不像我想要的那样工作),我在isearch/isearch-regexp模式映射中添加了一个新函数,它只将匹配的字符串放入kill环(而Charles proposal从当前点到匹配字符串的末尾都会删除):
(defun hack-isearch-kill ()
"Push current matching string into kill ring."
(interactive)
(kill-new (buffer-substring (point) isearch-other-end))
(isearch-done))
(define-key isearch-mode-map (kbd "M-w") 'hack-isearch-kill)关于isearch/isearch-regexp方法(可以分别用C-s和C-M-s启用)的好处是,您可以看到搜索字符串不断增长,并且只要您满意,就可以用M-w复制它(然后返回到以前使用C-u C-Space的地方)。
这对我的Emacs 23.1很有效。不知道它是否在所有情况下都能正常工作。无论如何,我希望它对您有用:)
更新:通过emacswiki时,我偶然发现了KillISearchMatch,它暗示着或多或少是相同的(加上一些更多的提示...)。
干杯,丹尼尔
发布于 2010-02-02 20:16:40
我不确定是否已经有这样的函数了,但是你可以用键盘宏来做什么:
使用search-forward-regexp
C-x (
C-spc
search或backward-word等。
然后,可以使用M-x name-last-kbd-macro命名键盘宏,以便可以使用名称而不是C-x e来执行宏。
如果要保存宏以供将来的会话使用,可以使用M-x insert-kbd-macro打开.emacs并将宏插入缓冲区。然后,您可以将密钥绑定到宏,就像将密钥绑定到正常的emacs函数一样,例如(global-set-key "\C-c m" 'funky-macro-macro)。
More about emacs keyboard macros
发布于 2011-08-22 06:08:51
已经做到了这一点。它可以选择设置搜索目标周围的区域。您可以在Isearch过程中随时使用C-SPC C-SPC或M-= C-SPC来切换此选项。
isearchp-deactivate-region-flag是在isearch+.el中定义的变量。
它的值是t
文档:
非nil表示isearching停用该区域。
另请参阅选项isearchp-restrict-to-region-flag。您可以在Isearch过程中使用M-= C-SPC切换此选项。
您可以自定义此变量。
https://stackoverflow.com/questions/2183726
复制相似问题