gpt4 book ai didi

emacs - 在 grep 模式下评估 sexp 并在新缓冲区中显示输出

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:11 27 4
gpt4 key购买 nike

正在关注 this recipe ,我准备了这个搜索命令:

(shell-command "grep . /tmp/listoffiles | xargs grep -n mystring" 1)

如果我使用 eval-last-sexp (^+x+e) 运行它,包含匹配项的列表将在命令后立即出现,其格式与 grep-mode 中的缓冲区可识别的格式相同。但是这个缓冲区在 grep-mode所以我不能自动跳转到所需的文件/行。

我想要的是:我将使用一个缓冲区来输入我的搜索命令;转到其中一个命令的末尾,然后按组合键将触发函数 run-grep-in-other-buffer。此函数必须执行以下操作:

  1. point 评估搜索命令,如 eval-last-sexp 所做的那样
  2. 创建一个新的缓冲区
  3. 在新缓冲区中输出搜索命令的结果
  4. grep-mode 中设置新缓冲区
  5. 激活新缓冲区。

我的 lisp 真的很有限。我怎样才能做到这一点?

最佳答案

你可以直接使用这个函数来代替你用 shell-command 的构造:

(defun run-grep-in-other-buffer (str)
(interactive)
(let ((grep-host-defaults-alist nil)
(grep-command str))
(call-interactively 'grep)))

使用 eval-last-sexp 运行:

(run-grep-in-other-buffer "grep . /tmp/listoffiles1 | xargs grep -n list")
(run-grep-in-other-buffer "grep . /tmp/listoffiles2 | xargs grep -n list")

关于emacs - 在 grep 模式下评估 sexp 并在新缓冲区中显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14626364/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com