经过长时间的"训练",我终于转向了Vim; 但我在自动完成方面遇到了一些麻烦.我在打字时怎么能有代码建议呢?
我经常开发PHP,Ruby,HTML,C和CSS.
我在vim度过了我的日子,目前正在编写大量的JavaScript.我一直试图找到一种方法将JSLint或类似的东西集成到vim中以改进我的编码.有没有人设法做这样的事情?
编辑:
试过这个:Javascript语法从Vim检查,不幸的是输出很粗糙.
现在我正在使用surround.vimHTML文本中的文本,以及根据CSS文件中的十六进制值突出显示文本的插件(例如#888将在CSS文件中具有灰色背景).
是否还有其他有用的Web开发插件?
建议
以下是目前答案中提到的插件列表:
我正在使用vim和ctags来获取标记列表.但对于javascript,它不适用于此约定
MyClass.extend({
xxx: function(){
},
...
})
MyClass.prototype = {
method : function(){ }
}
MyClass.prototype.method = function () {
}
Run Code Online (Sandbox Code Playgroud) 我试图让vim提供某种形式的jQuery Omnicomplete.我已经使用ctags基于jquery js文件生成标签.之后我使用了javascript打开omnicompletion
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
Run Code Online (Sandbox Code Playgroud)
之后我将tags变量设置为我创建的标记文件
set tags+=~/.vim/tags/jquery
Run Code Online (Sandbox Code Playgroud)
当我打开一个js文件,并使用:ta我能够找到我想要的功能,但当我尝试使用omnicompletion时,它只是没有出现.例如,我从网上获取此代码进行测试:
$("input").has(".email").addClass("email_icon");
Run Code Online (Sandbox Code Playgroud)
在VIM中,键入后$("input").,我点击tab(设置了supertab)并且has没有出现,即使我可以通过模糊查找器找到它或:ta
有什么建议我可以做些什么来解决这个问题?谢谢!:)
我最近放弃了鼠标驱动的,特定于平台的GUI编辑器,并完全致力于vim.迄今为止的体验非常棒,但是当涉及到Javascript时我就陷入了困境.
广受欢迎的taglist实用程序(使用Exuberant Ctags)除了Javascript外,一切都很棒.使用该语言过于自由的形式和结构,taglist只能在我打开它时获取一些功能 - 只有以下格式定义的那些:
function FUNCNAME (arg1, arg2) {
Run Code Online (Sandbox Code Playgroud)
但没有定义的变量或函数对象:
var myFunc = function (arg1, arg2) {
Run Code Online (Sandbox Code Playgroud)
所以我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/
Run Code Online (Sandbox Code Playgroud)
之后,从命令行运行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'
Run Code Online (Sandbox Code Playgroud)
...这意味着我们只是从jta的ctags实用程序中查看一种特定类型的输出.不幸的是,我对taglist或vim一般都不够精明(尚未)发现我可以做出哪些改变以使所有那些精彩的ctags命令行结果显示在vim中.
帮助赞赏!
我知道Vim对标签有很好的支持,但我很难让他们使用JavaScript和TCL.
我在Ubuntu Lucid下使用Vim 7.2.330,这是一个标准的Vim安装和标准的Exuberant CTags安装.
我希望将我的标签保存在一个名为的文件中 ~/.vimtags/tags
我已将标签文件包含在我的vimrc文件中set tags+=$HOME."/vimtags/tags".
我从基本代码目录运行以下命令:
ctags-exuberant -f ~/.vimtags/tags -h ".js" --totals=yes --tag-relative=yes --fields=+akst -R
Run Code Online (Sandbox Code Playgroud)
我的文件中也有以下内容.ctags- 我在网上看到一篇文章说你应该添加这些文章以使其与现代JavaScript兼容.
--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/
Run Code Online (Sandbox Code Playgroud)
当我加载Vim时,标签文件肯定会被加载.A set tags?表示已包含标记文件.
但是,每当我CTRL-]使用关键字时,它总是说没有标签.
请问你能分享一下如何用JavaScript设置Vim标签,还会展示你如何使用标签系统?它似乎是Vim的一个很棒的功能,只要我能让它运转起来.
我已经安装了DoctorJS(以前的jsctags),试图为Vim获得一些好的源代码浏览/标签列表(使用Taglist插件).
安装很顺利,但Vim的Taglist与DoctorJS不兼容.
当试图在Vim via中打开标签列表窗口时:TListToggle,我收到以下错误:
Taglist: Failed to generate tags for /home/me/script.js
ctags: illegal option -- -^@usage: ctags [-BFadtuwvx] [-f tagsfile] file ...^@
Run Code Online (Sandbox Code Playgroud)
我搜索了www,并找到了这个指南,建议一个名为Taglist-Plus的替换插件,但它不能与DoctorJS一起使用,只能使用旧的非维护版本jsctags.
简而言之 - 我无法让它发挥作用.很沮丧.我们应该能够拥有良好的JavaScript源代码浏览功能!
任何Vim都在那里设法让这个东西运转起来?
提前致谢.
在解决了这个问题后(感谢答案@romainl),我写了一篇关于如何轻松完成这个问题的简短指南作为另一个问题的答案.我建议检查一下.
我找不到这个问题的好答案,所以我想我会问。我真的很想找到一些用于在 VIM 中使用的 javascript 手册页。通过这种方式,我可以将光标放在方法或全局对象上,然后在命令模式下按 K 以打开与此 javascript 项目相关的信息。显然没有官方的 javascript 手册,因为它因浏览器而异,但我希望可能有这样的东西。我专门使用谷歌浏览器,我听说它基本上实现了 ECMAScript 5,所以最接近这个的手册会更可取。作为旁注,我已经看到有一些 chm,但我不知道是否可以使用“man”命令来导航这些。我所要求的是否可能(并且存在),如果可以,我在哪里可以找到它?谢谢!
我正在开发OpenLayers.js之上.我的项目文件夹结构如下:
project /
|-- OpenLayers.js
|-- map.html
|-- map.js
\-- etc
Run Code Online (Sandbox Code Playgroud)
你可以说,当我开始一个新的地图项目时,我认为Vim建议如何完成代码,从项目文件夹中的所有库中读取JS类(在这种情况下,只是OpenLayers.js).
例如:
map = new OpenLayers. --> <C-x><C-o>
map = new OpenLayers.Bounds
.Control
.Map
Run Code Online (Sandbox Code Playgroud)
选择一个建议的类我应该得到一种自动完成,就像在Aptana中一样.我已经安装了AutoComplPop,我得到一个很好的自动菜单来选择建议,但所有这些都是从当前的JS文件中获取的.
无论如何,我已经正确设置了Tagbar + node.js + jsctags,我tags为我的项目生成了文件,并添加set tags=./tags,./../tags,./*/tags到我的.vimrc.
在这种情况下,Tagbar还映射当前文件JS结构,但不提供来自其他文件的类的任何映射.
我的另一个可能相关的路线.vimrc:
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
Run Code Online (Sandbox Code Playgroud)
我正在努力获得类和子类建议,现在我对所有可用的插件/软件有点困惑.
任何提示?感谢你们 :)