{"id":13594706,"url":"https://github.com/hyiltiz/vim-plugins-profile","last_synced_at":"2025-10-05T19:09:58.156Z","repository":{"id":41183252,"uuid":"44461488","full_name":"hyiltiz/vim-plugins-profile","owner":"hyiltiz","description":":clock4: Profile Vim's plugins, generate awesome statistics and optimize (n)vim startup time","archived":false,"fork":false,"pushed_at":"2022-06-29T10:00:47.000Z","size":259,"stargazers_count":628,"open_issues_count":4,"forks_count":38,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-28T15:08:06.461Z","etag":null,"topics":["neovim","perl","plugins-profile","python","r","ruby","startup","vim-configuration","vim-plugins"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyiltiz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-18T01:37:14.000Z","updated_at":"2025-03-14T07:23:34.000Z","dependencies_parsed_at":"2022-08-25T16:02:08.534Z","dependency_job_id":null,"html_url":"https://github.com/hyiltiz/vim-plugins-profile","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyiltiz%2Fvim-plugins-profile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyiltiz%2Fvim-plugins-profile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyiltiz%2Fvim-plugins-profile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyiltiz%2Fvim-plugins-profile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyiltiz","download_url":"https://codeload.github.com/hyiltiz/vim-plugins-profile/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247208151,"owners_count":20901570,"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":["neovim","perl","plugins-profile","python","r","ruby","startup","vim-configuration","vim-plugins"],"created_at":"2024-08-01T16:01:38.034Z","updated_at":"2025-10-05T19:09:53.130Z","avatar_url":"https://github.com/hyiltiz.png","language":"Python","readme":"[![Build Status](https://api.travis-ci.org/hyiltiz/vim-plugins-profile.svg?branch=master)](https://travis-ci.org/hyiltiz/vim-plugins-profile)\n\n## TL;DR\n```{BASH}\n# Perl version as an example:\nperl \u003c(curl -sSL https://raw.githubusercontent.com/hyiltiz/vim-plugins-profile/master/vim-plugins-profile.pl)\n\n# or Ruby\nruby \u003c(curl -sSL https://raw.githubusercontent.com/hyiltiz/vim-plugins-profile/master/vim-plugins-profile.rb)\n\n# or Python (add -p flat to plot a bar chart)\npython \u003c(curl -sSL https://raw.githubusercontent.com/hyiltiz/vim-plugins-profile/master/vim-plugins-profile.py)\n\n# or R\nbash \u003c(curl -sSL https://raw.githubusercontent.com/hyiltiz/vim-plugins-profile/master/vim-plugins-profile.sh)\n```\n\nHere is a screenshot to have a quick look at what this is all about.\n\n![My Plugins Profile](./test/result.png)\n\nHere is a peek at the profiling result for my plugins:\n\n```\n\nGenerating vim startup profile...\nParsing vim startup profile...\nCrunching data and generating profile plot ...\n\nYour plugins startup profile graph is saved\nas `profile.png` under current directory.\n\n==========================================\nTop 10 Plugins That Slows Down Vim Startup\n==========================================\n   1\t105.13\t\"vim-colorschemes\"\n   2\t42.661\t\"vim-easytags\"\n   3\t31.173\t\"vim-vendetta\"\n   4\t22.02\t\"syntastic\"\n   5\t13.362\t\"vim-online-thesaurus\"\n   6\t7.888\t\"vim-easymotion\"\n   7\t6.931\t\"vim-airline\"\n   8\t6.608\t\"YankRing.vim\"\n   9\t5.266\t\"nerdcommenter\"\n  10\t5.017\t\"delimitMate\"\n==========================================\nDone!\n```\n\n## Story\n\nIf you use `vim-plug` (or other amazing plugin manager of your choice) to install\nyour vim (gvim or macvim) plugins, then chances are high that it gets\naddictive. You will find yourself with several dozens of useful plugins.\n\n`vim-plug` (and `NeoBundle`) offers you to load your plugins on-demand (lazy-loading). But\nwhich needs fine tuning? Well, using vim's built-in profiling `vim\n--startuptime` you can get a timing for all function calls during\nstartup. However, the data is for each functions. You will have to\nfigure out the math, and make sure those functions calls are form the\nsame plugins. Even some sorting might help, but sorting the timing for\neach functions does not really make sense because it is really time of the\nplugins (but not the functions) that you really care about.\n\nI am poor at doing mental math, even for simple sums. However, with the power\nof a simple bash script and `R`, we can get all we want.\n\nThis utility automatically detects your plugins directory, and does the\nrest of the hard work for you.\n\n\n### Supported Plugin-Managers\n\nHere is the list of supported managers. Hopefully, your favourite plugin manager is among the list. If not, or if you prefer to manage your own plguins (using symlinks, of course), we could still adjust the code.\n\n - [vim-plug]\n - [NeoBundle]\n - [Vundle]\n - [Pathogen]\n\n\n### Installation\n\nThis is *NOT* a vim plugin! This is simply a profiler for your vim\nplugins that are installed through various plugin managers such as\n`vim-plug`.\n\nDownload the `.zip` [here][zip] and then simply run the bash script:\n\n\n```BASH\nbash ./vim-plugins-profile.sh  # calls R after pre-processing\n\n# Use Perl powers! Built-in RegEx, no dependencies.\nperl ./vim-plugins-profile.pl\n\n# Or Python if you are from the other camp.\npython ./vim-plugins-profile.py # -p flag plots a bar chart\n\n# Alternatively use Ruby powers! Less dependency, graph with ASCII art\nruby ./vim-plugins-profile.rb\n\n# To use an alternative executable such as neovim, pass it as the first argument.\nruby ./vim-plugins-profile.rb nvim\n```\n\nThen open the `profile.png` file for the result! It is that simple.\n\nYou can run it even without installation:\n\n### Dependency\n\n*Nothing*. Well, at least `Bash` or `Ruby` or `Perl` or `Python`, but most systems already come with those pre-installed already.\n\nIf not (e.g. in M\\$ Windows systems), then you will need to install several tools before you can run this.\n\nFor the Perl Version:\n\n - Git for Windows: The Git Bash contains a minimal Perl installation which is sufficient to run `vim-plugins-profile.pl`.\n\nFor the Ruby Version:\n\n - Bash (Cygwin, or Git for Windows will also work).\n - Ruby 2.3 (other version might as well just work. If not, you can repurt an Issue then I'll fix it)\n\nTo produce the eye-candy graphs, you can use either `R`, `Perl` + `GNUplot` or `Python`.\n\nFor `R`, the script prompts whether it should install the `R:ggplot2` package if you already have `R`. Here are the list of dependencies for it:\n\n - [R]\n - [R:ggplot2] (the ggplot2 package for R)\n\nFor `Python`, you can use either `python2` or `python3`. If you have\n`matplotlib` (optional) installed, then you can even generate the bar plot.\nImplementation for people from the Python camp is merged from [@bchretien](https://github.com/bchretien/vim-profiler). It also supports a custom command to run in the exec mode. Feel free to hack your way!\n\n\n\n[zip]: https://github.com/hyiltiz/vim-plugins-profile/archive/master.zip\n[vim-plug]: https://github.com/junegunn/vim-plug\n[GNUplot]: http://www.gnuplot.info\n[R]: https://cran.r-project.org/\n[R:ggplot2]: http://ggplot2.org/\n[NeoBundle]: https://github.com/Shougo/neobundle.vim\n[Vundle]: https://github.com/VundleVim/Vundle.vim\n[Pathogen]: https://github.com/tpope/vim-pathogen\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyiltiz%2Fvim-plugins-profile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyiltiz%2Fvim-plugins-profile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyiltiz%2Fvim-plugins-profile/lists"}