" " Install plugins " set nocompatible " be iMproved, required filetype plugin indent on syntax on syntax sync minlines=256 " " Settings " set autoindent set autoread " Automatically reread changed files without asking me anything set autowrite " Automatically save before :next, :make etc. set backspace=indent,eol,start " Makes backspace key more powerful. set complete=.,w,b,u,t set completeopt=longest,menuone set display+=lastline set encoding=utf-8 " Set default encoding to UTF-8 set fileformats=unix,dos,mac " Prefer Unix over Windows over OS 9 formats set hidden set history=500 set hlsearch set ignorecase set incsearch set laststatus=2 set lazyredraw set nobackup " Don't create annoying backup files set nocursorcolumn set nocursorline set noerrorbells " No beeps set showmode " We show the mode with airlien or lightline set noswapfile " Don't use swapfile set nowritebackup set nrformats-=octal set number " Show line numbers set re=1 set ruler " Show the cursor position all the time set scrolloff=7 set showcmd " Show me what I'm typing set showmatch " Show matching brackets by flickering set sidescrolloff=7 set smartcase set splitbelow " Split horizontal windows below to the current windows set splitright " Split vertical windows right to the current windows set synmaxcol=300 set tabpagemax=50 set ttyfast " Make Vim to handle long lines nicely. set wrap set textwidth=79 set formatoptions=qrn1 " Time out on key codes but not mappings. set notimeout set ttimeout set ttimeoutlen=10 if has('gui_running') "set transparency=3 set regexpengine=1 " fix js regex syntax endif let mapleader = "," " dont save .netrwhist history let g:netrw_dirhistmax=0 " Allow saving of files as sudo when I forgot to start vim using sudo. cmap w!! w !sudo tee > /dev/null % " open help vertically command! -nargs=* -complete=help Help vertical belowright help " Different Cursorshapes for the modes let &t_SI = "\[6 q" let &t_SR = "\[4 q" let &t_EI = "\[2 q" " ==================== Remap Keys ==================== " Remaps % to tab so navigate to matching brackets nnoremap % vnoremap % " Visual mode pressing * or # searches for the current selection vnoremap * :call VisualSelection('f') vnoremap # :call VisualSelection('b') " Center, kill hl nnoremap n nzzzv nnoremap N Nzzzv nnoremap :nohlsearch nnoremap zz " CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, " so that you can undo CTRL-U after inserting a line break. inoremap u " Toggle line numbers and rulers nmap ll :set number! nmap lr :set relativenumber! nmap cc :set cursorcolumn! nmap cl :set cursorline! " Better split switching map j map k map h map l map j map k map h map l " Move up and down on split lines map gk map gj map k gk map j gj " Spell checking nnoremap :setlocal spell! spell? map ss :setlocal spell! map sn ]s map sp [s map sa zg map s? z= " trim all whitespaces away nnoremap W :%s/\s\+$//:let @/='' " Do not show stupid q: window map q: :q " Paste Mode set pastetoggle= " ==================== File Type settings ==================== set tabstop=4 set softtabstop=4 set shiftwidth=4 set noexpandtab set shiftround set smarttab au BufNewFile,BufRead *.vim setlocal noet ts=4 sw=4 sts=4 au BufNewFile,BufRead *.txt setlocal noet ts=4 sw=4 sts=4 au BufNewFile,BufRead *.md setlocal noet ts=4 sw=4 sts=4 au BufNewFile,BufRead *.json setlocal et ts=2 sw=2 sts=2 au BufNewFile,BufRead *.go setlocal noet ts=4 sw=4 sts=4 au BufNewFile,BufRead *.md setlocal et ts=4 sw=4 sts=4 au BufNewFile,BufRead *.lua setlocal noet ts=4 sw=4 sts=4 au BufNewFile,BufRead *.py setlocal et ts=4 sw=4 sts=4 au BufNewFile,BufRead *.yml,*.yaml setlocal et ts=2 sw=2 sts=2 au BufNewFile,BufRead *.htm,*.html setlocal noet ts=4 sw=4 sts=4 au FileType dockerfile setlocal et ts=2 sw=2 sts=2 au FileType nginx setlocal noet ts=4 sw=4 sts=4 au FileType fstab,systemd set noet au FileType gitconfig,sh,toml set noet " ==================== Wildmenu ==================== set wildmenu set wildmode=list:full set wildignore+=.hg,.git,.svn " Version control set wildignore+=*.aux,*.out,*.toc " LaTeX intermediate files set wildignore+=*.jpg,*.bmp,*.gif,*.png,*.jpeg " binary images set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest " compiled object files set wildignore+=*.spl " compiled spelling word lists set wildignore+=*.sw? " Vim swap files set wildignore+=*.DS_Store " OSX bullshit set wildignore+=*.luac " Lua byte code set wildignore+=migrations " Django migrations set wildignore+=go/pkg " Go static files set wildignore+=go/bin " Go bin files set wildignore+=go/bin-vagrant " Go bin-vagrant files set wildignore+=*.pyc " Python byte code set wildignore+=*.orig " Merge resolution files " vim:ts=2:sw=2:et