当我处理一个项目时,我总是在一个窗口中使用bash shell ansi-term 。是否可以指示grep-find始终在我有*ansi-term*
缓冲区的窗口中打开(如果存在)?
我的功能是运行grep-find over git repo我在。我只需要在我*ansi-term*
的窗口中指示函数打开。
答案 0 :(得分:0)
这似乎符合您的要求,但我只是进行了非常简短的测试。
(defadvice find-grep (around switch-to-ansi-term activate)
(let ((b (get-buffer "*ansi-term*")))
(and b (select-window (get-buffer-window b t))) )
ad-do-it
(and b (delete-window)) )
答案 1 :(得分:0)
我创建了这两个函数:
(defun windows-buffer-match (regex)
"return window for open buffer that match regex"
(let ((list '()))
(walk-windows (lambda (window)
(let ((buffer (window-buffer window)))
(if (string-match regex (buffer-name buffer))
(setq list (cons window list))))))
list))
(defun window-match-jump (regex)
(interactive "sBuffer: ")
(let ((windows (windows-buffer-match regex)))
(if (not (null windows))
(select-window (car windows)))))
正如@tripleee在他的回答中建议的那样,我将它与devadvice一起使用:
(defadvice find-grep (around switch-to-ansi-term activate)
(window-match-jump (regexp-quote "*ansi-term*")))
此函数也可用于在窗口中打开grep,其名称与ansi-term不同。
答案 2 :(得分:-1)
您可以使用FIFO。在你的ansi-term
mkfifo ~/ansi
while :; do cat ~/ansi; done
和其他地方
grep xyz abc > ~/ansi