当我从事一个项目时,我总是在一个窗口中使用bash的ansi术语。如果存在*ansi-term*缓冲区,是否可以将grep-find引导到始终打开的窗口中?
我有运行grep的功能-在我的grep上找到。我只需要将函数定向到在有*ansi-term*的窗口中打开。
发布于 2014-06-09 13:43:44
这似乎符合您的要求,但我只进行了非常简短的测试。
(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)) )发布于 2014-06-09 14:09:15
我创建了这两个函数:
(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在他的回答中所建议的那样,我用它来提建议:
(defadvice find-grep (around switch-to-ansi-term activate)
(window-match-jump (regexp-quote "*ansi-term*")))此外,该函数还可以用来打开grep窗口中的不同名称,然后是ansi项。
发布于 2014-06-09 12:45:39
你可以用FIFO。在你的安西任期
mkfifo ~/ansi
while :; do cat ~/ansi; done和其他地方
grep xyz abc > ~/ansihttps://stackoverflow.com/questions/24118367
复制相似问题