Home

Awesome

VimScript Language Server

CI Npm Type download

language server for VimScript

Features:

autocomplete

Install

For yarn

yarn global add vim-language-server

For npm

npm install -g vim-language-server

For coc.nvim user install coc extension:

:CocInstall coc-vimlsp

For vim-easycomplete user install lsp server via :InstallLspServer vim and config nothing:

:InstallLspServer vim

Config

for document highlight

let g:markdown_fenced_languages = [
      \ 'vim',
      \ 'help'
      \]

lsp client config example with coc.nvim

"languageserver": {
  "vimls": {
    "module": "/path/to/vim-language-server/bin/index.js",
    "args": ["--node-ipc"],
    "initializationOptions": {
      "isNeovim": true, // is neovim, default false
      "iskeyword": "@,48-57,_,192-255,-#", // vim iskeyword option
      "vimruntime": "", // $VIMRUNTIME option
      "runtimepath": "",   // vim runtime path separate by `,`
      "diagnostic": {
        "enable": true
      },
      "indexes": {
        "runtimepath": true,      // if index runtimepath's vim files this will effect the suggest
        "gap": 100,               // index time gap between next file
        "count": 3,               // count of files index at the same time
        "projectRootPatterns" : ["strange-root-pattern", ".git", "autoload", "plugin"] // Names of files used as the mark of project root. If empty, the default value [".git", "autoload", "plugin"] will be used
      },
      "suggest": {
        "fromVimruntime": true,   // completionItems from vimruntime's vim files
        "fromRuntimepath": false  // completionItems from runtimepath's vim files, if this is true that fromVimruntime is true
      }
    },
    "filetypes": [ "vim" ],
  }
}
"languageserver": {
  "vimls": {
    "command": "vim-language-server",
    "args": ["--stdio"],
    "initializationOptions": {
      "isNeovim": true, // is neovim, default false
      "iskeyword": "@,48-57,_,192-255,-#", // vim iskeyword option
      "vimruntime": "",                    // $VIMRUNTIME option
      "runtimepath": "",                   // vim runtime path separate by `,`
      "diagnostic": {
        "enable": true
      },
      "indexes": {
        "runtimepath": true,      // if index runtimepath's vim files this will effect the suggest
        "gap": 100,               // index time gap between next file
        "count": 3,               // count of files index at the same time
        "projectRootPatterns" : ["strange-root-pattern", ".git", "autoload", "plugin"] // Names of files used as the mark of project root. If empty, the default value [".git", "autoload", "plugin"] will be used
      },
      "suggest": {
        "fromVimruntime": true,   // completionItems from vimruntime's vim files
        "fromRuntimepath": false  // completionItems from runtimepath's vim files, if this is true that fromVimruntime is true
      }
    },
    "filetypes": [ "vim" ]
  }
}

Note:

Usage

The screen record is using coc.nvim as LSP client.

Auto complete and function signature help:

autocomplete

Hover document:

hover

Go to definition and references:

goto

Document symbols:

symbols

Document highlight:

highlight

Folding range and selection range:

fold

Rename:

rename

Snippets and diagnostic:

dia

References

Similar project

Buy Me A Coffee ☕️

btc

image