This post is part IV for the Vim adventures series, it starts here.
This last section contains mostly samples of my
For my plugin manager, I have this shell script. It ensures my tmp directories exist and downloads the plugins I use:
- surround to easily change surrounding characters
- commentary to (un)comment
- lion to align code
- swift language support
- northerner is a dark blue-grey colorscheme I made.
I have stopped using fuzzy finders because I prefer the deterministic aspect of tab-completed bash-like searches.
In general I am faster with
:find along with
set path=.,** (but it can be slow for big projects).
FYI, I’m making a plugin called
forage that will behave like
:find but using the super fast
Bits of confs
Custom status line
If you like what you see, paste that in your .vimrc (be sure to check out
set statusline=%<%f%#Visual#\ %y%m%w%=%l\/%-6L\ %0*%3c\ set laststatus=2 " always display status line
I made this tiny function to move to the next/previous non lower-case letter. With that, I can delete the next subword by pressing
d leader w
function! SubWord(isVisual,flags) let num=v:count - 1 if a:isVisual normal gv endif "\C case sensitive "\L non lowercase character call search('\C\L',a:flags) while num > 0 call search('\C\L',a:flags) let num -= 1 endwhile endfunction nnoremap <leader>w :<C-u>call SubWord(0,'W')<CR> nnoremap <leader>b :<C-u>call SubWord(0,'Wb')<CR> onoremap <leader>w :<C-u>call SubWord(0,'W')<CR> onoremap <leader>b :<C-u>call SubWord(0,'Wb')<CR> vnoremap <leader>w :<C-u>call SubWord(1,'W')<CR> vnoremap <leader>b :<C-u>call SubWord(1,'Wb')<CR>
Backup, swap and undo
I don’t want vim to add extra swap/backup files in my directory, so I send them to
set history=50 " keep 50 lines of command history set viminfo='20,\"500 " remember copy registers after quitting in the .viminfo file -- 20 jump links, regs up to 500 lines' set backup " Save backup files let &backupdir=$HOME."/.tmp/backup" " Write undo tree to a file to resume from next time the file is opened if has('persistent_undo') set undolevels=2000 " The number of undo items to remember set undofile " Save undo history to files locally let &undodir=$HOME."/.tmp/undo" " Set the directory of the undofile endif let &directory=$HOME."/.tmp/swap" "Sets the swap directory
Movement in insert mode
Most of the time, it’s best to stay in normal mode. I like however to do short movements in insert mode when appropriate. The following shortcuts are very common in the unix world.
"Readline movements (will work in bash) "C-u delete to 0, C-w delete word, C-h backspace work already inoremap <C-a> <C-o>^ inoremap <C-e> <C-o>$ cnoremap <C-a> <Home> inoremap <C-f> <RIGHT> inoremap <C-b> <LEFT> inoremap <C-y> <C-r>" cnoremap <C-y> <C-r>" inoremap <C-d> <DEL> inoremap <C-k> <C-o>d$ "Alt-based stuff, only works with neovim/macvim inoremap <A-d> <C-o>de inoremap <A-f> <C-o>w inoremap <A-b> <C-o>b
Vim vs NeoVim
I thought it would be worth mentioning here, Neovim intends to extend and modernize vim. Most of the current reasons to choose one over the other are political in nature.
The main reason I’d use NeoVim would be to map
Alt keys. But the fact that the osx clipboard is not (yet) fully supported stops me.
That’s it folks
If you want help from fellow vimmers, reddit vim is great, some of its regulars can be a tad harsh so try take it as a cultural quirk ;)
This concludes my vim adventures post. Feel free to shout me a good oul Tweet @PierreAclement…