If possible, I would prefer to not start using a package manager for now.

I'm trying to manually install this plugin for editing JS files: https://github.com/pangloss/vim-javascript

I have looked around, and tested several things, but for some reason I can't get it to work.

How would you go about "manually" installing the pangloss plugin without using pathogen, or a package manager?

It's my first question here. Hope this makes sense.

  • @D.BenKnoble Thanks! yes, I have a vim with packages support. Would be happy to hear about your suggestions. Aug 23 '19 at 20:18
  • Thanks for the detailed answer! It makes sense, and I can install pangloss/vim-javascript. It seems to work now! Aug 23 '19 at 20:54
  • I tried upvoting, but it seems I haven't enough rep. Will wait the ~24h for accepting an answer. Thanks. Aug 23 '19 at 21:40
  • Ah, but of course. Apologies
    – D. Ben Knoble
    Aug 23 '19 at 21:50

TL;DR Use :h packages

You will need

  • the plugin code (github is easiest, though if you just have a copy of the source tree lying around, that works too)

A brief history of time managing plugins1

I won't go into extreme detail here unless it is requested. This is mostly a background section, and can be skipped if needed.

In the dark ages, you used to need to put all plugin code next to each other, so (for example) your ~/.vim/plugin would have

  • plugin-a.vim
  • unrelated-plugin-b.vim
  • etc.

Updating and removing plugins was a nightmare: what did you do if an update removed a file? How did you know which files belonged with which plugins and needed deletion?

Pathogen gave us bundle to keep things separate, and that's what packages do too2.

Pathogen (typically) adds each directory under, e.g., ~/.vim/bundle to the 'runtimepath'. In other words, you could have

  • ~/.vim/bundle/mypluginhere, and
  • ~/.vim/bundle/pangloss-javascript-here

But you still managed those directories yourself. (Other plugin managers can do that for you, but you don't need—or always want—that).

The advantage of this is described Plugin layout in the Dark Ages and A New Hope: Plugin Layout with Pathogen.

Packages bring to vim8 what pathogen had already done for previous vim versions, and they do so natively. Packages provide a way of adding segmented components to the 'runtimepath' (remember that this path controls where vim looks for plugin code, autoload scripts, filetype plugins, &c.).

Enter packages

Packages use 'packpath', which is a bit like a combination of bundle and 'runtimepath'.

What you need to know is that you can put a complete copy of the plugin source tree in ~/.vim/pack/<any-name-you-want>/start/<plugin-name>. (The adept user may want to investigate opt as well.)

That's it. It will be loaded for you by vim.

Some management strategies with git

  1. git-clone: this strategy is for users who just want to clone the plugin and have it run. Typical interaction looks like
# git clone <path/to/repo> ~/.vim/pack/<other-plugins>/start/<plugin-name>
  1. git-submodule: this strategy is for folks like me who keep their dotfiles/vim configs in version control. Typical interaction looks like
# git -C <dotfile-dir> submodule add <path/to/repo> <dotfile-vim-dir>/pack/<other-plugins>/start/<plugin-name>

  1. I omit all plugin managers except pathogen, which is actually a 'runtimepath' manager. This little lie won't hurt anyone, though.
  2. They have a slightly broader use case. I'm aware, but I don't find it necessary for the purposes of this question.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.