Generate JSDoc to your JavaScript code.
Vim script JavaScript TypeScript
Latest commit cd8f084 Feb 11, 2017 @heavenshell committed on GitHub Merge pull request #65 from heavenshell/fix/default_params
Fix/default params
Failed to load latest commit information.
autoload Delete debug print Feb 10, 2017
doc Fix #64 Jan 28, 2017
ftplugin Fix #64 Jan 28, 2017
test Fix #64 Jan 28, 2017
.gitignore First commit. Jan 17, 2013
LICENSE Add license Jan 17, 2013 Change alt for screen reader. Oct 20, 2016


jsdoc.vim generates JSDoc block comments based on a function signature.

Move cursor to function keyword line, then type `:JsDoc`. If g:jsdoc_allow_input_prompt is enabled, prompt input description, argument type, parameter description. If g:jsdoc_allow_input_prompt is disabled, insert JsDoc automatically.

This plugin based on written by NAKAMURA, Hisashi

Depending on your configuration, jsdoc.vim will prompt for description, @return type and description. It will also prompt you for types and descriptions for each function @param.

Data type tab completion supported for parameter and return types

  • currently: boolean, null, undefined, number, string, symbol, object, function, array, typedArray, date, promise, proxy, map, set, weakmap, weakset, error, regexp


  1. Move cursor on function keyword line.
  2. Type :JsDoc to insert JSDoc.
  3. Insert JSDoc above the function keyword line.


Option Default Description
g:jsdoc_allow_input_prompt 0 Allow prompt for interactive input.
g:jsdoc_input_description 0 Prompt for a function description
g:jsdoc_additional_descriptions 0 Prompt for a value for @name, add it to the JSDoc block comment along with the @function tag.
g:jsdoc_return 1 Add the @return tag.
g:jsdoc_return_type 1 Prompt for and add a type for the aforementioned @return tag.
g:jsdoc_return_description 1 Prompt for and add a description for the @return tag.
g:jsdoc_access_descriptions 0 Set value to 1 to turn on access tags like @access <private|public>. Set value to 2 to turn on access tags like @<private|public>
g:jsdoc_underscore_private 0 Set value to 1 to turn on detecting underscore starting functions as private convention
g:jsdoc_allow_shorthand 0 Set value to 1 to allow ECMAScript6 shorthand syntax. Since ver 0.5.0 deprecated. Use g:jsdoc_enable_es6 instead.
g:jsdoc_param_description_separator ' ' Characters used to separate @param name and description.
g:jsdoc_custom_args_hook {} Override default type and description. See help more detail.
g:jsdoc_custom_args_regex_only 0 When using custom_args_hook, only match against regexes
g:jsdoc_type_hook {} Allow to insert default description depending on the type.
g:jsdoc_enable_es6 0 Enable to use ECMAScript6's Shorthand function, Arrow function.
g:jsdoc_tags see :h Allow use of alternate tags (the ones that support synonyms) per JSDoc documentation. Can be changed on a per tag basis, for example: let g:jsdoc_tags = {} | let g:jsdoc_tags['param'] = 'arg'
g:jsdoc_user_defined_tags {} Allow use of user_defined_tags.


Since version 0.3, g:jsdoc_default_mapping was removed.

Add following setting to .vimrc if you want same behavior as version 0.2.1.

nmap <silent> <C-l> <Plug>(jsdoc)

Alternatively, you could add the following setting to your .vimrc to search for the last function declaration and puts your jsdoc above it:

nmap <silent> <C-l> ?function<cr>:noh<cr><Plug>(jsdoc)


Since ver 0.10.0 jsdoc.vim support TypeScript.

function foo(foo: string): string {
  return 'foo'

:JsDoc would generate following.

 * foo
 * @param {string} foo
 * @returns {string}
function foo(foo: string): string {
  return 'foo'

param and returns set type automatically.