{"id":13473029,"url":"https://github.com/iamcco/vim-language-server","last_synced_at":"2025-05-16T07:06:50.586Z","repository":{"id":37396641,"uuid":"182425489","full_name":"iamcco/vim-language-server","owner":"iamcco","description":"VImScript language server, LSP for vim script","archived":false,"fork":false,"pushed_at":"2023-06-26T06:55:04.000Z","size":952,"stargazers_count":527,"open_issues_count":20,"forks_count":17,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-05-11T20:42:32.953Z","etag":null,"topics":["autocomplete","lsp","neovim","vim","viml","vimscript"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iamcco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"custom":"https://github.com/iamcco/markdown-preview.nvim#buy-me-a-coffee-%EF%B8%8F"}},"created_at":"2019-04-20T15:57:44.000Z","updated_at":"2025-04-25T14:55:57.000Z","dependencies_parsed_at":"2024-01-15T03:58:39.688Z","dependency_job_id":"306107f8-250a-431b-85a8-a83206a50db8","html_url":"https://github.com/iamcco/vim-language-server","commit_stats":{"total_commits":127,"total_committers":13,"mean_commits":9.76923076923077,"dds":0.3228346456692913,"last_synced_commit":"420a7974483967b971b8a907e41a2791e1360b99"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamcco%2Fvim-language-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamcco%2Fvim-language-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamcco%2Fvim-language-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamcco%2Fvim-language-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamcco","download_url":"https://codeload.github.com/iamcco/vim-language-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254485066,"owners_count":22078767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autocomplete","lsp","neovim","vim","viml","vimscript"],"created_at":"2024-07-31T16:01:00.050Z","updated_at":"2025-05-16T07:06:45.576Z","avatar_url":"https://github.com/iamcco.png","language":"JavaScript","funding_links":["https://github.com/iamcco/markdown-preview.nvim#buy-me-a-coffee-%EF%B8%8F"],"categories":["JavaScript","Languages"],"sub_categories":[],"readme":"# VimScript Language Server\n\n[![CI](https://github.com/iamcco/vim-language-server/workflows/CI/badge.svg?branch=master)](https://github.com/iamcco/vim-language-server/actions?query=workflow%3ACI)\n[![Npm](https://img.shields.io/github/package-json/v/iamcco/vim-language-server)](https://www.npmjs.com/package/vim-language-server)\n![Type](https://img.shields.io/npm/types/vim-language-server)\n![download](https://img.shields.io/npm/dm/vim-language-server)\n\n\u003e language server for VimScript\n\n**Features:**\n\n- auto completion\n- function signature help\n- hover document\n- go to definition\n- go to references\n- document symbols\n- document highlight\n- folding range\n- select range\n- rename\n- snippets\n- diagnostic\n\n![autocomplete](https://user-images.githubusercontent.com/5492542/81493984-909c2e80-92d7-11ea-9638-d7be3e18e1d1.gif)\n\n## Install\n\n**For yarn**\n\n```sh\nyarn global add vim-language-server\n```\n\n**For npm**\n\n```sh\nnpm install -g vim-language-server\n```\n\n**For coc.nvim user** install coc extension:\n\n```vim\n:CocInstall coc-vimlsp\n```\n\n**For vim-easycomplete user** install lsp server via `:InstallLspServer vim` and config nothing:\n\n```vim\n:InstallLspServer vim\n```\n\n## Config\n\nfor document highlight\n\n```vim\nlet g:markdown_fenced_languages = [\n      \\ 'vim',\n      \\ 'help'\n      \\]\n```\n\nlsp client config example with coc.nvim\n\n- Using node ipc\n\n```jsonc\n\"languageserver\": {\n  \"vimls\": {\n    \"module\": \"/path/to/vim-language-server/bin/index.js\",\n    \"args\": [\"--node-ipc\"],\n    \"initializationOptions\": {\n      \"isNeovim\": true, // is neovim, default false\n      \"iskeyword\": \"@,48-57,_,192-255,-#\", // vim iskeyword option\n      \"vimruntime\": \"\", // $VIMRUNTIME option\n      \"runtimepath\": \"\",   // vim runtime path separate by `,`\n      \"diagnostic\": {\n        \"enable\": true\n      },\n      \"indexes\": {\n        \"runtimepath\": true,      // if index runtimepath's vim files this will effect the suggest\n        \"gap\": 100,               // index time gap between next file\n        \"count\": 3,               // count of files index at the same time\n        \"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\n      },\n      \"suggest\": {\n        \"fromVimruntime\": true,   // completionItems from vimruntime's vim files\n        \"fromRuntimepath\": false  // completionItems from runtimepath's vim files, if this is true that fromVimruntime is true\n      }\n    },\n    \"filetypes\": [ \"vim\" ],\n  }\n}\n```\n\n- Using stdio\n\n```jsonc\n\"languageserver\": {\n  \"vimls\": {\n    \"command\": \"vim-language-server\",\n    \"args\": [\"--stdio\"],\n    \"initializationOptions\": {\n      \"isNeovim\": true, // is neovim, default false\n      \"iskeyword\": \"@,48-57,_,192-255,-#\", // vim iskeyword option\n      \"vimruntime\": \"\",                    // $VIMRUNTIME option\n      \"runtimepath\": \"\",                   // vim runtime path separate by `,`\n      \"diagnostic\": {\n        \"enable\": true\n      },\n      \"indexes\": {\n        \"runtimepath\": true,      // if index runtimepath's vim files this will effect the suggest\n        \"gap\": 100,               // index time gap between next file\n        \"count\": 3,               // count of files index at the same time\n        \"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\n      },\n      \"suggest\": {\n        \"fromVimruntime\": true,   // completionItems from vimruntime's vim files\n        \"fromRuntimepath\": false  // completionItems from runtimepath's vim files, if this is true that fromVimruntime is true\n      }\n    },\n    \"filetypes\": [ \"vim\" ]\n  }\n}\n```\n\n**Note**:\n\n- if you set `isNeovim: true`, command like `fixdel` in vimrc which neovim does not support will report error.\n- if you want to speed up index, change `gap` to smaller and `count` to greater, this will cause high CPU usage for some time\n- if you don't want to index vim's runtimepath files, set `runtimepath` to `false` and you will not get any suggest from those files.\n\n## Usage\n\n\u003e The screen record is using coc.nvim as LSP client.\n\n**Auto complete and function signature help**:\n\n![autocomplete](https://user-images.githubusercontent.com/5492542/81493984-909c2e80-92d7-11ea-9638-d7be3e18e1d1.gif)\n\n**Hover document**:\n\n![hover](https://user-images.githubusercontent.com/5492542/81494066-5aab7a00-92d8-11ea-9ccd-31bd6440e622.gif)\n\n**Go to definition and references**:\n\n![goto](https://user-images.githubusercontent.com/5492542/81494125-c261c500-92d8-11ea-83c0-fecba34ea55e.gif)\n\n**Document symbols**:\n\n![symbols](https://user-images.githubusercontent.com/5492542/81494183-5cc20880-92d9-11ea-9495-a7691420df39.gif)\n\n**Document highlight**:\n\n![highlight](https://user-images.githubusercontent.com/5492542/81494214-b1fe1a00-92d9-11ea-9cc1-0420cddc5cbc.gif)\n\n**Folding range and selection range**:\n\n![fold](https://user-images.githubusercontent.com/5492542/81494276-3bade780-92da-11ea-8c93-bc3d2127a19d.gif)\n\n**Rename**:\n\n![rename](https://user-images.githubusercontent.com/5492542/81494329-aa8b4080-92da-11ea-8a5d-ace5385445e9.gif)\n\n**Snippets and diagnostic**:\n\n![dia](https://user-images.githubusercontent.com/5492542/81494408-503eaf80-92db-11ea-96ac-641d46027623.gif)\n\n## References\n\n- [vim-vimlparser](https://github.com/vim-jp/vim-vimlparser)\n- [neco-vim](https://github.com/Shougo/neco-vim)\n\n## Similar project\n\n- [vimscript-language-server](https://github.com/google/vimscript-language-server)\n\n### Buy Me A Coffee ☕️\n\n![btc](https://img.shields.io/keybase/btc/iamcco.svg?style=popout-square)\n\n![image](https://user-images.githubusercontent.com/5492542/42771079-962216b0-8958-11e8-81c0-520363ce1059.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamcco%2Fvim-language-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamcco%2Fvim-language-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamcco%2Fvim-language-server/lists"}