在Emacs中,M-x
键绑定允许您搜索和执行可用命令。我正在寻找类似的功能/功能,允许您从Emacs存储库中搜索和安装可用的包。
目前我能做的最好的事情是M-x package-list-packages
,然后是C-s
,但这有一些缺点:
我正在寻找的功能是否存在?或者是否有一个为Emacs提供此功能的包?如果是这样,我在哪里可以找到它?
答案 0 :(得分:7)
听起来M-x package-install
应该做你想做的事。如果安装了helm
,您将拥有一个类似头盔的界面来搜索和安装包。即使没有helm
,它也可以从任何缓冲区调用,它支持缩小,如果你做安装了helm,它支持模糊匹配。
我仍然倾向于使用M-x package-list-packages
,除非我确切知道我在寻找什么,因为与package-install
不同,它允许您查看包的详细信息和说明。我C-s
绑定到helm-occur
,因此我也可以使用类似helm的接口搜索此缓冲区。此外,在*Packages*
缓冲区中,您可以使用f
(package-menu-filter
),它允许您根据逗号分隔关键字列表缩小包列表的范围。但是,我可以理解您希望避免帖子中列出的package-list-packages
方面。
答案 1 :(得分:1)
安装ido-ubiquitous
软件包并启用(ido-ubiquitous-mode 1)
和(setq ido-enable-flex-matching t)
以启用flex匹配(不确定是否有必要,但我已设置)。它基本上使所有完成都使用ido,包括package-install
。您可以使用C-SPC
缩小范围,或使用<tab>
弹出完成缓冲区。
我通常使用list-packages
。在flex-isearch
包裹或没有匹配后,我使用isearch
自动启动flex匹配。
答案 2 :(得分:1)
根据找到的here屏幕截图,M-x list-matching-lines
这样的东西可以满足您的需要(通过包进行字符串搜索。)我已经尝试过了。屏幕快照中显示了键入内容的顺序。我没有安装任何特殊功能来获得此功能。
答案 3 :(得分:0)
M-x package-install
ENTER
xah-find
),然后使用自动完成选项选择所需的软件包。积分:@elethan
答案 4 :(得分:0)
这将搜索包名称和摘要:
(defun apropos-package--filter (string)
(let (packages)
(dolist (package-assoc package-archive-contents)
(let ((package (cadr package-assoc)))
(when (or (string-match-p (regexp-quote string) (package-desc-summary package))
(string-match-p (regexp-quote string) (prin1-to-string (package-desc-name package))))
(push package packages))))
packages))
(defun apropos-package (string)
(interactive "sSearch for package: ")
;; Initialize the package system if necessary.
(unless package--initialized
(package-initialize t))
(let ((packages (apropos-package--filter string)))
(if (null packages)
(message "No packages")
(package-show-package-list (mapcar 'package-desc-name packages)))))
使用 M-x apropos-package
调用命令