Title: Vim: So long Pathogen, hello native package loading | George Ornbo
Open Graph Title: Vim: So long Pathogen, hello native package loading | George Ornbo
X Title: Vim: So long Pathogen, hello native package loading | George Ornbo
Description: Vim 8 added a native way to load third-party packages. This means, for me at least, there is no longer any need to use a third party plugin helper like Pathogen.
Open Graph Description: Vim 8 added a native way to load third-party packages. This means, for me at least, there is no longer any need to use a third party plugin helper like Pathogen.
X Description: Vim 8 added a native way to load third-party packages. This means, for me at least, there is no longer any need to use a third party plugin helper like Pathogen.
Keywords:
Opengraph URL: https://shapeshed.com/vim-packages/
X: @shapeshed
Domain: shapeshed.com
{
"@context": "http://schema.org",
"@type": "BlogPosting",
"mainEntityOfPage":{
"@type":"WebPage",
"@id":"https:\/\/shapeshed.com\/"
},
"headline": "Vim: So long Pathogen, hello native package loading",
"image": {
"@type": "ImageObject",
"url": "https:\/\/shapeshed.com\/images/george-700.jpg",
"width": 700,
"height": 700
},
"copyrightYear" : "2016",
"url" : "https:\/\/shapeshed.com\/vim-packages\/",
"datePublished": "2016-10-20T00:00:00JST",
"dateModified": "2024-09-19T02:41:09JST",
"author": {
"@type": "Person",
"name": "George Ornbo",
"image": "https:\/\/shapeshed.com\/images/george-400.jpg"
},
"publisher": {
"@type": "Organization",
"name": "Shape Shed",
"logo": {
"@type": "ImageObject",
"url": "https:\/\/shapeshed.com\/images/george-60.jpg",
"height": 60,
"width": 60
}
},
"description": "Vim 8 added a native way to load third-party packages. This means, for me at least, there is no longer any need to use a third party plugin helper like Pathogen.",
"timeRequired": "4 minutes",
"wordCount": "731",
"articleBody": "\u0026lt;h2 id=\u0026#34;vim-8-brings-native-third-party-package-loading\u0026#34;\u0026gt;Vim 8 brings native third-party package loading \u0026lt;a href=\u0026#34;#vim-8-brings-native-third-party-package-loading\u0026#34;\u0026gt;¶\u0026lt;/a\u0026gt;\u0026lt;/h2\u0026gt;\n\u0026lt;p\u0026gt;Vim 8, released on 12th September, added a new feature of being able to load\nthird party packages natively.\u0026lt;/p\u0026gt;\n\u0026lt;blockquote\u0026gt;\n\u0026lt;p\u0026gt;Plugins keep growing and more of them are available than ever before. To keep\nthe collection of plugins manageable package support has been added. This is a\nconvenient way to get one or more plugins, drop them in a directory and\npossibly keep them updated. Vim will load them automatically, or only when\ndesired. See |packages|\u0026lt;/p\u0026gt;\n\u0026lt;/blockquote\u0026gt;\n\u0026lt;p\u0026gt;The approach is very similar to the \u0026lt;a href=\u0026#34;https://github.com/tpope/vim-pathogen\u0026#34;\u0026gt;Pathogen\u0026lt;/a\u0026gt; package it adds paths to the\nVim runtime path where packages can be added. This is sensible as there are very\nfew changes required to switch from Pathogen to using the native functionality.\u0026lt;/p\u0026gt;\n\u0026lt;h2 id=\u0026#34;how-it-works\u0026#34;\u0026gt;How it works \u0026lt;a href=\u0026#34;#how-it-works\u0026#34;\u0026gt;¶\u0026lt;/a\u0026gt;\u0026lt;/h2\u0026gt;\n\u0026lt;p\u0026gt;If you store your \u0026lt;code\u0026gt;vim\u0026lt;/code\u0026gt; configuration in \u0026lt;code\u0026gt;~/.vim\u0026lt;/code\u0026gt; a new folder needs to be\ncreated within this folder to hold plugins. This is somewhat confusingly\n\u0026lt;code\u0026gt;~/.vim/pack/foo\u0026lt;/code\u0026gt;. The folder \u0026lt;code\u0026gt;foo\u0026lt;/code\u0026gt; can be anything. You can keep it at \u0026lt;code\u0026gt;foo\u0026lt;/code\u0026gt;,\nchange it to \u0026lt;code\u0026gt;my-plugins\u0026lt;/code\u0026gt; or your whatever you like. I chose to use my internet\nhandle.\u0026lt;/p\u0026gt;\n\u0026lt;div class=\u0026#34;highlight\u0026#34;\u0026gt;\u0026lt;pre tabindex=\u0026#34;0\u0026#34; class=\u0026#34;chroma\u0026#34;\u0026gt;\u0026lt;code class=\u0026#34;language-sh\u0026#34; data-lang=\u0026#34;sh\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;mkdir -p ~/.vim/pack/shapeshed\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;p\u0026gt;Within this folder a further folder \u0026lt;code\u0026gt;start\u0026lt;/code\u0026gt; is needed to hold plugins. Vim will\npick up any packages added to this folder and automatically load the plugins.\u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;Optionally another folder \u0026lt;code\u0026gt;opt\u0026lt;/code\u0026gt; may be created to hold packages that are not\nloaded automatically. Packages added in the opt folder may be loaded using\u0026lt;/p\u0026gt;\n\u0026lt;div class=\u0026#34;highlight\u0026#34;\u0026gt;\u0026lt;pre tabindex=\u0026#34;0\u0026#34; class=\u0026#34;chroma\u0026#34;\u0026gt;\u0026lt;code class=\u0026#34;language-vim\u0026#34; data-lang=\u0026#34;vim\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;p\u0026#34;\u0026gt;:\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;packadd\u0026lt;/span\u0026gt; \u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;packagename\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;p\u0026gt;This might be useful for debugging or an ad-hoc plugin.\u0026lt;/p\u0026gt;\n\u0026lt;h2 id=\u0026#34;directory-layout\u0026#34;\u0026gt;Directory layout \u0026lt;a href=\u0026#34;#directory-layout\u0026#34;\u0026gt;¶\u0026lt;/a\u0026gt;\u0026lt;/h2\u0026gt;\n\u0026lt;p\u0026gt;Directory layout for packages is given as the following.\u0026lt;/p\u0026gt;\n\u0026lt;div class=\u0026#34;highlight\u0026#34;\u0026gt;\u0026lt;pre tabindex=\u0026#34;0\u0026#34; class=\u0026#34;chroma\u0026#34;\u0026gt;\u0026lt;code class=\u0026#34;language-vim\u0026#34; data-lang=\u0026#34;vim\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/pack/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;shapeshed\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/start/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;foobar\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/plugin/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;foo\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt; \t \u0026lt;span class=\u0026#34;c\u0026#34;\u0026gt;\u0026amp;#34; always loaded, defines commands\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/pack/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;shapeshed\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/start/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;foobar\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/plugin/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;bar\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt; \t \u0026lt;span class=\u0026#34;c\u0026#34;\u0026gt;\u0026amp;#34; always loaded, defines commands\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/pack/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;shapeshed\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/start/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;foobar\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/autoload/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;foo\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt; \t \u0026lt;span class=\u0026#34;c\u0026#34;\u0026gt;\u0026amp;#34; loaded when foo command used\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/pack/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;shapeshed\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/start/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;foobar\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/doc/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;foo\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;txt\u0026lt;/span\u0026gt; \t \u0026lt;span class=\u0026#34;c\u0026#34;\u0026gt;\u0026amp;#34; help for foo.vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/pack/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;shapeshed\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/start/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;foobar\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/doc/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;tags\u0026lt;/span\u0026gt; \t \u0026lt;span class=\u0026#34;c\u0026#34;\u0026gt;\u0026amp;#34; help tags\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/pack/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;shapeshed\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/opt/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;fooextra\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/plugin/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;extra\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt; \t \u0026lt;span class=\u0026#34;c\u0026#34;\u0026gt;\u0026amp;#34; optional plugin, defines commands\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/pack/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;shapeshed\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/opt/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;fooextra\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/autoload/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;extra\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt; \t\u0026lt;span class=\u0026#34;c\u0026#34;\u0026gt;\u0026amp;#34; loaded when extra command used\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/pack/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;shapeshed\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/opt/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;fooextra\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/doc/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;extra\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;txt\u0026lt;/span\u0026gt; \t \u0026lt;span class=\u0026#34;c\u0026#34;\u0026gt;\u0026amp;#34; help for extra.vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\u0026lt;/span\u0026gt;.\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;vim\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/pack/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;shapeshed\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/opt/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;fooextra\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;sr\u0026#34;\u0026gt;/doc/\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;nx\u0026#34;\u0026gt;tags\u0026lt;/span\u0026gt; \t \u0026lt;span class=\u0026#34;c\u0026#34;\u0026gt;\u0026amp;#34; help tags\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;err\u0026#34;\u0026gt;\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;p\u0026gt;where \u0026lt;code\u0026gt;foobar\u0026lt;/code\u0026gt; and \u0026lt;code\u0026gt;fooextra\u0026lt;/code\u0026gt; are names of plugins.\u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;Other than the opt folder these are the default for existing packages so things\nare compatible.\u0026lt;/p\u0026gt;\n\u0026lt;h2 id=\u0026#34;managing-packages\u0026#34;\u0026gt;Managing packages \u0026lt;a href=\u0026#34;#managing-packages\u0026#34;\u0026gt;¶\u0026lt;/a\u0026gt;\u0026lt;/h2\u0026gt;\n\u0026lt;p\u0026gt;The new functionality in vim does not add anything for managing plugins; it just\nloads them. How you manage plugins is up to you.\u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;Managing packages is directly equivalent to using \u0026lt;a href=\u0026#34;https://github.com/tpope/vim-pathogen\u0026#34;\u0026gt;Pathogen\u0026lt;/a\u0026gt; so moving a\nplugin folder into place, cloning a git repository or using git submodules to\nmove packages into the \u0026lt;code\u0026gt;start\u0026lt;/code\u0026gt; folder are all options. Whilst I am not a huge\nfan of git submodules my \u0026lt;code\u0026gt;~/.vim\u0026lt;/code\u0026gt; folder is part of my dotfiles and I find that\nthat git submodules work for me.\u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;In the simplest form you can just move a plugin into the \u0026lt;code\u0026gt;start\u0026lt;/code\u0026gt; folder and it\nwill be loaded automatically. It is up to you how you manage it.\u0026lt;/p\u0026gt;\n\u0026lt;h2 id=\u0026#34;adding-a-package\u0026#34;\u0026gt;Adding a package \u0026lt;a href=\u0026#34;#adding-a-package\u0026#34;\u0026gt;¶\u0026lt;/a\u0026gt;\u0026lt;/h2\u0026gt;\n\u0026lt;p\u0026gt;Here is an example of how to add a package using Vim\u0026amp;rsquo;s native approach to\npackages and git submodules.\u0026lt;/p\u0026gt;\n\u0026lt;div class=\u0026#34;highlight\u0026#34;\u0026gt;\u0026lt;pre tabindex=\u0026#34;0\u0026#34; class=\u0026#34;chroma\u0026#34;\u0026gt;\u0026lt;code class=\u0026#34;language-sh\u0026#34; data-lang=\u0026#34;sh\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;nb\u0026#34;\u0026gt;cd\u0026lt;/span\u0026gt; ~/dotfiles\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;git submodule init\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;git submodule add https://github.com/vim-airline/vim-airline.git vim/pack/shapeshed/start/vim-airline\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;git add .gitmodules vim/pack/shapeshed/start/vim-airline\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;git commit\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;h2 id=\u0026#34;updating-packages\u0026#34;\u0026gt;Updating packages \u0026lt;a href=\u0026#34;#updating-packages\u0026#34;\u0026gt;¶\u0026lt;/a\u0026gt;\u0026lt;/h2\u0026gt;\n\u0026lt;p\u0026gt;To update packages is also just a case of updating git submodules.\u0026lt;/p\u0026gt;\n\u0026lt;div class=\u0026#34;highlight\u0026#34;\u0026gt;\u0026lt;pre tabindex=\u0026#34;0\u0026#34; class=\u0026#34;chroma\u0026#34;\u0026gt;\u0026lt;code class=\u0026#34;language-sh\u0026#34; data-lang=\u0026#34;sh\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;git submodule update --remote --merge\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;git commit\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;h2 id=\u0026#34;removing-a-package\u0026#34;\u0026gt;Removing a package \u0026lt;a href=\u0026#34;#removing-a-package\u0026#34;\u0026gt;¶\u0026lt;/a\u0026gt;\u0026lt;/h2\u0026gt;\n\u0026lt;p\u0026gt;Removing a package is just a case of removing the git submodule.\u0026lt;/p\u0026gt;\n\u0026lt;div class=\u0026#34;highlight\u0026#34;\u0026gt;\u0026lt;pre tabindex=\u0026#34;0\u0026#34; class=\u0026#34;chroma\u0026#34;\u0026gt;\u0026lt;code class=\u0026#34;language-sh\u0026#34; data-lang=\u0026#34;sh\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;git submodule deinit vim/pack/shapeshed/start/vim-airline\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;git rm vim/pack/shapeshed/start/vim-airline\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;rm -Rf .git/modules/vim/pack/shapeshed/start/vim-airline\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;span class=\u0026#34;line\u0026#34;\u0026gt;\u0026lt;span class=\u0026#34;cl\u0026#34;\u0026gt;git commit\n\u0026lt;/span\u0026gt;\u0026lt;/span\u0026gt;\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\u0026lt;/div\u0026gt;\u0026lt;h2 id=\u0026#34;conclusion\u0026#34;\u0026gt;Conclusion \u0026lt;a href=\u0026#34;#conclusion\u0026#34;\u0026gt;¶\u0026lt;/a\u0026gt;\u0026lt;/h2\u0026gt;\n\u0026lt;p\u0026gt;Vim\u0026amp;rsquo;s native package management is very closely related to the approach taken by\n\u0026lt;a href=\u0026#34;https://github.com/tpope/vim-pathogen\u0026#34;\u0026gt;Pathogen\u0026lt;/a\u0026gt; in that it adds an additional location to the runtime path that\npackages can be added to. Beyond that it is up to you to manage the packages\nthemselves, either through zip files, git or mercurial. It adds an additional\nfeature of optional packages that may be loaded on demand.\u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;In my testing I have found that packages work out of the box and I am confident\nenough to remove Pathogen and use the native approach to loading packages.\nPathogen has worked really well for me but less third-party code is a good\nthing.\u0026lt;/p\u0026gt;\n\u0026lt;p\u0026gt;Vim\u0026amp;rsquo;s approach to package management is not particularly user friendly mainly\nbecause it pushes the management of packages into user land. Help tags are not\nautomatically generated for packages either (\u0026lt;a href=\u0026#34;https://github.com/VundleVim/Vundle.vim\u0026#34;\u0026gt;Vundle\u0026lt;/a\u0026gt; has this) but this\ncould probably be wrapped up in a script. Git submodules still feel clunky but\nthey have worked well with Pathogen and I am confident this will work for me.\nGoing native and reducing dependencies feels good!\u0026lt;/p\u0026gt;\n\u0026lt;h2 id=\u0026#34;further-reading\u0026#34;\u0026gt;Further reading \u0026lt;a href=\u0026#34;#further-reading\u0026#34;\u0026gt;¶\u0026lt;/a\u0026gt;\u0026lt;/h2\u0026gt;\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026#34;http://vimhelp.appspot.com/repeat.txt.html#packages\u0026#34;\u0026gt;:help packages\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026#34;https://github.com/tpope/vim-pathogen\u0026#34;\u0026gt;Pathogen\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026#34;https://github.com/VundleVim/Vundle.vim\u0026#34;\u0026gt;Vundle\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026#34;https://git-scm.com/book/en/v2/Git-Tools-Submodules\u0026#34;\u0026gt;Git Submodules\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n",
"keywords" : [ "vim" ]
}
| author | George Ornbo |
| og:type | article |
| og:image | https://shapeshed.com/icon-512.png |
| og:site_name | George Ornbo |
| article:tag | vim |
| profile:first_name | George |
| profile:last_name | Ornbo |
| profile:username | shapeshed |
| profile:gender | male |
| article:published_time | 2016-10-20T00:00:00+00:00 |
| article:modified_time | 2024-09-19T02:41:09-05:00 |
| twitter:card | summary_large_image |
| twitter:creator | @shapeshed |
| twitter:domain | shapeshed.com |
| twitter:image | https://shapeshed.com/icon-512.png |
Links:
Viewport: width=device-width, initial-scale=1