加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使vim的标签列表插件显示JavaScript的有用信息?

发布时间:2020-12-15 18:55:26 所属栏目:安全 来源:网络整理
导读:我最近放弃了鼠标驱动的平台特定的GUI编辑器,并完全承诺给vim.迄今为止的经验是非常棒的,但是我在Javascript中遇到困难. 不断流行的标签列表实用程序(使用Exuberant Ctags)一直非常棒,除了Javascript.使用语言的过度自由的形式和结构,当我打开它时,标签列表
我最近放弃了鼠标驱动的平台特定的GUI编辑器,并完全承诺给vim.迄今为止的经验是非常棒的,但是我在Javascript中遇到困难.

不断流行的标签列表实用程序(使用Exuberant Ctags)一直非常棒,除了Javascript.使用语言的过度自由的形式和结构,当我打开它时,标签列表只能选择一些功能 – 只有以格式定义的那些功能:

function FUNCNAME (arg1,arg2) {

但没有变量或函数对象定义如下:

var myFunc = function (arg1,arg2) {

所以我google了一下,发现以下定义为ctags,我放在我的?/ .ctags文件中:

--langdef=js
--langmap=js:.js
--regex-js=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*{/1/,object/
--regex-js=/([A-Za-z0-9._$()]+)[ t]*[:=][ t]*function[ t]*(/1/,function/
--regex-js=/function[ t]+([A-Za-z0-9._$]+)[ t]*([^])])/1/,function/
--regex-js=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*[/1/,array/
--regex-js=/([^= ]+)[ t]*=[ t]*[^""]'[^'']*/1/,string/
--regex-js=/([^= ]+)[ t]*=[ t]*[^'']"[^""]*/1/,string/

之后,从命令行运行ctags是太棒了.它发现我需要它找到的每个功能和对象.

问题是taglist.vim插件没有看到这些新的结果.当我在vim中打开我的javascript文件并点击:TlistToggle时,我得到了与之前完全相同的少量功能.我打’u’来更新列表,没有任何效果.

挖掘到taglist.vim,我发现这一点:

" java language
let s:tlist_def_java_settings = 'java;p:package;c:class;i:interface;' .
                                'f:field;m:method'

" javascript language
let s:tlist_def_javascript_settings = 'javascript;f:function'

…这意味着我们只看到一个特定类型的ctags实用程序的输出.不幸的是,我并不熟悉标签列表或vim(一般),以发现我可以做什么变化,以获得所有这些美妙的ctags命令行结果显示在vim.

帮助赞赏!

得到它了!我加入了taglist.vim代码一段时间,这就是我发现的:

taglist.vim强制ctags使用与vim正在使用的相同的文件类型.所以即使我通过谷歌发现的?/ .ctags片段将我非常需要的定义分配给新的“js”语言,并将其应用于以.js结尾的文件,标签列表是强制将ctags用于使用“JavaScript”文件类型vim正在使用 – 它已经建立在ctags中.

解决方案是将?/ .ctags文件从上面发布到以下内容:

--regex-JavaScript=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*new[ t]+Object(/1/o,object/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*{/1/o,object/
--regex-JavaScript=/([A-Za-z0-9._$()]+)[ t]*[:=][ t]*function[ t]*(/1/f,function/
--regex-JavaScript=/function[ t]+([A-Za-z0-9._$]+)[ t]*([^])]*)/1/f,function/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*new[ t]+Array(/1/a,array/
--regex-JavaScript=/([A-Za-z0-9._$]+)[ t]*[:=][ t]*[/1/a,array/
--regex-JavaScript=/([^= ]+)[ t]*=[ t]*[^""]'[^'']*/1/s,string/
--regex-JavaScript=/([^= ]+)[ t]*=[ t]*[^'']"[^""]*/1/s,string/

它直接改变了现有的JavaScript语言定义,而不是在ctags中创建一个新的语言定义.现在,当taglib强制vim注册的文件类型时,会使用新的定义.以前发布的?/ .ctags行也缺少Al答案中提到的“亲切”信,所以这些信也包含在我的更新版本中.

从那里,将以下内容放入?/ .vimrc中以激活新的类型:

let g:tlist_javascript_settings = 'javascript;s:string;a:array;o:object;f:function'

总而言之,新的正则表达式行并不完美 – 它们一定需要进行一些调整,以避免大量的误报,并且分离常数可能很好.但现在,至少我有这样做的能力:).

编辑:添加了关于如何激活类型而不编辑插件的说明,并大大改进了主要的ctags函数正则表达式,以避免一些假阳性.

编辑2:为ctags正则表达式添加了更多的数组和对象定义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读