[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1582":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":19,"lastSyncTime":30,"discoverSource":31},1582,"vim-plug","junegunn\u002Fvim-plug","junegunn",":hibiscus: Minimalist Vim Plugin Manager","https:\u002F\u002Fjunegunn.github.io\u002Fvim-plug\u002F",null,"Vim Script",35672,1946,363,71,0,8,41,2,77.97,"MIT License",false,"master",true,[26],"vim","2026-06-12 04:00:10","\u003Ch1 title=\"vim-plug\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\".\u002Fplug-dark.png\">\n    \u003Cimg src=\".\u002Fplug.png\" height=\"75\" alt=\"vim-plug\">\n  \u003C\u002Fpicture>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fvim-plug\u002Factions\u002Fworkflows\u002Ftest.yml?query=branch%3Amaster\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fjunegunn\u002Fvim-plug\u002Ftest.yml?branch=master\">\n  \u003C\u002Fa>\n\u003C\u002Fh1>\n\nA minimalist Vim plugin manager.\n\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fjunegunn\u002Fi\u002Fmaster\u002Fvim-plug\u002Finstaller.gif\" height=\"450\">\n\n## Pros.\n\n- Minimalist design\n    - Just one file with no dependencies. Super easy to set up.\n    - Concise, intuitive syntax that you can learn within minutes. No boilerplate code required.\n    - No feature bloat\n- Extremely stable with flawless backward compatibility\n    - Works perfectly with all versions of Vim since 2006 and all versions of Neovim ever released\n- [Super-fast][40\u002F4] parallel installation\u002Fupdate\n- Creates shallow clones to minimize disk space usage and download time\n- On-demand loading for [faster startup time][startup-time]\n- Can review and rollback updates\n- Branch\u002Ftag\u002Fcommit support\n- Post-update hooks\n- Support for externally managed plugins\n\n[40\u002F4]: https:\u002F\u002Fraw.githubusercontent.com\u002Fjunegunn\u002Fi\u002Fmaster\u002Fvim-plug\u002F40-in-4.gif\n[startup-time]: https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fvim-startuptime-benchmark#result\n\n## Installation\n\n[Download plug.vim](https:\u002F\u002Fraw.githubusercontent.com\u002Fjunegunn\u002Fvim-plug\u002Fmaster\u002Fplug.vim)\nand put it in the \"autoload\" directory.\n\n\u003Cdetails>\n\u003Csummary>Click to see the instructions\u003C\u002Fsummary>\n\n### Vim\n\n#### Unix\n\n```sh\ncurl -fLo ~\u002F.vim\u002Fautoload\u002Fplug.vim --create-dirs \\\n    https:\u002F\u002Fraw.githubusercontent.com\u002Fjunegunn\u002Fvim-plug\u002Fmaster\u002Fplug.vim\n```\n\nYou can automate the process by putting the command in your Vim configuration\nfile as suggested [here][auto].\n\n[auto]: https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fvim-plug\u002Fwiki\u002Ftips#automatic-installation\n\n#### Windows (PowerShell)\n\n```powershell\niwr -useb https:\u002F\u002Fraw.githubusercontent.com\u002Fjunegunn\u002Fvim-plug\u002Fmaster\u002Fplug.vim |`\n    ni $HOME\u002Fvimfiles\u002Fautoload\u002Fplug.vim -Force\n```\n\n### Neovim\n\n#### Unix, Linux\n\n```sh\nsh -c 'curl -fLo \"${XDG_DATA_HOME:-$HOME\u002F.local\u002Fshare}\"\u002Fnvim\u002Fsite\u002Fautoload\u002Fplug.vim --create-dirs \\\n       https:\u002F\u002Fraw.githubusercontent.com\u002Fjunegunn\u002Fvim-plug\u002Fmaster\u002Fplug.vim'\n```\n\n#### Linux (Flatpak)\n\n```sh\ncurl -fLo ~\u002F.var\u002Fapp\u002Fio.neovim.nvim\u002Fdata\u002Fnvim\u002Fsite\u002Fautoload\u002Fplug.vim --create-dirs \\\n    https:\u002F\u002Fraw.githubusercontent.com\u002Fjunegunn\u002Fvim-plug\u002Fmaster\u002Fplug.vim\n```\n\n#### Windows (PowerShell)\n\n```powershell\niwr -useb https:\u002F\u002Fraw.githubusercontent.com\u002Fjunegunn\u002Fvim-plug\u002Fmaster\u002Fplug.vim |`\n    ni \"$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])\u002Fnvim-data\u002Fsite\u002Fautoload\u002Fplug.vim\" -Force\n```\n\n\u003C\u002Fdetails>\n\n## Usage\n\nAdd a vim-plug section to your `~\u002F.vimrc` (or `~\u002F.config\u002Fnvim\u002Finit.vim` for Neovim)\n\n1. Begin the section with `call plug#begin()`\n1. List the plugins with `Plug` commands\n1. End the section with `call plug#end()`\n\nFor example,\n\n```vim\ncall plug#begin()\n\n\" List your plugins here\nPlug 'tpope\u002Fvim-sensible'\n\ncall plug#end()\n```\n\nReload the file or restart Vim, then you can,\n\n* `:PlugInstall` to install the plugins\n* `:PlugUpdate` to install or update the plugins\n* `:PlugDiff` to review the changes from the last update\n* `:PlugClean` to remove plugins no longer in the list\n\n> [!NOTE]\n> That's basically all you need to know to get started. The rest of the\n> document is for advanced users who want to know more about the features and\n> options.\n\n> [!TIP]\n> `plug#end()` automatically executes `filetype plugin indent on` and `syntax\n> enable`. We believe this is a good default for most users, but if you don't\n> want this behavior, you can revert the settings after the call.\n>\n> ```vim\n> call plug#end()\n> filetype indent off   \" Disable file-type-specific indentation\n> syntax off            \" Disable syntax highlighting\n> ```\n\n### Getting Help\n\n- See [tutorial] page to learn more about the basics of vim-plug\n- See [tips] and [FAQ] pages for common problems and questions\n\n[tutorial]: https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fvim-plug\u002Fwiki\u002Ftutorial\n[tips]: https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fvim-plug\u002Fwiki\u002Ftips\n[FAQ]: https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fvim-plug\u002Fwiki\u002Ffaq\n\n## Examples\n\nThe following examples demonstrate the additional features of vim-plug.\n\n### Vim script example\n\n```vim\ncall plug#begin()\n\" The default plugin directory will be as follows:\n\"   - Vim (Linux\u002FmacOS): '~\u002F.vim\u002Fplugged'\n\"   - Vim (Windows): '~\u002Fvimfiles\u002Fplugged'\n\"   - Neovim (Linux\u002FmacOS\u002FWindows): stdpath('data') . '\u002Fplugged'\n\" You can specify a custom plugin directory by passing it as the argument\n\"   - e.g. `call plug#begin('~\u002F.vim\u002Fplugged')`\n\"   - Avoid using standard Vim directory names like 'plugin'\n\n\" Make sure you use single quotes\n\n\" Shorthand notation for GitHub; translates to https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fseoul256.vim.git\nPlug 'junegunn\u002Fseoul256.vim'\n\n\" Any valid git URL is allowed\nPlug 'https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fvim-easy-align.git'\n\n\" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)\nPlug 'fatih\u002Fvim-go', { 'tag': '*' }\n\n\" Using a non-default branch\nPlug 'neoclide\u002Fcoc.nvim', { 'branch': 'release' }\n\n\" Use 'dir' option to install plugin in a non-default directory\nPlug 'junegunn\u002Ffzf', { 'dir': '~\u002F.fzf' }\n\n\" Post-update hook: run a shell command after installing or updating the plugin\nPlug 'junegunn\u002Ffzf', { 'dir': '~\u002F.fzf', 'do': '.\u002Finstall --all' }\n\n\" Post-update hook can be a lambda expression\nPlug 'junegunn\u002Ffzf', { 'do': { -> fzf#install() } }\n\n\" If the vim plugin is in a subdirectory, use 'rtp' option to specify its path\nPlug 'nsf\u002Fgocode', { 'rtp': 'vim' }\n\n\" On-demand loading: loaded when the specified command is executed\nPlug 'preservim\u002Fnerdtree', { 'on': 'NERDTreeToggle' }\n\n\" On-demand loading: loaded when a file with a specific file type is opened\nPlug 'tpope\u002Fvim-fireplace', { 'for': 'clojure' }\n\n\" Unmanaged plugin (manually installed and updated)\nPlug '~\u002Fmy-prototype-plugin'\n\n\" Call plug#end to update &runtimepath and initialize the plugin system.\n\" - It automatically executes `filetype plugin indent on` and `syntax enable`\ncall plug#end()\n\" You can revert the settings after the call like so:\n\"   filetype indent off   \" Disable file-type-specific indentation\n\"   syntax off            \" Disable syntax highlighting\n\n\" Color schemes should be loaded after plug#end().\n\" We prepend it with 'silent!' to ignore errors when it's not yet installed.\nsilent! colorscheme seoul256\n```\n\n### Lua example for Neovim\n\nIn Neovim, you can write your configuration in a Lua script file named\n`init.lua`. The following code is the Lua script equivalent to the Vim script\nexample above.\n\n```lua\nlocal vim = vim\nlocal Plug = vim.fn['plug#']\n\nvim.call('plug#begin')\n\n-- Shorthand notation for GitHub; translates to https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fseoul256.vim.git\nPlug('junegunn\u002Fseoul256.vim')\n\n-- Any valid git URL is allowed\nPlug('https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fvim-easy-align.git')\n\n-- Using a tagged release; wildcard allowed (requires git 1.9.2 or above)\nPlug('fatih\u002Fvim-go', { ['tag'] = '*' })\n\n-- Using a non-default branch\nPlug('neoclide\u002Fcoc.nvim', { ['branch'] = 'release' })\n\n-- Use 'dir' option to install plugin in a non-default directory\nPlug('junegunn\u002Ffzf', { ['dir'] = '~\u002F.fzf' })\n\n-- Post-update hook: run a shell command after installing or updating the plugin\nPlug('junegunn\u002Ffzf', { ['dir'] = '~\u002F.fzf', ['do'] = '.\u002Finstall --all' })\n\n-- Post-update hook can be a lambda expression\nPlug('junegunn\u002Ffzf', { ['do'] = function()\n  vim.fn['fzf#install']()\nend })\n\n-- If the vim plugin is in a subdirectory, use 'rtp' option to specify its path\nPlug('nsf\u002Fgocode', { ['rtp'] = 'vim' })\n\n-- On-demand loading: loaded when the specified command is executed\nPlug('preservim\u002Fnerdtree', { ['on'] = 'NERDTreeToggle' })\n\n-- On-demand loading: loaded when a file with a specific file type is opened\nPlug('tpope\u002Fvim-fireplace', { ['for'] = 'clojure' })\n\n-- Unmanaged plugin (manually installed and updated)\nPlug('~\u002Fmy-prototype-plugin')\n\nvim.call('plug#end')\n\n-- Color schemes should be loaded after plug#end().\n-- We prepend it with 'silent!' to ignore errors when it's not yet installed.\nvim.cmd('silent! colorscheme seoul256')\n```\n\n## Commands\n\n| Command                             | Description                                                        |\n| ----------------------------------- | ------------------------------------------------------------------ |\n| `PlugInstall [name ...] [#threads]` | Install plugins                                                    |\n| `PlugUpdate [name ...] [#threads]`  | Install or update plugins                                          |\n| `PlugClean[!]`                      | Remove unlisted plugins (bang version will clean without prompt)   |\n| `PlugUpgrade`                       | Upgrade vim-plug itself                                            |\n| `PlugStatus`                        | Check the status of plugins                                        |\n| `PlugDiff`                          | Examine changes from the previous update and the pending changes   |\n| `PlugSnapshot[!] [output path]`     | Generate script for restoring the current snapshot of the plugins  |\n\n## `Plug` options\n\n| Option                  | Description                                                 |\n| ----------------------- | ----------------------------------------------------------- |\n| `branch`\u002F`tag`\u002F`commit` | Branch\u002Ftag\u002Fcommit of the repository to use                  |\n| `rtp`                   | Subdirectory that contains Vim plugin                       |\n| `dir`                   | Custom directory for the plugin                             |\n| `as`                    | Use different name for the plugin                           |\n| `do`                    | Post-update hook (string or funcref)                        |\n| `on`                    | On-demand loading: Commands or `\u003CPlug>`-mappings            |\n| `for`                   | On-demand loading: File types                               |\n| `frozen`                | Do not remove and do not update unless explicitly specified |\n\n## Global options\n\n| Flag                | Default                           | Description                                            |\n| ------------------- | --------------------------------- | ------------------------------------------------------ |\n| `g:plug_threads`    | 16                                | Default number of threads to use                       |\n| `g:plug_timeout`    | 60                                | Time limit of each task in seconds (*Ruby & Python*)   |\n| `g:plug_retries`    | 2                                 | Number of retries in case of timeout (*Ruby & Python*) |\n| `g:plug_shallow`    | 1                                 | Use shallow clone                                      |\n| `g:plug_window`     | `-tabnew`                         | Command to open plug window                            |\n| `g:plug_pwindow`    | `vertical rightbelow new`         | Command to open preview window in `PlugDiff`           |\n| `g:plug_url_format` | `https:\u002F\u002Fgit::@github.com\u002F%s.git` | `printf` format to build repo URL (Only applies to the subsequent `Plug` commands) |\n\n\n## Keybindings\n\n- `D` - `PlugDiff`\n- `S` - `PlugStatus`\n- `R` - Retry failed update or installation tasks\n- `U` - Update plugins in the selected range\n- `q` - Abort the running tasks or close the window\n- `:PlugStatus`\n    - `L` - Load plugin\n- `:PlugDiff`\n    - `X` - Revert the update\n\n## Post-update hooks\n\nThere are some plugins that require extra steps after installation or update.\nIn that case, use the `do` option to describe the task to be performed.\n\n```vim\nPlug 'Shougo\u002Fvimproc.vim', { 'do': 'make' }\nPlug 'ycm-core\u002FYouCompleteMe', { 'do': '.\u002Finstall.py' }\n```\n\nIf the value starts with `:`, it will be recognized as a Vim command.\n\n```vim\nPlug 'fatih\u002Fvim-go', { 'do': ':GoInstallBinaries' }\n```\n\nTo call a Vim function, you can pass a lambda expression like so:\n\n```vim\nPlug 'junegunn\u002Ffzf', { 'do': { -> fzf#install() } }\n```\n\nIf you need more control, you can pass a reference to a Vim function that\ntakes a dictionary argument.\n\n```vim\nfunction! BuildYCM(info)\n  \" info is a dictionary with 3 fields\n  \" - name:   name of the plugin\n  \" - status: 'installed', 'updated', or 'unchanged'\n  \" - force:  set on PlugInstall! or PlugUpdate!\n  if a:info.status == 'installed' || a:info.force\n    !.\u002Finstall.py\n  endif\nendfunction\n\nPlug 'ycm-core\u002FYouCompleteMe', { 'do': function('BuildYCM') }\n```\n\nA post-update hook is executed inside the directory of the plugin and only run\nwhen the repository has changed, but you can force it to run unconditionally\nwith the bang-versions of the commands: `PlugInstall!` and `PlugUpdate!`.\n\n> [!TIP]\n> Make sure to escape BARs and double-quotes when you write the `do` option\n> inline as they are mistakenly recognized as command separator or the start of\n> the trailing comment.\n>\n> ```vim\n> Plug 'junegunn\u002Ffzf', { 'do': 'yes \\| .\u002Finstall' }\n> ```\n>\n> But you can avoid the escaping if you extract the inline specification using a\n> variable (or any Vim script expression) as follows:\n>\n> ```vim\n> let g:fzf_install = 'yes | .\u002Finstall'\n> Plug 'junegunn\u002Ffzf', { 'do': g:fzf_install }\n> ```\n\n### `PlugInstall!` and `PlugUpdate!`\n\nThe installer takes the following steps when installing\u002Fupdating a plugin:\n\n1. `git clone` or `git fetch` from its origin\n2. Check out branch, tag, or commit and optionally `git merge` remote branch\n3. If the plugin was updated (or installed for the first time)\n    1. Update submodules\n    2. Execute post-update hooks\n\nThe commands with the `!` suffix ensure that all steps are run unconditionally.\n\n## On-demand loading of plugins\n\n```vim\n\" NERD tree will be loaded on the first invocation of NERDTreeToggle command\nPlug 'preservim\u002Fnerdtree', { 'on': 'NERDTreeToggle' }\n\n\" Multiple commands\nPlug 'junegunn\u002Fvim-github-dashboard', { 'on': ['GHDashboard', 'GHActivity'] }\n\n\" Loaded when clojure file is opened\nPlug 'tpope\u002Fvim-fireplace', { 'for': 'clojure' }\n\n\" Multiple file types\nPlug 'kovisoft\u002Fparedit', { 'for': ['clojure', 'scheme'] }\n\n\" On-demand loading on both conditions\nPlug 'junegunn\u002Fvader.vim',  { 'on': 'Vader', 'for': 'vader' }\n\n\" Code to execute when the plugin is lazily loaded on demand\nPlug 'junegunn\u002Fgoyo.vim', { 'for': 'markdown' }\nautocmd! User goyo.vim echom 'Goyo is now loaded!'\n```\n\n> [!NOTE]\n> #### Should I set up on-demand loading?\n>\n> You probably don't need to.\n>\n> A properly implemented Vim plugin should already load lazily without any\n> help from a plugin manager (`:help autoload`). So there are few cases where\n> these options actually make much sense. Making a plugin load faster is\n> the responsibility of the plugin developer, not the user. If you find\n> a plugin that takes too long to load, consider opening an issue on the\n> plugin's issue tracker.\n>\n> Let me give you a perspective. The time it takes to load a plugin is usually\n> less than 2 or 3ms on modern computers. So unless you use a very large\n> number of plugins, you are unlikely to save more than 50ms. If you have\n> spent an hour carefully setting up the options to shave off 50ms, you\n> will have to start Vim 72,000 times just to break even. You should ask\n> yourself if that's a good investment of your time.\n>\n> Make sure that you're tackling the right problem by breaking down the\n> startup time of Vim using `--startuptime`.\n>\n> ```sh\n> vim --startuptime \u002Ftmp\u002Flog\n> ```\n>\n> On-demand loading should only be used as a last resort. It is basically\n> a hacky workaround and is not always guaranteed to work.\n\n> [!TIP]\n> You can pass an empty list to `on` or `for` option to disable the loading\n> of the plugin. You can manually load the plugin using `plug#load(NAMES...)`\n> function.\n>\n> See https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Fvim-plug\u002Fwiki\u002Ftips#loading-plugins-manually\n\n\n## Collaborators\n\n- [Jan Edmund Lazo](https:\u002F\u002Fgithub.com\u002Fjanlazo) - Windows support\n- [Jeremy Pallats](https:\u002F\u002Fgithub.com\u002Fstarcraftman) - Python installer\n\n## License\n\nMIT\n","vim-plug 是一个极简主义的 Vim 插件管理器。它仅由一个文件组成，无需任何依赖，安装和配置非常简单。该工具支持简洁直观的语法，用户可以在几分钟内掌握使用方法。vim-plug 具有出色的稳定性和向后兼容性，适用于自2006年以来的所有Vim版本及所有Neovim版本。它还支持快速并行安装与更新、浅克隆以节省磁盘空间和下载时间、按需加载以加快启动速度等功能，并允许用户审查和回滚更新。此外，它还提供了分支\u002F标签\u002F提交支持以及插件更新后的钩子功能。此项目非常适合需要高效管理和使用Vim插件的开发者。","2026-06-11 02:44:47","top_all"]