jayli / vim-easycomplete

杭州市余杭区最好用的 VIM/NVIM 代码补全插件
MIT License
412 stars 26 forks source link

刚刚试用了下,发现几个问题 #75

Closed beavailable closed 2 years ago

beavailable commented 3 years ago

必须要说,这个插件确实很棒,至少比另外几个补全插件更适合我(如果能解决以下几个问题的话):

  1. 补全有时不生效,我安装了 html py ts 三个 lsp server 都是这样,没看出什么规律,不过我试了下 ts,新建一个文件写一个函数,输入过快的话,函数定义完成后在函数体内写 con[sole] 就没提示了。
  2. 好像跟 raimondi/delimitmate 插件冲突,无法使用 回车键 扩展括号了。
  3. ts 和 py 的函数补全,一个会补全圆括号,一个不会,这就造成体验不一致了。个人认为,要么都补全括号,要么都不补全,可能会更好。
  4. 关于路径补全,能否不补全目录后的 / 符号呢?因为不补全的话,如果我只想输入一个目录,那么就不需要后面的 / 了,如果我想继续补全,我只要再输入一个 / 就可以弹出补全菜单,而不是输入 tab 来触发补全。
  5. 函数补全缺少参数提示,目前参数提示只在输入函数名时有显示,但是如果一个函数有多个参数而我又不太熟悉的话,可能记不住,输入前面几个参数之后,后面的参数想不起来了,这就很尴尬。
  6. 缺少文档功能,在阅读代码时,可能需要查看某个函数的文档,如果能有一个快捷键触发文档查询会很方便。
  7. py 的魔法函数补全必须要先输入一个 _ 才能触发,不知是否是有意为之?
  8. shift + tab 并不能在插入模式下输入制表符。
  9. 而且如果此组合键用来输入制表符了,那我在补全菜单中怎么选择上一个?这个功能我不喜欢用 vim 默认的快捷键,希望能支持 shift + tab 选择上一个候选项。
  10. 语义补全好像是区分大小写的?我的 vim 设置是区分大小写的,但是我希望补全的时候不区分大小写。
  11. . 不能触发语义补全,需要在后面再输入一个字母才可以。
  12. py open() 补全的时候,如果当前目录下有一个隐藏文件夹 .vim,当我在引号里面输入 .v 的时候会触发目录补全,我按下 tab 键会补全成 ..vim,多了一个点。
  13. .desktop 文件中无法触发路径补全,比如 Exec=/ 后面就无法补全(但加上引号后可以补全)。
  14. 在一个比较大的文本文件(2M+)中输入时,由于要触发补全而导致输入有明显的卡顿。

环境: vim: 8.2 os: debian testing

jayli commented 3 years ago

非常感谢你这么细致的使用体验,你的反馈很棒!你这里的一部分问题其实已经考虑到了,我尽量解答一下。

  1. 补全不生效时我本机没有复现,我还需要多测试下,你在 ts 新文件的函数体内快速输入字符没有匹配的问题,猜测可能是 tsserver 还没有初始化完成,我也搞不清微软为啥把 tsserver 设计的这么复杂,总之是他的初始化是这些 lsp 中几乎最慢的
  2. raimondi/delimitmate 冲突这个我需要再看看怎么解
  3. ts 的补全是我自己写的,我认为补全括号合理,py 的补全完全依赖 pyls 给我的反馈结果,它返回括号我就原样显示出来,我这里没做任何加工,就这个case我想办法搞一下
  4. 路径补全我再优化了下,敲完/后自动给下级目录的匹配
  5. 函数提示这个功能,我原本没打算添加,因为我不喜欢 coc 时不时跳出来的提示浮窗,所以我实现的时候就去掉了这个功能,我更习惯 vimer 的做法,就是直接ctrl-]直接跳转到函数定义处
  6. 也是同理,我习惯ctrl-]跳转函数定义
  7. python 的魔术函数的匹配,也是依赖 pyls,它的匹配规则就是下划线匹配魔术函数,不过后面可以看看jedi是怎么匹配的
  8. shift+tab 输入制表符已经支持
  9. 在有匹配菜单在时,shift+tab就是反向选择
  10. 已经支持大小写
  11. 这个问题我本机没有复现,需要更多信息来调试下
  12. 我已经过滤了隐藏目录,我本机是好的,你的问题我还需要更多信息来调试
  13. 14 这两个问题暂时没办法解掉,应该是 vim 本身的问题。