" Make sure insert mode is the default mode when opening/switching to files function! InsertMode() if &buftype ==# 'nofile' \|| !&modifiable \|| &readonly \|| bufname('%') =~# 'NERD_tree_' exe "set noinsertmode" else exe "set insertmode" endif endfunction augroup start_insertmode autocmd! autocmd BufEnter * call InsertMode() augroup END " Copy and paste stuff " TODO: " * Doesn't work when cursor is on the first col " * Support SHIFT+ARROW in visual mode inoremap v inoremap v inoremap v inoremap v inoremap pi vnoremap yi vnoremap di " Indenting " The `gv` returns you to the exact same selection, so you can repeat the " command vnoremap >gv vnoremap <gv " CTRL+q to exit pane/app inoremap :q " Useful for exiting buffers like NERDTree that don't use insertmode nnoremap :q " Find inoremap / inoremap n " Clears highlighting. NB. Overriding ESC makes it very hard to get into " NORMAL mode. inoremap :noh " Undo/redo " Doesn't use Ctrl+Z because that's already a significant *nix shortcut inoremap u inoremap " CTRL+s saves inoremap :update " CTRL+k deletes the current line inoremap "_dd " CTRL+d duplicates current line " TODO: don't put it in vim's clipboard, so CTRL+V works as expected inoremap yyp " Alt+/- moves the current line up and down inoremap :m -2 inoremap :m +1 " Home goes back to the first non-whitespace character of the line inoremap ^ " Allow text to wrap in text files au BufNewFile,BufRead *.txt,*.md,*.markdown setlocal linebreak spell " Make arrow keys move through wrapped lines " TODO: " * Scroll window 1 wrapped soft line at a time rather an entire block of wrapped " lines. au BufNewFile,BufRead *.txt,*.md,*.markdown inoremap gk au BufNewFile,BufRead *.txt,*.md,*.markdown inoremap gj