比较喜欢ivy的补全样子
你是说 helm 换成 ivy 吧? company 和 ivy 有什么关系吗?
你基本上什么有用的信息都没提供,让别人怎么帮你?
刚看到这标题有点怀疑人生。
不要怀疑,helm-company
这个函数是确实存在的(spacemacs)。如果你当前配置里没有当然也能很容易脑补出来:把company的小方格candidates换成helm的列表界面。
找到解决办法了吗?
(global-set-key (kbd "H-f") 'counsel-company )
能不能做到不用按额外的键,company自动弹出补全列表的时候就是以ivy的格式?
应该有对应弹出pop-up的hook吧 不过我个人觉得这样很不方便。。minibuffer自己弹来弹去的。。辣眼睛。。
company/ivy 的好处是可以从容地输入关键字,进行过滤/选择,甚至可以用正则(例如查找一个包含 a 并且以 b 结尾的条目:a b$
)。缺点底部冒出一个大大的列表,占地方,改变整个窗口布局,而且离光标很远。
overlay 的好处是不占地方,不改变窗口布局,而且就在光标旁边。缺点是必须顺序输入关键字,但是如果只记得中间某一部分关键字怎么办,也许可以模糊匹配,但还是不如 company/ivy 方便。
helm-company 没用过,但是我一直在用 helm-yasnippet(实在记不住各种模式下的代码片段的 key,只好用 helm 列出来查找),应该是类似的实现,其实使用频率最高的 M-x 就是这种形式了。ivy + company 实现起来应该比 helm+company 更简单一些。
最好的方式把 company/ivy 用 overlay 的形式,显示在光标旁边,又接受更灵活的输入。看到 ivy 的作者 abo-abo 发的一段视频 https://www.reddit.com/r/emacs/comments/57fnar/ivy_completion_at_point_in_an_overlay/ 就是这个效果,可以在补全列表 overlay 弹出来之后,输入以空格间隔的多个关键字,不知道是不是现在 ivy 已经支持了?
在开启company-mode的情况下用completion-at-point
应该就行
Overlay有一点不好。。buffer里如果有不同height/family的字体。。那画面太美冇眼看。。
发现ivy里的overlay会把原始内容往下推,所以不会受字体影响
于是改写了一下(counsel-company)
:
- 添加了查看Documentation的
M-o
action - YASnippet 自动展开
- 使用
(ivy-display-function-overlay)
显示candidates