Hacker Public Radio

Your ideas, projects, opinions - podcasted.

New episodes Monday through Friday.


HPR3070: making vim xdg compatible

Hosted by crvs on 2020-05-08 00:00:00
Download or Listen

xdg vim config

To make vim load an alternative config file either use an alias or the VIMINIT variable. i.e. place either alias vim="vim -u ~/.config/vim/vimrc" or VIMINIT="source ~/.config/vim/vimrc" in your .bashrc (ironically, that one is still in my home folder).

Once that is loaded, you should source the following file after "nocompatible"

" file: ~/.config/vim/xdg.vim
if empty($XDG_CACHE_HOME)
    let $XDG_CACHE_HOME=$HOME."/.cache"
endif

if empty($XDG_CONFIG_HOME)
    let $XDG_CONFIG_HOME=$HOME."/.config"
endif

if empty($XDG_DATA_HOME)
    let $XDG_DATA_HOME=$HOME."/.local/share"
endif

set directory=$XDG_CACHE_HOME/vim/swap,~/,/tmp
set backupdir=$XDG_CACHE_HOME/vim/backup,~/,/tmp
set undodir=$XDG_CACHE_HOME/vim/undo,~/,/tmp
set viminfo+=n$XDG_CACHE_HOME/vim/viminfo
set runtimepath+=$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/bundle/Vundle.vim,$VIM,$VIMRUNTIME
let $MYVIMRC=$XDG_CONFIG_HOME."/vim/vimrc"

With this file in place you should call it from your vimrc

" file: ~/.config/vim/vimrc
set nocompatible
filetype off
source $HOME/.config/vim/xdg.vim
call vundle#begin()
let vundle#bundle_dir = expand("$XDG_DATA_HOME/vim/bundle")

" include your calls to Plugin here

call vundle#end()
filetype plugin indent on
syntax on

source ~/.config.

Note that it is important that all the paths are defined BEFORE Vundle (or whatever is your plugin manager) is called, since the path to it is defined in xdg.vim.

You can check my full vim config at gitlab.

References

The vim script I modified my config from - https://gist.github.com/dkasak/6ae1c6bf0d771155f23b

Comments



More Information...


Copyright Information

Unless otherwise stated, our shows are released under a Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license.

The HPR Website Design is released to the Public Domain.