首页   注册   登录
 chemzqm 最近的时间轴更新

chemzqm

自由于生命,不可或缺
  •   自由职业 / 前端开发
    V2EX 第 38593 号会员,加入于 2013-05-06 21:05:34 +08:00
    79 S 51 B
    前端开发,专注产品的简洁易用,追求高效、自由的编程方式。Mac用户,vim爱好者。
    Coc.nvim: 为了更好的补全体验
    Vim  •  chemzqm  •  17 天前  •  最后回复来自 chemzqm
    26
    一个 stream 的性能问题
    Node.js  •  chemzqm  •  109 天前  •  最后回复来自 chemzqm
    5
    LanguageClient-neovim 补全实现的若干问题
    Vim  •  chemzqm  •  73 天前  •  最后回复来自 pony279
    15
    如何使用 JavaScript 编写 vim 插件?
    Vim  •  chemzqm  •  172 天前  •  最后回复来自 ahonn
    3
    一些 denite.nvim 的 source
    Vim  •  chemzqm  •  2017-03-01 23:51:26 PM  •  最后回复来自 chemzqm
    2
    denite-git 帮助 vim 用户更快实现 git log 和 git status 常用操作
    Vim  •  chemzqm  •  2017-02-24 16:18:52 PM  •  最后回复来自 chemzqm
    4
    一个 mockapi 的小工具
    分享创造  •  chemzqm  •  2017-01-11 20:24:20 PM  •  最后回复来自 saber000
    2
    chemzqm 最近回复了
    没毛病,人家验证码只是为了让你多思考一下。
    就算是图片验证码想识别现在还不是 OCR 随意识别?
    16 天前
    回复了 megachweng 创建的主题 Vim 用 vim 感觉 Esc 太远,是我食用方式不对吗
    hhkb 吧,可以放在 mac 键盘上面,用了你就知道 mac 的键盘多难用了。
    17 天前
    回复了 chemzqm 创建的主题 Vim Coc.nvim: 为了更好的补全体验
    @lancelock
    1. 设置 set signcolumn=yes 总是显示 sign 那一列即可
    2. 把 completeopt 里面的 preview 去掉就可以不显示了,这个是 vim 原生的功能,后续会用 Floating window 显示,还在开发
    https://get.js.org/vim 404 可以差评吗
    @pony279
    > 用这个插件配置按键映射,确认了就知道选择了哪一个

    不是用户确认的哪一个,complete resolve 应该是用户使用 <C-n> 或者 <C-p> 选中时进行调用然后显示文档等信息使用的。
    @pony279
    1. ncm2 如何获取当前用户选择了哪一个 complete item ?还是就是补全完成的时候请求一下 https://github.com/ncm2/ncm2_lsp_snippet/blob/master/utils.py#L13
    2. Language client 不可能使用同步方式在 TextChange 触发时发送 document 给 server,因为那样体验肯定会比较差,https://github.com/autozimu/LanguageClient-neovim/blob/next/autoload/LanguageClient.vim#L707
    谈几个 LSP 补全的小问题,不确认 ncm2 解决了没有。
    * 支持 language server 返回的 trigger charactors 触发补全
    * 支持 LSP 中定义的 completion resolve,切换补全项时请求详情,不支持的话某些 language server 看不到文档也支持不了 snippet 等功能。
    * 支持 language server 返回的 snippet,LanguageClient-neovim 这插件根本不支持 lsp 定义的 snippet https://microsoft.github.io/language-server-protocol/specification#snippet-syntax,server 返回的 snippet 会被它截一段关键字插入。

    ncm 的代码:

    au InsertEnter,InsertCharPre,TextChangedI <buffer> call ncm2#auto_trigger()
    func! ncm2#_do_auto_trigger()
    let tick = s:context_tick()
    if tick == s:auto_trigger_tick
    return ''
    endif
    let s:auto_trigger_tick = tick

    " refresh the popup menu to reduce popup flickering
    call s:feedkeys("\<Plug>(ncm2_complete_popup)")

    if g:ncm2#complete_delay == 0
    call s:feedkeys("\<Plug>(_ncm2_auto_trigger)")
    else
    if s:complete_timer
    call timer_stop(s:complete_timer)
    endif
    let s:complete_timer = timer_start(
    \ g:ncm2#complete_delay,
    \ {_ -> s:complete_timer_handler() })
    endif
    return ''
    endfunc

    用户在 fuzzy 补全时也会触发 TextChangedI, 此时 ncm2 会发起新的请求,其实这种请求完全可以避免,因为补全插件在第一次请求后就获取了所有的补全项,除非用户输入的是 trigger charactor,否者只需要过滤第一次获取的结果即可。另外这个 g:ncm2#complete_delay 设的小了可能 language server 还没收到当前的 buffer,导致无法正确补全,设置的大了影响补全的体验。
    49 天前
    回复了 Marblue 创建的主题 Vim Macvim airline 设置无效果 求大佬帮忙看看
    大概率是字体不对,提 bug 请把自己用的配置带上
    eslint 把 == 禁掉吧,这个除了用在 == null 判定 null 或者 undefined 情况,其它时候是很容易 bug 的。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3202 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 16ms · UTC 08:21 · PVG 16:21 · LAX 01:21 · JFK 04:21
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1