Redefining my vim workflow
I use vim for my everyday things. No, actually I use vim for everything.
And today I rewrote large parts of my vim configuration. Here's why.
I removed a lot of mappings from my vimrc that I did not used.
For example: I had a mapping in normal mode that'd fire up
fzf for the
complete filetree I was in.
I didn't use it in months, maybe more, because I use
netrw (the vim-builtin
I don't need plugins
Well, at least you don't need the most of them. First, I removed maybe three or four plugins I didn't use at all, for example the “linux-kernel-style” plugin or “Goyo” and “Limelight”. Not because I didn't like them (I do, believe me), but because I simply did not use them at all. I also removed everything with snippets, because I barely used them. So “UltiSnips” and all the snippet packages are gone now.
Then, for example, I had the vim plugin “vim-indent-guides” with a great snippet of viml I found online:
" Simple replacement for vim-indent-guides " " unicode characters explained: " tab: \uBB == ">>" " trail: \uB8 == "-" in red box exec "set listchars=tab:\uBB\uBB,trail:\uB7,nbsp:~" set list
This does the very same as indent-guides and even does more, because I can have a dot (unicode character \uB7) if there is trailing whitespace at the end of a line. I really like that!
vim as server
Because I'm running
XFCE, as explained in another post
for some time now (and I still like it), I figured that I could use
instead of commandline vim.
gvim startup time is not that great – so I figured that I could use the
awesome vim server capability to have only one running vim instance.
So I re-configured my aliases to be
alias vim="vim -g --servername VIM --remote-tab-silent";
for example, so I automatically start in a running gvim instance (which has
VIM by default).
If no vim instance is running, this automatically starts a new
But because I'm a notorious
:q-hitting vimmer, I remapped
if has("gui_running") cnoremap <silent> wq<CR> w<bar>bd<CR> cnoremap <silent> q<CR> bd<CR> cnoremap <silent> x<CR> bd<CR> nmap <Leader>q :bd<CR> endif
So when I hit
:q it actually executes
bd, which just closes the current
If the current buffer is the last buffer, it enters an anonymous buffer
This is really awesome!
To actually close my vim session, I have to
:quit now, which is longer and
therefor I have more time to stop myself from doing that.
The code above did not completely work as intended, so I changed it to the following:
if has("gui_running") fu! CloseWindowOrBuffer() if winnr('$') == 1 if bufnr('$') == 1 :echo "Closing last instance not allowed" else :bd endif else :close endif endf nmap <Leader>q :call CloseWindowOrBuffer() cnoremap <silent> wq<CR> w<CR>:call CloseWindowOrBuffer()<CR> cnoremap <silent> q<CR> :call CloseWindowOrBuffer()<CR> cnoremap <silent> x<CR> bd<CR> else nmap <Leader>q :q endif
I'm still not sure whether this is what I want.
Finally, I set my
$GIT_EDITOR variables to
export EDITOR="vim -g --servername VIM --remote-tab-wait-silent" export GIT_EDITOR="vim -g --servername VIM --remote-tab-wait-silent"
To get the best experience when calling vim through scripts or other programs
What I want to get from this
Well, I made my vim installation a lot less bloated.
By removing a bunch of plugins I made vim start up way faster, and by using
only one vim instance for all the things, even more.
gvim, I can have pretty fonts and so on.
I wonder how these things work out for me...