大家好,我是新人,刚接触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 个赞
可以了,谢谢