【问题标题】:What's the best way to get jsDoc intellisense in Vim在 Vim 中获取 jsDoc 智能感知的最佳方法是什么
【发布时间】:2019-08-28 00:56:22
【问题描述】:

我最近转换为使用 vim 并且完全支持它。

我还没有找到一个很好的方法来使用带有 ctags 的 jsdoc cmets 来获得智能感知或跳转到函数的能力。

你是怎么做到的?

【问题讨论】:

  • jsdoc.vim 根据函数签名生成 JSDoc 块 cmets。

标签: vim jsdoc


【解决方案1】:

我不得不说 coc-vim 以及 github 主页面自述文件上的一些建议键映射给了我迄今为止最好的体验,尤其是在将 TypeScript 用作语言服务器时,您可以使用coc-tsservercoc-vim 的扩展名。

一些例子:

<SHIFT>K 将在我的屏幕顶部显示函数定义/文档的弹出窗口。您还可以获得类似于在 VSCode 中获得的自动完成功能。只需少量设置,您还可以在屏幕底部的回显区域中获取函数签名。

gd 在符号上将直接带我到该符号的定义。这在 React 中也有效,并将带我到定义组件的文件。

更多工具:

我还没有测试过vim-jsdoc,但是从 github 页面的浏览来看,它对于基于函数签名生成 JSDoc cmets 看起来很方便。

作为替代方案,coc-snippets 为 JSDoc 提供了一些方便的工具,看起来它可能会执行类似于 vim-jsdoc/jsdoc.vim 的操作。

【讨论】:

    【解决方案2】:

    “类似智能感知”的自动补全是通过像autocomplpopneocomplcache 这样的插件获得的。如果没有这些插件或标签文件,并且假设您正在编写 JavaScript,则在 myObj. 中的点之后键入 <C-x><C-o> 将为您提供原生和自定义属性/方法的列表。

    我不知道有任何使用 JSDoc 的全完成脚本。

    【讨论】:

    • 谢谢,我正在尝试 autocomplpop,这是我正在寻找的大部分方法。我一直在使用全向补全,这意味着更少的击键次数。
    • 在使用 acp 之前,我有这个映射:inoremap <leader>, <C-x><C-o>。我将它保存在我的 .vimrc 中,因为 acp 和 ncc 有时会变得过于侵入性。
    【解决方案3】:

    ctags 不会帮助您进行智能感知,但它会帮助您跳转到函数或类定义:

    $ ctags -R *
    

    在您的 java 项目的顶层执行此操作,然后:

    $ vi -t functionName    # or ClassName
    

    进入vim后,ctrl+]跳转到光标下函数或类名的定义,ctrl+T跳转回来。

    对于智能感知,请查看 vim 的 ensime - 它也可以在 vim 和 emacs 中完成 scala 和 java:https://github.com/MarcWeber/ensime。但是设置起来并不容易,所以要注意:)

    还可以查看更容易设置的 vim jde 插件:http://www.vim.org/scripts/script.php?script_id=1213

    【讨论】:

    • jsdoc 是一个类似 javadoc 的 JavaScript 文档系统。
    • 请原谅我的无知 :) 并感谢您的启发。
    • 以我无限的智慧原谅你,圣洁的人。
    【解决方案4】:

    capabilities of Tern 给我留下了深刻的印象。

    分析我们项目中的代码后,它可以告诉我哪些全局变量是可见的、它们内部可用的函数以及它们的(某些)参数的类型!

    使用Tern-for-Vim plugin,您可以在自动完成时查看此信息(在拆分窗口中使用 jsdocs),或在命令行中显示信息。

    不过,它确实需要一些设置。 (npm install 在插件文件夹中,并创建一个配置文件来告诉 Tern 要查看哪些文件。)

    您可以将文档绑定到 Javascript 和 Coffeescript 文件的 K 键,如下所示:

    autocmd BufReadPost *.{js,coffee} nnoremap <buffer> K :TernDoc<CR>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2011-06-09
      • 2012-10-02
      • 2012-02-15
      相关资源
      最近更新 更多