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:
jj
as secondESC
.TAB
with.
(repeat)CTRL+N
to toggle nerdtree- leader + f to trigger
fzf
for fuzzy finding (:Files
). - leader + q to trigger
fzf
with git filtering (:GFiles
).