Improve productivity by tracking work environment with git - vim

In this post I try to describe my vim configuration procedure and how it is connected with git. The whole concept is based on keeping all the configuration files in a separate directory. These files are connected using symbolic links in places where system or application requires it (eg $HOME/.vimrc -> /home/jdoe/workspace/dotfiles/vimrc). So first let’s create local directory for vim:

1
cd ~/workspace/dotfiles;mkdir vim

Pathogen

The first plugin that will be installed is pathogen created by tpope and accessible through github. Pathogen is a vim script to manage all vim plugins with ease. Below line add pathogen as submodule to our workspace repository created in previous post:

1
git submodule add https://github.com/tpope/vim-pathogen.git dotfiles/vim/pathogen

Initialize repository and update it:

1
git submodule init && git submodule update

Create additional directories need to complete pathogen installation, change directory to autoload:

1
cd dotfiles/vim;mkdir {autoload,bundle};cd autoload

In autoload directory pathogen should be installed, bundle directory is a place for all plugins installed in future. Finally we need to link vim script from pathogen submodule to current directory ( dotfiles/vim/autoload):

1
ln -s ../pathogen/autoload/pathogen.vim .

Directory structure should look like below:

1
2
3
4
5
6
7
8
9
pietrushnic@eriador:~/workspace/dotfiles$ tree .
??? vim
??? autoload
?   ??? pathogen.vim -> ../pathogen/autoload/pathogen.vim
??? bundle
??? pathogen
??? autoload
?   ??? pathogen.vim
??? README.markdown

At the end of pathogen installation few lines to $HOME/.vimrc should be added. Of course following rules about dotfiles management .vimrc should be created as separate file in ~/workspace/dotfiles and linked to $HOME/.vimrc.

1
touch vimrc;ln -s $PWD/vimrc $HOME/.vimrc

Add below lines to $HOME/.vimrc:

1
2
3
4
5
6
call pathogen#infect()
call pathogen#runtime_append_all_bundles()
call pathogen#helptags()
syntax on
filetype plugin
indent on

Fuzzyfinder

This is second plugin without which I cannot work. It speeds up searching though files, directories and tags. Has multiple useful features. RTFM if you want knew them. I will be also added as a git submodule:

1
git submodule add https://github.com/vim-scripts/FuzzyFinder.git dotfiles/vim/bundle/fuzzyfinder

Additional plugin is needed to correctly install fuzzyfinder:

1
git submodule add https://github.com/vim-scripts/L9.git dotfiles/vim/bundle/l9

Initialize and update submodules:

1
git submodule init && git submodule update

Configuration I suggest to configure fuzzyfinder with accordance to example provided in help.

  • Run vim and type :h fuf@en.
  • Choose tag fuf-vimrc-example and press Ctrl-].
  • Mark whole keybindings copy and paste to ~/.vimrc

Right now I think it is enough with vim configuration. Of course I use plenty of other plugins but I don’t have to time to describe my them all (maybe in future posts). Don’t forget to commit your changes, there could be a lot of them, however, to deal with the distribution of these changes and improve your skills try to use git add -p interface, suggesting after linux code style - each commit should contain separate logical part of the changes, personally I add prefix to my commits (eg . vim, git, etc.) to ease deal with git log. Notes:

  • vim helpfiles generates tags files, which should be ignored by git, so I recommend to create .gitignore in every module with blow content:

    .gitignore tags*

  • by default fuzzyfinder operate on unfriendly color palette espessicaly when using it through putty, highlighted pattern could be changed by added below lines to .vimrc (9 = black)

1
" fuzzy-finder - fix colors highlight PmenuSel ctermbg=9

Piotr Król
I’m into open-source firmware, drawing inspiration from the classic hacker ethos of collaborative innovation and transparency. At 3mdeb, we’re excited about our two main projects: Zarhus OS, an Embedded Linux distribution based on Yocto, and Dasharo, a coreboot downstream. Both are about the value of open development, embedded firmware resilience, platform security transparency, the right to repair, and digital sovereignty. Community is at the center of our activity. By being involved in the Dasharo Users Group, Dasharo Developers vPub, and events like the Qubes OS Summit, we connect with others who share our passion for open-source.