大家好,我是新人,刚接触emacs不久,看子龙山人的视频开始学习的。刚看到第六集,里面安装ag后,使用hlm-ag搜索不到对应了内容。报错如图,路过的帮忙解决下,thx
报错提示找不到 ag。你需要把 ag 放到你的 PATH 中。
要怎么把ag配置到path中?麻烦贴代码看看
那是属于安装的一部份,不同环境下安装方法不一,你应该自己参考相应的安装文档。另外,应该也可以在 helm-ag 中设置 ag 的完整路径,具体是哪个选项参考 helm-ag 的文档。
先看看在 shell 中能不能找到 ag 的路径,例如:
$ which ag
/usr/local/bin/ag
然后在 init.el 中:
(add-to-list 'exec-path "/usr/local/bin")
如果 shell 中找不到 ag:
- 方法1,解决
shell的PATH问题 - 方法2,直接
(add-to-list 'exec-path "ag所在目录")
3 个赞
推荐 @twlz0ne 说的第二个方法,直接修改 exec-path,不管你在 shell 中是否可以找到 ag,应该 helm-ag 都可以找到 ag 了。
注意 PATH 和 exec-path 并不是同一个东西。exec-path 是 Emacs 直接查找某个命令的时候使用的,比如 helm-ag 内部实现使用的 start-file-process,PATH 则是你在 Emacs 中调用 shell 命令的时候使用的,比如 M-!。Emacs 启动的时候会根据 PATH 设置 exec-path 的值。所以这两者的值开始的时候应该是一样的。
解决你的这个问题只需要修改 exec-path,但是我还是建议最好同时修改 PATH 和 exec-path,这样不容易造成困惑
(let ((my-path "/path/to/whatever"))
(setenv "PATH" (concat my-path ":" (getenv "PATH"))) ; Assume ":" is the separator
(add-to-list 'exec-path my-path))
另外可以参考 melpa 上的 exec-path-from-shell,这样你在 .bashrc 或 .zshrc 里设置的 PATH 可以被读取到 GUI 的 Emacs 中,不需要在 Emacs 中自己手动设置以上两个变量了。
6 个赞
可以了,谢谢