【发布时间】:2019-08-28 00:56:22
【问题描述】:
我最近转换为使用 vim 并且完全支持它。
我还没有找到一个很好的方法来使用带有 ctags 的 jsdoc cmets 来获得智能感知或跳转到函数的能力。
你是怎么做到的?
【问题讨论】:
-
jsdoc.vim 根据函数签名生成 JSDoc 块 cmets。
我最近转换为使用 vim 并且完全支持它。
我还没有找到一个很好的方法来使用带有 ctags 的 jsdoc cmets 来获得智能感知或跳转到函数的能力。
你是怎么做到的?
【问题讨论】:
我不得不说 coc-vim 以及 github 主页面自述文件上的一些建议键映射给了我迄今为止最好的体验,尤其是在将 TypeScript 用作语言服务器时,您可以使用coc-tsservercoc-vim 的扩展名。
<SHIFT>K 将在我的屏幕顶部显示函数定义/文档的弹出窗口。您还可以获得类似于在 VSCode 中获得的自动完成功能。只需少量设置,您还可以在屏幕底部的回显区域中获取函数签名。
gd 在符号上将直接带我到该符号的定义。这在 React 中也有效,并将带我到定义组件的文件。
我还没有测试过vim-jsdoc,但是从 github 页面的浏览来看,它对于基于函数签名生成 JSDoc cmets 看起来很方便。
作为替代方案,coc-snippets 为 JSDoc 提供了一些方便的工具,看起来它可能会执行类似于 vim-jsdoc/jsdoc.vim 的操作。
【讨论】:
“类似智能感知”的自动补全是通过像autocomplpop 或neocomplcache 这样的插件获得的。如果没有这些插件或标签文件,并且假设您正在编写 JavaScript,则在 myObj. 中的点之后键入 <C-x><C-o> 将为您提供原生和自定义属性/方法的列表。
我不知道有任何使用 JSDoc 的全完成脚本。
【讨论】:
inoremap <leader>, <C-x><C-o>。我将它保存在我的 .vimrc 中,因为 acp 和 ncc 有时会变得过于侵入性。
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
【讨论】:
capabilities of Tern 给我留下了深刻的印象。
分析我们项目中的代码后,它可以告诉我哪些全局变量是可见的、它们内部可用的函数以及它们的(某些)参数的类型!
使用Tern-for-Vim plugin,您可以在自动完成时查看此信息(在拆分窗口中使用 jsdocs),或在命令行中显示信息。
不过,它确实需要一些设置。 (npm install 在插件文件夹中,并创建一个配置文件来告诉 Tern 要查看哪些文件。)
您可以将文档绑定到 Javascript 和 Coffeescript 文件的 K 键,如下所示:
autocmd BufReadPost *.{js,coffee} nnoremap <buffer> K :TernDoc<CR>
【讨论】: