dots/vim/.vimrc

242 lines
7.5 KiB
VimL

" Vi improved, gotta be first
set nocompatible
" enable filetype extension
filetype on
filetype plugin on
filetype indent on " auto file type based indentation
syntax enable
" Settings
set noerrorbells " No beeps
set number " Show line numbers
" indent allow backspacing over autoident
" eol allow backspacing over line breaks (join lines)
" start allow backspacing over the start of insert; CTRL-W and CTRL-U stop once
" at the start of insert
set backspace=indent,eol,start " Makes backspace key more powerful.
set showcmd " Show me what I'm typing
set showmode " Show current mode.
set noswapfile " Don't use swapfile
set nobackup " Don't create annoying backup files
set nowritebackup " Don't waste disk io writing backup files
set splitright " Split vertical windows right to the current windows
set splitbelow " Split horizontal windows below to the current windows
set encoding=utf-8 " Set default encoding to UTF-8
if has('unix')
set t_Co=256 " use 256 colors in vim
endif
set autowrite " Automatically save before :next, :make etc.
set autoread " Automatically reread changed files without asking me anything
set laststatus=2
set hidden
set ruler " Show the cursor position all the time
au FocusLost * :wa " Set vim to save the file on focus out.
set fileformats=unix,dos,mac " Prefer Unix over Windows over OS 9 formats
set showmatch " Show matching brackets by flickering
set noshowmode " We show the mode with airline or lightline
set incsearch " Shows the match while typing
set hlsearch " Highlight found searches
set ignorecase " Search case insensitive...
set smartcase " ... but not when search pattern contains upper case characters
set clipboard=unnamedplus " use 'global register for copy'
"speed up vim
" set ttyfast " indicates a fast terminal connection. More chars sent to screen
" for redrawing
" set ttyscroll=3 " Maximum no. of lines to scroll the screen. If more screen is
" is redrawn. In a terminal where scrolling is slow but
" redraw is fast a small number like 3 speeds up displaying
set lazyredraw " does not redraw the screen on nontyped commands
set updatetime=250 " git gutter faster updates
set cursorline
" speed up syntax highlighting on slow computer
" set nocursorcolumn " Don't highlight the screen column of the cursor
" set nocursorline " Don't highlight the screen line of the cursor
" syntax sync minlines=256
" set synmaxcol=300
" set re=1
" open help vertically
" command! -nargs=* -complete=help Help vertical belowright help <args>
" autocmd FileType help wincmd L
" automatic automcomplete for html files
" autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
" Make Vim to handle long lines nicely.
set wrap " wrap wrong lines that extend beyond visible screen
set textwidth=79 " was 79
set formatoptions=qn1 " :h fo-table for details add r for auto insert comment leader
set colorcolumn=80 " was 80
"set relativenumber
"set norelativenumber
" mail line wrapping
au BufRead /tmp/mutt-* set tw=72
set autoindent " copy indent from current when starting a new line. Typing <CR>
" in insert mode or 'o' 'O' in normal triggers it
" set complete-=i
set smarttab " insert blanks according to shiftwidth, tabstop, softtab, BS will
" delete shiftwidth
" default tab settings based on google style guide
"set tabstop=8 " 8 spaces for a tab
set shiftwidth=8 " 8 spaces for identation
set expandtab " insert space characters whenever tab is pressed
set softtabstop=8 " number of spaces that a <Tab> counts for while performing
" editing operations like inserting a <Tab> or using <BS>
" Shortcut to rapidly toggle `set list`
" nmap <leader>m :set list!<CR>
" set listchars=tab:▸\ ,eol:¬,trail:· " show tabs, eols and trailing spaces
" Unrecogised extensions fix
au BufRead,BufNewFile *.rockspec set filetype=lua
au BufRead,BufNewFile *.md set filetype=markdown
au Bufread,BufNewFile *.org.txt set filetype=org
" Ask to clean all trailing white-spaces upon saving
" autocmd BufWritePre * :%s/\s\+$//ec
" Use specific spacing for different formats
" expandtab, et: <Tab> -> spaces
" tabstop, ts: length of a <Tab>
" shiftwidth, sw: spaces for autoindent
" softtabstop, sts: how many spaces a <Tab> inserts or <BS> removes
au FileType verilog,matlab setl et ts=4 sw=4 sts=4
au FileType lua setl et ts=3 sw=3 sts=2
au FileType c,cuda,tex,bib setl et ts=4 sw=2 sts=2
au FileType make set noexpandtab shiftwidth=8 softtabstop=0
" >>> ended here refactoring
set nrformats-=octal
set shiftround
" Time out on key codes but not mappings.
" Basically this makes terminal Vim work sanely.
set notimeout
set ttimeout
set ttimeoutlen=10
" Better Completion
set complete=.,w,b,u,t,i
set completeopt=longest,menuone
let mapleader=" " " set map leader key to comma
" configure wildmenu tab completion
set wildmode=list:longest,full
set wildignorecase
" turn off search highlight
nnoremap <leader><space> :nohlsearch<CR>
" folding support
set foldenable " enable folding
set foldlevelstart=10 " open most folds by default
set foldnestmax=10 " 10 nested fold max
" space open/closes folds
nnoremap <space> za
set foldmethod=indent " fold based on indent level
" move vertically by visual line not ignoring wrapped lines
nnoremap j gj
nnoremap k gk
" save session
nnoremap <leader>s :mksession<CR>
" open ag.vim
nnoremap <leader>a :Ack
" number of commands that are remembered
if &history < 1000
set history=50
endif
" set maximum number of tabs
if &tabpagemax < 50
set tabpagemax=50
endif
" create viminfo on exit to resume where you left off
if !empty(&viminfo)
set viminfo^=!
endif
" number of lines visible above the cursor
if !&scrolloff
set scrolloff=1
endif
" minimum number of screen columns to keep to the right and left of the cursor
if !&sidescrolloff
set sidescrolloff=5
endif
" last line that doesn't fit on window will be displayed as much as possible
set display+=lastline
" gvim specific settings
set guioptions-=m "menu bar
set guioptions-=T "toolbar
set guioptions-=r "scrollbar
" Center the screen
nnoremap <space> zz
" C-d to delete in insert mode
inoremap <C-d> <Del>
" persistent undo survives vim exits
if has("persistent_undo")
set undodir=~/.vim/undodir/
silent call system('mkdir -p ' . &undodir)
set undofile
endif
" use mouse if available
if has('mouse')
set mouse=a
endif
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
" autocmd BufReadPost *
" \ if line("'\"") >= 1 && line("'\"") <= line("$") |
" \ exe "normal! g`\"" |
" \ endif
augroup resCur
autocmd!
autocmd BufReadPost * call setpos(".", getpos("'\""))
augroup END
autocmd FileType make set noexpandtab shiftwidth=8 softtabstop=0
" Allow saving of files as sudo when i forgot to start vim using sudo
cmap w!! w !sudo tee > /dev/null %
" keeps the visual selection active after indenting
vmap > >gv
vmap < <gv
if has('gui_running')
set guifont=Inconsolata-g\ for\ Powerline\ 11
endif
" source vim plug and plugins
source ~/.vimrc.plug
" source plugins settings
source ~/.vimrc.plugins.settings