A Development Workflow
From my first programming steps, I used a bunch of different IDEs to code, depending on the times and the
programming language used: Borland C++, Code::Blocks (for C), Visual Studio (C, C++), Matlab IDE,
IDLE (Python native IDE), Eclipse (With PyDev for Python), Spyder, Sublime Text, Vim, VS Code, etc.
This is somehow chronological. I lately used VS Code because of three main reasons: This is a great software from
Microsoft, I needed to work on Windows (unfortunately) and wanted something great for switching between languages.
Since I recentely came back to MacOS / Linux, I felt the need to restore my “old school” development workflow, with
vim and tmux. This is what this note is about.
Terminals
- iTerm2 on MacOS.
- Terminator on Linux
Vim
A couple of years now I have been using Vim. I still feel as a newbie considering the wide options it offers, but also feel
productive with it. I use it in the shell, but also with Sublime Text and VS Code thanks to the plugins.
Vim in the shell with some configuration and plugins is a killer tool for developping in any language.

Here is my vim configuration file (.vimrc). Here is what is worth
mentionning:
- I use vundle as vim package manager.
Installing a plugin is simple:
:PluginInstall, after addingPlugin "<name>"in.vimrc. - My leader key is
\ - Plugins:
- Nerdtree (left buffer of the screenshot above)
- nerdtree-git-plugin: A plugin of NERDTree showing git status flags.
- VimDevIcons. This plugin is to have file icons showing up in the menu (like VSCode). It requires having a patched font (I am using Fira Code with ligatures enabled as standard font, and Hack Nerd Font as Non-ASCII font). Those needs be be configured in the terminal (iTerm2 in my case). They are installed with the following commands on Mac:
brew tap homebrew/cask-fonts brew cask install font-fira-code brew cask install font-hack-nerd-font - colorschemes (I usually use
molokai). - Vim airline with airline-themes for status/tabline.
- ale for async linting.
- YouCompleteMe for autocompletion.
- Vim Fugitive as Git wrapper.
- fzf as main fuzzy file finder.
- A few key binding:
jjas secondESC.TABwith.(repeat)CTRL+Nto toggle nerdtree- leader + f to trigger
fzffor fuzzy finding (:Files). - leader + q to trigger
fzfwith git filtering (:GFiles).