summaryrefslogtreecommitdiff
path: root/dot_config/nvim/vimrc
blob: d64b2e364e09c56a6539ac03dd42bca422b89661 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
set nocompatible

" annoyances
set backspace=2           " aka indent,eol,start. vi-compat backspace is annoying
set clipboard=unnamedplus " Use system clipboard ('+' register)
set ffs=unix,dos,mac      " default to UNIX encodings (\n)
set hidden                " don't delete buffers when you switch through them
set magic                 " \. not . for literal dots and so on
set nobackup              " stop bothering me with backups!
set noerrorbells          " stop. bothering. me. with. noises.
set nofoldenable          " don't start with everything folded
set nolazyredraw          " update the screen when it's time to update it
set noswapfile            " no ~ files (TODO: maybe have a swap/undo dir instead)
set noundofile            " no .un files
let g:is_bash=1           " yes, use bash for highlighting. at least for now.

" major annoyances
if !has('nvim') " vim fails to into colors unless you claim to be xterm
    let oldterm = &term
    if &term =~ "-256color$" " neovim is fine tho
        set term=xterm-256color
    endif
    if oldterm =~? '\(tmux\|screen\)'
        set t_ut= " tmux/screen need xterm-* but break background cleaning
    endif " neovim should still be fine
endif

" ui
set background=dark " white text on black, get over it
set laststatus=2    " always have a status line (2=always)
set mat=2           " see: showmatch. do it for less long
set number          " line numbers
set scrolloff=2     " 2 lines around the cursor at all times (remove?)
set showmatch       " quickly show where the matching (, etc is
syntax on           " syntax highlighting is not evil
set termguicolors   " truecolor
set ttyfast         " I swear, this isn't 1998
set t_Co=256        " you might *think* I don't have colors. I do tho
set visualbell      " you can have the window blink tho
set wrap            " wrap > broken
if !has('nvim')     " plsgofasts (no meaning on neovim)
    set ttymouse=xterm2
endif
" ui-plugins
let g:airline_powerline_fonts=1            " we have powerline fonts! :D
let g:airline#extensions#tabline#enabled=1 " buffers=tabs when tabc=1

" interaction
filetype plugin on     " enable ftplugin stuff
filetype indent on     " allow custom indents per ft - e.g go/elixir 2-spaces
set loadplugins        " plugins = good
set mouse=a            " meh, mice can be convenient
set pastetoggle=<F2>   " press F2 to toggle "paste" mode
set smartindent        " this is the less annoying variant
set spelllang=en       " I speaken ze ingles
set whichwrap+=<,>,h,l " hl and arrows can switch lines

" tabs (maybe move to annoyances later)
set expandtab     " tabs are spaces
set shiftwidth=4  " indention: 4
set softtabstop=4 " see tabstop
set tabstop=4     " tabs count as 4 spaces
" tab-plugins
let g:vim_markdown_folding_disabled=1 " folding's on

" mappings
" F12 to reparse syntax
noremap <F12> <Esc>:syntax sync fromstart<CR>
inoremap <F12> <C-o>:syntax sync fromstart<CR>
" gt to re-align text based on previous pattern
noremap gt :Tabularize<CR>
" :Sprunge to upload current buffer to sprunge.us
command! Sprunge w !curl -F 'sprunge=<-' http://sprunge.us

color pencil

if filereadable(glob("~/.vim/vimrc.local"))
    source ~/.vim/vimrc.local " overwrite things here
endif