Coder Social home page Coder Social logo

vimogen's Introduction

vimogen

Vimogen is a command-line utility that installs, updates or removes Vim plugins. It can also keep your plugins synchronized across multiple Vim installs. Just run vimogen update and you've updated all of your vim plugins to the latest versions.

No difficult commands to remember and no configuration required, just a text file with a list of Git repository URLs to the plugins you use. Vimogen uses Pathogen which lets you store all of your plugins in one place, as Git checkouts.

Motivation: Many plugins that I use (vim-go, syntastic, etc.) get updated a lot and I wanted an easy way to keep my copies updated. I also wanted a better way to install all of my favorite plugins at once whenever I install a new operating system. The alternatives either didn't use Git or required configuration and other stuff I didn't like.

With Vimogen, you can use the same .vimrc across multiple machines, but have separate manifest files for each machine. This is useful if you don't want to use development plugins on a production machine, and so on.

Don't worry, finding Git URLs for all of your plugins is actually very easy because vim.org mirrors them all on Github here. You can also use Bitbucket or any other Git repository location if you need to.

Requirements

  • A unix-like operating system (Linux, OS X, etc. with bash installed)
  • The Vim plug-in: Pathogen

Installation

Create a text file called $HOME/.vimogen_repos and add a list of Git URLs to the Vim plugin repositories you use, one URL per line. Vim.org mirrors them all plugins to Github here. See my .vimogen_repos file for an example.

Alternatively, vimogen will auto-generate $HOME/.vimogen_repos if you run it without creating the file first. It generates based off the current Pathogen bundles you already have. This allows you to update or uninstall any existing plugins you have. You'll only need to edit .vimogen_repos yourself when you want to add more plugins.

Then run:

$ git clone https://github.com/rkulla/vimogen
$ chmod u+x vimogen
$ cp vimogen to your $PATH

Usage

Add Git URLs to ~/.vimogen_repos--one line at a time--like:

https://github.com/tpope/vim-sensible
https://github.com/tpope/vim-surround
https://github.com/fatih/vim-go
https://github.com/tomasr/molokai
...

(Find github hosted Vim plugin URLs here)

Run vimogen without arguments:

$ vimogen

It will give you a menu of items to choose from:

1) INSTALL
2) UNINSTALL
3) UPDATE
4) EXIT
Enter the number of the menu option to perform:

For example, typing 1 will install all the plugins listed in .vimogen_repos.

Choosing INSTALL clones all the repos from .vimogen_repos into your Pathogen dir (~/.vim/bundle). Skipping ones that already exist.

Note: You can append new plugin repos to the .vimogen_repos file later and install them incrementally by re-running Vimogen's install command.

Choosing 2 to UNINSTALL gives you a list of all your plugins:

1) BACK                  8) tabular             15) vimogen
2) ALL                   9) taglist             16) vim-pathogen
3) ctrlp                10) tComment            17) vim-rails
4) molokai              11) tlib_vim            18) vim-repeat
5) pydiction            12) vcscommand          19) vim-snipmate
6) python-mode          13) vim-addon-mw-utils  20) vim-surround
7) snipmate-snippets    14) vim-go              21) ZenCoding
Enter the number of the plugin you wish to uninstall:

Press 1 to cancel and go back to the main menu or 2 to remove all of your plugins at once.

Choosing 3 to UPDATE runs a git pull on all of your bundles:

update

Command-line options

To update vimogen straight from the command-line just pass the update argument (useful for scripts/cron jobs):

$ vimogen update

To output the current contents of your .vimogen_repos file, add the 'heap' argument:

$ vimogen heap

For more verbose output, use the -v flag (not recommended for normal use).

Tips

  • If you ever want to temporarily disable a plugin, just use vimogen to UNINSTALL it, then whenever you want it back just run vimogen's INSTALL again.

  • Keep a reference to the vimogen repository in .vimogen_repos and it will show you if a new version was updated whenever you run the update command. Then all you have to do is copy the updated vimogen file to your PATH to have the latest version. Do the same for vim-pathogen.

FAQ

Can I use vimogen with non-bash shells?

Yes. All you need is bash to be installed, but you can use whatever shell you want. For instance, I use it with the zsh shell. The script uses the shebang path #!/bin/bash. Change it if your bash is installed somewhere else.

Can Vimogen install Vim color schemes, like Molokai?__

Yes. Anything that works with Pathogen (which is almost everything) will work with Vimogen.

I downloaded a Vim plugin as a .zip file. What should I do?__

Vimogen doesn't use zip files, it uses git repos. All of the plugins from vim.org are mirrored on https://github.com/vim-scripts so find it on there and put its github clone URL into ~/.vimogen_repos. If a plugin you want is not mirrored, it's probably still somewhere on Github or somewhere if you search.

I already use Dropbox (or similar) to keep my .vim/ directory synchronized. Why should I use Vimogen?__

Even if you've created a symlink from ~/.vim/ to ~/Dropbox/path/to/.vim/, that will only help you keep your existing versions of plugins synchronized. Vimogen also pulls from all your plugins' Git repositories to keep them updated.

License

Copyright (c) Ryan Kulla. Distributed under the same terms as Vim itself. See :help license

vimogen's People

Contributors

rkulla avatar glyph avatar smirecki avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.