I'm new to JS & Vim. Which plugins would help me to write Javascript code?
-
6To give the question more clarity, and to help the OP in their English for future posts... It should read: "Hi, I'm new to JS & Vim. Which plugins would help me to write Javascript code?" You can say "I am new to Javascript and vim". You can use "what is" for singular, so for example "What is a_plugin that would help me..." or you can use "which" for plural like this: "Which_plugins would help me...". Also notice that instead of "plugins is" you should use "plugins would" because it's a hypothetical. Hope that helps :-)hendrixski– hendrixski2012-02-12 19:04:07 +00:00Commented Feb 12, 2012 at 19:04
-
3@hendrixski - vote to reopen this.ocodo– ocodo2013-03-13 08:11:48 +00:00Commented Mar 13, 2013 at 8:11
-
8Most constructive not-constructive question ever.Vladislav Zorov– Vladislav Zorov2014-01-26 23:23:51 +00:00Commented Jan 26, 2014 at 23:23
-
8I quite enjoy how this "not constructive" question helped me improve a lot my workflow.MaiaVictor– MaiaVictor2014-03-07 06:41:41 +00:00Commented Mar 7, 2014 at 6:41
-
Since the question is (unfairly IMO) closed, I'll just add a comment here: there's an electron-based front-end for NeoVim with typescript language server autocompletion out of the box (works with vanilla JS too!): onivim.io. It's still a bit rough around the edges but I've been using it as my daily driver for a few weeks now and haven't had too many issues. It has a really good community around it, and it's under very heavy development, so I expect good things from it in the future! Full disclosure: I make a monthly donation to the project and plan to contribute in the future.Parker Ault– Parker Ault2018-03-25 01:49:07 +00:00Commented Mar 25, 2018 at 1:49
5 Answers
Syntax Checking / Linting
There is a very easy way to integrate JSLint or the community-driven jshint.com (which is much better IMO) with Vim using the Syntastic Vim plugin. See my other post for more info.
Source-Code browsing / Tag-list
There's also a very neat way to add tag-listing using Mozilla's DoctorJS (formerly jsctags), which is also used in Cloud9 IDE's Ace online editor.
- Install the following packages using your favorite package-manager (Ubuntu's
apt-get, Mac's homebrew, etc.):exuberant-ctags
- NOTE: After installing make sure running
ctagsactually runsexuberant-ctagsand not the OS's preinstalledctags. You can find out by executingctags --version. 2.node(Node.js)
- Clone
DoctorJSfrom github:git clone https://github.com/mozilla/doctorjs.git - Go inside
DoctorJSdir andmake install(You'll also need themakeapp installed, but this is very basic).
- There're some bugs with installing the plugin,
make installdoesn't do the trick for the moment. For now I just add the repo'sbin/dir to my $PATH instead. See DoctorJS's GitHub and issues pages for more info.
- Install the TagBar Vim plugin (NOTE: It's TagBar, not the old infamous TagList!).
- PROFIT. :)
New Project - Tern.js
DoctorJS is currently dead. There's a new promising project called tern.js. It's currently in early beta, and should eventually replace it.
There is a project ramitos/jsctags which uses tern as its engine. Just npm install -g it, and tagbar will automatically use it for javascript files.
15 Comments
git submodule init && git submodule update. Then do step 3.brew install ctags-exuberantsnipMate emulates TextMate's ⇥ insertion system and comes with a bunch of useful JS snippets (among others) by default. It's extremely easy to add your own.
javaScriptLint allows you to validate your code against jsl.
Also you can find a variety of JavaScript syntax files on vim.org. Try them and see which one works best for you and your coding style.
The native omnicomplete (ctrlx-ctrlo) works very well for me. You can make it more dynamic with autoComplPop, but it can be annoying sometimes.
edit, in response to tarek11011's comment:
acp doesn't work for JavaScript by default, you have to tweak it a little. Here is how I did it (dirty hack, I'm still a Vim noob):
In vim-autocomplpop/plugin/acp.vim I've added php and javascript (and actionscript) to behavs so that it looks like that :
let behavs = {
\ '*' : [],
\ 'ruby' : [],
\ 'python' : [],
\ 'perl' : [],
\ 'xml' : [],
\ 'html' : [],
\ 'xhtml' : [],
\ 'css' : [],
\ 'javascript' : [],
\ 'actionscript' : [],
\ 'php' : [],
\ }
A little below, there is a series of code blocks that look like that :
"---------------------------------------------------------------------------
call add(behavs.ruby, {
\ 'command' : "\<C-x>\<C-o>",
\ 'meets' : 'acp#meetsForRubyOmni',
\ 'repeat' : 0,
\ })
I've duplicated this one and edited it a little bit to look like that:
"---------------------------------------------------------------------------
call add(behavs.javascript, {
\ 'command' : "\<C-x>\<C-o>",
\ 'meets' : 'acp#meetsForRubyOmni',
\ 'repeat' : 0,
\ })
and did the same for actionscript and php.
If you want to edit JS/CSS within a HTML document you can do :set ft=html.css.javascript in Vim's command line to make ctrlx-ctrlo work as expected on method/properties names in JS blocks and properties/values in CSS blocks. However this approach has its drawbacks, too (weird indentation…).
7 Comments
This plugin is also useful: https://github.com/maksimr/vim-jsbeautify. It provides full autoformatting for javascript. One keystroke, and your code looks beautiful. It can come in handy when pasting code snippets as well. It makes use of the popular js-beautifier, which can also be found as an online application. The latter can be found right here: http://jsbeautifier.org/.
2 Comments
I only use one js specific vim plugin - jslint.vim - https://github.com/hallettj/jslint.vim which validates your code with jslints rules and gives you syntax errors as well.
2 Comments
To fix indentation and autoformatting (Ctrl =): JavaScript Indent
To set indentation width, add javascript.vim file into ~/.vim/ftplugin dir with following contents (for two space indentation):
setl sw=2 sts=2 et
1 Comment
~/.vimrc : autocmd FileType javascript setlocal sw=2 ts=2 sts=2