dotfiles/vimrc/.vimrc

75 lines
1.8 KiB
VimL

" Set
filetype indent plugin on
" Syntax highlighting
syntax on
" Add number rows
set relativenumber
set scrolloff=999
" No swap file
set noswapfile
" Incremental search & highlight
set incsearch
set hls
" Runtime path
let $RTP=split(&runtimepath, ',')[0]
let $RC="$HOME/.vimrc"
" Set default path
set path=.,**
" Plugin stuff
execute pathogen#infect()
" Always show file name
set laststatus=2
" Enter to insert blank line below current, Shift+Enter to insert above
map <Enter> o<ESC>
map <S-Enter> O<ESC>
" Folding (move to python specific vim file?)
set foldmethod=indent
set foldnestmax=99
set foldlevelstart=99
nnoremap <space> za
vnoremap <space> zf
" F9 execute current Python file
autocmd FileType python map <buffer> <F9> :w<CR>:exec '!clear;python' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!clear;python' shellescape(@%, 1)<CR>
" Cycle through buffers
map [b :bp<CR>
map ]b :bn<CR>
map db :bd<CR>
" Toggle Nerd tree
map <F4> :NERDTreeToggle<CR>
" Save, Save and quit
map <F1> :w<CR>
map <F2> :wq<CR>
" Lint
autocmd FileType python map <buffer> gl :w<CR>:exec '!python -m black' shellescape(@%, 1)<CR>
" Automatically open NERDTree
autocmd VimEnter * NERDTree | wincmd p
" Exit Vim if NERDTree is the only window remaining in the only tab.
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
" If another buffer tries to replace NERDTree, put it in the other window, and bring back NERDTree.
autocmd BufEnter * if bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 |
\ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif
" Open the existing NERDTree on each new tab.
autocmd BufWinEnter * if getcmdwintype() == '' | silent NERDTreeMirror | endif