{"id":19078969,"url":"https://github.com/tomtom/tplugin_vim","last_synced_at":"2025-10-28T17:12:42.273Z","repository":{"id":66582405,"uuid":"841043","full_name":"tomtom/tplugin_vim","owner":"tomtom","description":"An on-demand runtimepath manager and plugin loader for vim (for handling plugins distributes, e.g., as git repositories)","archived":false,"fork":false,"pushed_at":"2015-01-16T17:26:23.000Z","size":379,"stargazers_count":15,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-07T11:11:26.257Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.vim.org/scripts/script.php?script_id=2917","language":"VimL","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/tomtom.png","metadata":{"files":{"readme":"README","changelog":"CHANGES.TXT","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-08-16T13:20:25.000Z","updated_at":"2021-05-19T19:44:34.000Z","dependencies_parsed_at":"2023-02-20T13:45:45.472Z","dependency_job_id":null,"html_url":"https://github.com/tomtom/tplugin_vim","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/tomtom/tplugin_vim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomtom%2Ftplugin_vim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomtom%2Ftplugin_vim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomtom%2Ftplugin_vim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomtom%2Ftplugin_vim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomtom","download_url":"https://codeload.github.com/tomtom/tplugin_vim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomtom%2Ftplugin_vim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281477102,"owners_count":26508235,"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","status":"online","status_checked_at":"2025-10-28T02:00:06.022Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-09T02:12:56.822Z","updated_at":"2025-10-28T17:12:42.208Z","avatar_url":"https://github.com/tomtom.png","language":"VimL","funding_links":[],"categories":[],"sub_categories":[],"readme":"NOTE: This plugin is obsoleted by https://github.com/tomtom/enabler_vim\n\ntplugin is a plugin management tool similar to pathogen. Other than \npathogen tplugin expands the 'runtimepath' as needed (e.g. when \ncalling a command or function that is defined in a bundle) in order to \nhave minimal impact on startup time.\n\nThis plugin helps users to deal with plugins that are distributed via \nsource code repositories. Usually, you would make those plugins \navailable to vim by adding the local copies of those repositories to \n|runtimepath|. The disadvantage of this approach is that the value of \n|runtimepath| becomes unnecessarily complex. If this is done at startup (e.g. \nwhen using the pathogen plugin), all plugins are loaded on each startup, which \ntakes time.\n\ntplugin scans the local copies of those repositories for commands and \nfunctions. It then amends the |runtimepath| only if a respective \ncommand/function/map is called (similar to the AsNeeded plugin). This \nhelps to keep your |runtimepath| simple and improve startup time.\n\nIn order to achieve this goal, plugins are installed in an alternative \ndirectory structure where each plugin (consequently referred to as \n\"repo\" or \"bundle\") is installed in a subdirectory. tplugin takes care of \n\"modifying 'runtimepath' and of loading the vim script files as necessary. For \n\"compatibility with pathogen, all \"bundle\" subdirectories in the 'runtimepath' \n\"are considered as roots -- unless tplugin seems to be installed as repo itself.\n\nalternative directory layout:\n\n    ROOT/\n      repo1/\n        after/\n        autoload/\n        doc/\n        plugin/\n      repo2/\n        after/\n        autoload/\n        doc/\n        plugin/\n      ...\n\nRepos can be enabled (i.e. added to 'runtimepath') either explicitly \nwith the |:TPlugin| command or automatically by calling a command, \nfunction, or by requesting a filetype plugin/syntax/indent file defined \nin a repo -- i.e. tplugin also provides an autoload facility similar to \nthe AsNeeded plugin (vimscript #915). See below for details.\n\nThe main purpose of this plugin was to facilitate the use of plugins \nthat are downloaded from a VCS like git, svn etc. But it can also be \nused to handle plugins distributed as zip or tgz archives. For vimballs, \nyou'll might have to use a non-standard vimball unpacker---like the one \nthat can be found in the vimtlib repository.\n\nYou can have more than one root directory although it currently (as of \nversion 0.2) could cause problems and is deprecated. \n\n\nUsage~\n\nBy default, tplugin has autoload enabled. With autoload, you can use \ntplugin by\n\n(1) loading the macro in your |vimrc| file \u003e\n    \n    \" Put this close to the top of your vimrc file\n    runtime macros/tplugin.vim\n\n(2) (optional step) setting non-standard root directories. The standard \nroot-directory is where tplugin was installed in (see |:TPluginRoot|). \u003e\n\n    \" Only necessary if you use a non-standard root directory\n    TPluginRoot /home/x/src/bundle\n\nIt might still be necessary to load certain plugins right on startup for them \nto work properly.\n\n(3) Start vim and collect the autoload information by running the \n|:TPluginScan| command.\n\n(4) Restart vim.\n\nThe plugins will be loaded as soon as one of its functions or \ncommands is called for the first time.\n\nFull example as it could be found in a |vimrc| file: \u003e\n\n    runtime macros/tplugin.vim\n    TPluginRoot F:\\vim-addons\n    TPlugin vim-surround\n    let g:snippets_dir = 'X:\\vimfiles\\snippets,F:\\vim-addons\\snipmate.vim\\snippets'\n    TPlugin snipmate.vim\n    TPlugin! tlib_vim 02tlib\n\n\n                                                    *tplugin-dependencies*\n                                                    *tplugin-metadata*\nWhen enabling a repository (ROOT/REPO), e.g., by calling |:TPlugin|, \nthe files ROOT/_tplugin_REPO.vim and ROOT/REPO/_tplugin.vim are \nloaded. These files allows users (or plugin developers) to, e.g., \ndefine dependencies (see |:TPluginBefore| and |:TPluginAfter|).\n\n\nCAVEAT: If you have a file after/plugin/foo.vim in you user vimfiles \ndirectory, this file will be loaded before any \"managed\" plugin \"foo\". \nYou thus have to check in your after/plugin/foo.vim file if the plugin \nwas already loaded.\n\nContrary to the default plugin behaviour, those managed plugins are \nloaded when the |VimEnter| event is triggered, i.e. after all plugins \n(incl. the after directory) and |gvimrc| was loaded. This approach \nprovides for a better control of which plugins should be loaded. You can \nload a managed plugin immediately by adding a bang '!' to the |:TPlugin| \ncommand.\n\n                                                    *tplugin-asneeded*\nAsNeeded Users~\n\ntplugin can serve as a drop-in replacement for the AsNeeded plugin. Add \nthe following command to you |vimrc| file: \u003e\n\n    TPluginRoot ~/vimfiles/AsNeeded/*\n\nAlternatively, move the files the AsNeeded subdirectory to \nREPOS/AsNeeded/plugin/.\n\nRun |:TPluginScan| in order to create autoload definitions for commands \nand functions.\n\nContrary to the AsNeeded plugin, tplugin only supports autoload for \n|\u003cPlug\u003e| type of maps. Other autoload maps have to be defined by the \nuser using the |TPluginMap()| function.\n\n\nRelated work~\n\n    - Marc Weber's vim-addon-manager (my main source of inspiration for \n      this script), which also provides downloading plugins and \n      automatic dependency management:\n      http://github.com/MarcWeber/vim-addon-manager (vimscript #2905)\n\n    - Tim Pope's pathogen (vimscript #2332).\n\n    - Charles E. Campbell's AsNeeded (vimscript #915)\n\n    - A comprehensive list of plugin managers (download and update local copies \n      of vim plugins): http://vim-scripts.org/tools.html\n\n    - The ruby script I personally use to update local copies of source \n      code repositories: http://github.com/tomtom/vcsdo\n      If your VIM has compiled-in ruby support, you can use the :TPluginUpdate \n      command to run vcsdo from within VIM.\n\n\n-----------------------------------------------------------------------\n\nStatus:  Works for me (there may be some minor quirks)\nInstall: See http://github.com/tomtom/vimtlib/blob/master/INSTALL.TXT\nSee http://github.com/tomtom for related plugins.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomtom%2Ftplugin_vim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomtom%2Ftplugin_vim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomtom%2Ftplugin_vim/lists"}