|
|
|
|
" Standard setup {{{1
|
|
|
|
|
" set non-compatible
|
|
|
|
|
set nocompatible
|
|
|
|
|
|
|
|
|
|
" set syntax highlighting
|
|
|
|
|
syntax on
|
|
|
|
|
|
|
|
|
|
" Enable netrw
|
|
|
|
|
filetype plugin indent on
|
|
|
|
|
|
|
|
|
|
" start pathogen
|
|
|
|
|
call pathogen#infect()
|
|
|
|
|
call pathogen#helptags()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"Leaders {{{1
|
|
|
|
|
let mapleader = ","
|
|
|
|
|
let maplocalleader = "\\"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let base16colorspace=256 " Access colors present in 256 colorspace
|
|
|
|
|
|
|
|
|
|
colorscheme base16-gruvbox-dark-hard
|
|
|
|
|
|
|
|
|
|
" Config {{{1
|
|
|
|
|
" Set auto read so a file is updated if externally changed
|
|
|
|
|
set autoread
|
|
|
|
|
|
|
|
|
|
" Turn on mouse Interaction
|
|
|
|
|
" set mouse=a
|
|
|
|
|
|
|
|
|
|
" Set spelcheck language
|
|
|
|
|
set spelllang=en_gb
|
|
|
|
|
|
|
|
|
|
" Set default split to be right or bottom
|
|
|
|
|
set splitright
|
|
|
|
|
set splitbelow
|
|
|
|
|
|
|
|
|
|
" Tell vim it's a fast terminal
|
|
|
|
|
set ttyfast
|
|
|
|
|
|
|
|
|
|
" set relative ruler with current line as real line number
|
|
|
|
|
set relativenumber
|
|
|
|
|
set number
|
|
|
|
|
|
|
|
|
|
" Stop vim wrapping a line mid-word
|
|
|
|
|
set linebreak
|
|
|
|
|
|
|
|
|
|
" search in sub folders
|
|
|
|
|
set path+=**
|
|
|
|
|
|
|
|
|
|
" Display matching files when tab completing - ignoring files that I probably
|
|
|
|
|
" dont want to match
|
|
|
|
|
set wildmenu
|
|
|
|
|
set wildignore+=*.min.js,*.min.css,*/node_modules/*,*/dist/*
|
|
|
|
|
|
|
|
|
|
" Time vim waits to see if you are pushing another key
|
|
|
|
|
set timeoutlen=500
|
|
|
|
|
|
|
|
|
|
" set tabwidth
|
|
|
|
|
set autoindent
|
|
|
|
|
set smartindent
|
|
|
|
|
set shiftwidth=4
|
|
|
|
|
set tabstop=4
|
|
|
|
|
|
|
|
|
|
" Add invisivle character reperesentation
|
|
|
|
|
set list listchars=tab:»\ ,trail:\␣,eol:↩
|
|
|
|
|
|
|
|
|
|
" make search highlight as you type
|
|
|
|
|
set incsearch
|
|
|
|
|
|
|
|
|
|
" Make search case insensitive unless I type a capital letter
|
|
|
|
|
set ignorecase smartcase
|
|
|
|
|
|
|
|
|
|
" Make backspace work properly in insert mode
|
|
|
|
|
set backspace=indent,eol,start
|
|
|
|
|
|
|
|
|
|
" Show commands as you type them
|
|
|
|
|
set showcmd
|
|
|
|
|
|
|
|
|
|
set cursorline
|
|
|
|
|
|
|
|
|
|
" Make vim default to the plus register (system clipboard) when yanking etc.
|
|
|
|
|
"set clipboard=unnamedplus
|
|
|
|
|
|
|
|
|
|
" Make the cursor change in insert mode
|
|
|
|
|
"Ps = 0 -> blinking block.
|
|
|
|
|
"Ps = 1 -> blinking block (default).
|
|
|
|
|
"Ps = 2 -> steady block.
|
|
|
|
|
"Ps = 3 -> blinking underline.
|
|
|
|
|
"Ps = 4 -> steady underline.
|
|
|
|
|
"Ps = 5 -> blinking bar (xterm).
|
|
|
|
|
"Ps = 6 -> steady bar (xterm).
|
|
|
|
|
let &t_SI = "\e[5 q"
|
|
|
|
|
let &t_EI = "\e[1 q"
|
|
|
|
|
|
|
|
|
|
" reset cursor on start
|
|
|
|
|
" In zsh I have a bar when in insert mode and a box when in visual. I want
|
|
|
|
|
" vim to automatically switch to a box when I open it
|
|
|
|
|
augroup cursorToBox
|
|
|
|
|
au!
|
|
|
|
|
autocmd VimEnter * silent !echo -ne "\e[1 q"
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
set scrolloff=5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" Highlighting {{{1
|
|
|
|
|
|
|
|
|
|
" background {{{2
|
|
|
|
|
highlight Normal guibg=NONE ctermbg=NONE
|
|
|
|
|
" Spell {{{2
|
|
|
|
|
highlight clear SpellBad
|
|
|
|
|
highlight SpellBad cterm=underline ctermfg=red
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
highlight clear SpellRare
|
|
|
|
|
highlight SpellRare cterm=underline ctermfg=yellow
|
|
|
|
|
|
|
|
|
|
highlight clear SpellLocal
|
|
|
|
|
highlight SpellLocal cterm=underline ctermfg=yellow
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" Plugin Options {{{1
|
|
|
|
|
|
|
|
|
|
" Airline
|
|
|
|
|
set laststatus=2
|
|
|
|
|
let g:airline_powerline_fonts = 1
|
|
|
|
|
let g:airline_theme='base16'
|
|
|
|
|
|
|
|
|
|
" Vimtex
|
|
|
|
|
let g:tex_flavor='latex'
|
|
|
|
|
let g:vimtex_view_method='zathura'
|
|
|
|
|
let g:vimtex_quickfix_mode=0
|
|
|
|
|
set conceallevel=1
|
|
|
|
|
let g:tex_conceal='abdmg'
|
|
|
|
|
|
|
|
|
|
" Tables
|
|
|
|
|
let g:table_mode_corner_corner='+'
|
|
|
|
|
let g:table_mode_header_fillchar='='
|
|
|
|
|
|
|
|
|
|
" UtiliSnips
|
|
|
|
|
let g:UltiSnipsExpandTrigger="<tab>"
|
|
|
|
|
let g:UltiSnipsEditSplit="vertical"
|
|
|
|
|
|
|
|
|
|
" Lion
|
|
|
|
|
let g:lion_squeeze_spaces = 1
|
|
|
|
|
|
|
|
|
|
" FZF
|
|
|
|
|
" Prefixes all of the fzf commands
|
|
|
|
|
let g:fzf_command_prefix = 'Fzf'
|
|
|
|
|
" Mappings for common Fzf commands
|
|
|
|
|
nnoremap <leader>f = :FzfFiles<cr>
|
|
|
|
|
nnoremap <leader>b = :FzfBuffers<cr>
|
|
|
|
|
nnoremap <leader>h = :FzfHelptags<cr>
|
|
|
|
|
nnoremap <leader>/ = :FzfRg
|
|
|
|
|
|
|
|
|
|
" typescript
|
|
|
|
|
let g:typescript_indent_disable = 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" deoplete
|
|
|
|
|
|
|
|
|
|
" If I am running neovim, I want deoplete to start
|
|
|
|
|
if has('nvim')
|
|
|
|
|
let g:deoplete#enable_at_startup = 1
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"}}}
|
|
|
|
|
" Functions {{{1
|
|
|
|
|
|
|
|
|
|
function! NewHtml()
|
|
|
|
|
read ~/Templates/html
|
|
|
|
|
normal! ggdd
|
|
|
|
|
setlocal filetype=html
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function! NewLatex()
|
|
|
|
|
read ~/Templates/latex
|
|
|
|
|
normal! ggdd
|
|
|
|
|
setlocal filetype=tex
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
" Moves to open window, or focuses it
|
|
|
|
|
" https://www.reddit.com/r/vim/comments/8f80o3/awesome_way_to_navigate_windows_and_autocreate/
|
|
|
|
|
function! WinMove(key)
|
|
|
|
|
let t:curwin = winnr()
|
|
|
|
|
exec "wincmd ".a:key
|
|
|
|
|
if (t:curwin == winnr())
|
|
|
|
|
if (match(a:key,'[jk]'))
|
|
|
|
|
wincmd v
|
|
|
|
|
else
|
|
|
|
|
wincmd s
|
|
|
|
|
endif
|
|
|
|
|
exec "wincmd ".a:key
|
|
|
|
|
endif
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
" Commands {{{1
|
|
|
|
|
|
|
|
|
|
"gets the wp salts
|
|
|
|
|
command! WpSalts :r! curl https://api.wordpress.org/secret-key/1.1/salt 2> /dev/null
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" Mappings {{{1
|
|
|
|
|
" Move lines up/down or chars left/right using arrow keys
|
|
|
|
|
nnoremap <Down> ddp
|
|
|
|
|
nnoremap <Up> ddkP
|
|
|
|
|
nnoremap <Right> xp
|
|
|
|
|
nnoremap <Left> xhP
|
|
|
|
|
|
|
|
|
|
" Maps the semi colon to colon in normal mode
|
|
|
|
|
nnoremap ; :
|
|
|
|
|
nnoremap : ;
|
|
|
|
|
|
|
|
|
|
" Maps the semi colon to colon in visual mode
|
|
|
|
|
vnoremap ; :
|
|
|
|
|
vnoremap : ;
|
|
|
|
|
|
|
|
|
|
" Compiles documents
|
|
|
|
|
" The uppercase versions don't push enter an extra time resulting in seeing
|
|
|
|
|
" the output of the compile command. Useful for debugging
|
|
|
|
|
nnoremap <leader>cc :w! \| !compiler <c-r>%<CR><CR>
|
|
|
|
|
nnoremap <leader>cC :w! \| !compiler <c-r>%<CR>
|
|
|
|
|
nnoremap <leader>cl :w! \| !compiler <c-r>% letter<CR><CR>
|
|
|
|
|
nnoremap <leader>cL :w! \| !compiler <c-r>% letter<CR>
|
|
|
|
|
|
|
|
|
|
" Opens the compiled documetn
|
|
|
|
|
" If something like html, it doesn't need to be compiled first
|
|
|
|
|
nnoremap <leader>co :!opout <c-r>%<CR><CR>
|
|
|
|
|
|
|
|
|
|
" Activate spelling
|
|
|
|
|
nnoremap <F7> :set spell!<cr>
|
|
|
|
|
|
|
|
|
|
" Disable Scroll wheel
|
|
|
|
|
noremap <ScrollWheelUp> <nop>
|
|
|
|
|
noremap <ScrollWheelDown> <nop>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" make ctrl + hjkl move + create windows
|
|
|
|
|
nnoremap <C-h> :call WinMove('h')<cr>
|
|
|
|
|
nnoremap <C-j> :call WinMove('j')<cr>
|
|
|
|
|
nnoremap <C-k> :call WinMove('k')<cr>
|
|
|
|
|
nnoremap <C-l> :call WinMove('l')<cr>
|
|
|
|
|
|
|
|
|
|
" Make Ctrl C and Ctrl V work on system clipboard
|
|
|
|
|
" if in visual or insert mode respectively
|
|
|
|
|
vnoremap <C-c> "+y
|
|
|
|
|
inoremap <C-v> <Esc>"+pa
|
|
|
|
|
|
|
|
|
|
" Make Ctrl t open new tab
|
|
|
|
|
" nnoremap <C-t> :tabnew<cr>
|
|
|
|
|
|
|
|
|
|
" map gV to select previously pasted
|
|
|
|
|
nnoremap <expr> gV "`[".getregtype(v:register)[0]."`]"
|
|
|
|
|
"
|
|
|
|
|
cnoremap w1 w!
|
|
|
|
|
|
|
|
|
|
" Set :w!! to save with sudo
|
|
|
|
|
cnoremap w!! w !sudo tee %
|
|
|
|
|
cnoremap w11 w !sudo tee %
|
|
|
|
|
|
|
|
|
|
"Run current line as command
|
|
|
|
|
nnoremap <leader>q !!$SHELL <cr>
|
|
|
|
|
vnoremap <leader>q !$SHELL <cr>
|
|
|
|
|
|
|
|
|
|
" Do Shebang line
|
|
|
|
|
" inoremap <C-y> <Esc>:sil exe ".!which <cWORD>" <bar> s/^/#!/ <bar> filetype detect<cr>YpDi
|
|
|
|
|
inoremap <C-y> <Esc>:sil s/^/#!\/usr\/bin\/env / <bar> filetype detect<cr>YpDi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" DO bullet points
|
|
|
|
|
inoremap <C-j> <esc>:exe "norm Ypf lDB\<C-a>"<cr>A
|
|
|
|
|
|
|
|
|
|
" edit vimrc
|
|
|
|
|
nnoremap <leader>ev :vsplit $MYVIMRC<cr>
|
|
|
|
|
nnoremap <leader>sv :source $MYVIMRC<cr>
|
|
|
|
|
|
|
|
|
|
" add new line without entering insert mode
|
|
|
|
|
nnoremap <CR> o<Esc>
|
|
|
|
|
nnoremap <S-Enter> O<Esc>
|
|
|
|
|
|
|
|
|
|
" Make jj in insert mode go to normal mode
|
|
|
|
|
inoremap jj <Esc>
|
|
|
|
|
|
|
|
|
|
" Fix previous spelling mistake
|
|
|
|
|
inoremap <C-l> <c-g>u<Esc>[s1z=`]a<c-g>u
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function! s:make_email_list(lines)
|
|
|
|
|
let l:emails = []
|
|
|
|
|
"return type( a:lines )
|
|
|
|
|
for email in a:lines
|
|
|
|
|
let l:address = substitute(split( email, "\t" )[0], " ","","" )
|
|
|
|
|
let l:name = split( email, "\t" )[1]
|
|
|
|
|
let l:emails = add( l:emails, l:name . " <" . l:address . ">" )
|
|
|
|
|
endfor
|
|
|
|
|
return join(l:emails, ', ')
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
inoremap <expr> <c-c> fzf#vim#complete({
|
|
|
|
|
\ 'source': '$HOME/Contacts/lookup',
|
|
|
|
|
\ 'reducer': function('<sid>make_email_list'),
|
|
|
|
|
\ 'options': '--multi',
|
|
|
|
|
\ 'down': '30%' })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" Stops vim doing anything when terminal gains or looses focus
|
|
|
|
|
noremap <silent> <Esc>[I <nop>
|
|
|
|
|
noremap <silent> <Esc>[O <nop>
|
|
|
|
|
noremap! <silent> <Esc>[I <nop>
|
|
|
|
|
noremap! <silent> <Esc>[O <nop>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vnoremap <leader>u :B !urlencode<cr>
|
|
|
|
|
vnoremap <leader>U :B !urldecode<cr>
|
|
|
|
|
|
|
|
|
|
" File Type Specific {{{1
|
|
|
|
|
"Make web files fold on indent {{{2
|
|
|
|
|
augroup file_web
|
|
|
|
|
autocmd!
|
|
|
|
|
autocmd FileType html,xhtml,css,less,javascript,php setlocal foldmethod=indent "foldenable
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
" js maps {{{2
|
|
|
|
|
augroup javascript
|
|
|
|
|
autocmd!
|
|
|
|
|
"binds this in class
|
|
|
|
|
autocmd FileType javascript nnoremap <localleader>b Ithis.^y$$a = pa.bind(this);
|
|
|
|
|
augroup END
|
|
|
|
|
"
|
|
|
|
|
" email maps {{{2
|
|
|
|
|
augroup mail
|
|
|
|
|
autocmd!
|
|
|
|
|
"binds this in class
|
|
|
|
|
autocmd FileType mail setlocal spell
|
|
|
|
|
augroup END
|
|
|
|
|
" less maps {{{2
|
|
|
|
|
augroup css
|
|
|
|
|
autocmd!
|
|
|
|
|
"binds this in class
|
|
|
|
|
autocmd FileType less nnoremap <leader>cl :w! \| !compiler styles.less<CR><CR>
|
|
|
|
|
autocmd FileType less nnoremap <leader>cL :w! \| !compiler styles.less<CR>
|
|
|
|
|
autocmd FileType less vmap <leader>a gL:
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
" Add Html maps, Currently only pandoc conversion {{{2
|
|
|
|
|
augroup html
|
|
|
|
|
autocmd!
|
|
|
|
|
" Run current line through pandoc.
|
|
|
|
|
" Convert from markdown to html
|
|
|
|
|
autocmd FileType html nnoremap <localleader>p :.!pandoc -t html -f markdown-auto_identifiers --wrap=preserve<cr>
|
|
|
|
|
"convert from html to markdown
|
|
|
|
|
autocmd FileType html nnoremap <localleader>P :.!pandoc -t markdown -f html --wrap=preserve --atx-headers<cr>
|
|
|
|
|
|
|
|
|
|
"Run current selection through pandoc
|
|
|
|
|
" Convert from markdown to html
|
|
|
|
|
autocmd FileType html vnoremap <localleader>p :!pandoc -t html -f markdown-auto_identifiers --wrap=preserve<cr>
|
|
|
|
|
"convert from html to markdown
|
|
|
|
|
autocmd FileType html vnoremap <localleader>P :!pandoc -t markdown -f html --wrap=preserve --atx-headers<cr>
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
" Add latex maps, Currently only pandoc conversion {{{2
|
|
|
|
|
augroup latex
|
|
|
|
|
autocmd!
|
|
|
|
|
" Run current line through pandoc.
|
|
|
|
|
" Convert from markdown to latex
|
|
|
|
|
autocmd FileType tex,latex nnoremap <localleader>p :.!pandoc -t latex -f markdown-auto_identifiers --wrap=preserve<cr>
|
|
|
|
|
"convert from latex to markdown
|
|
|
|
|
autocmd FileType tex,latex vnoremap <localleader>P :.!pandoc -t markdown -f latex --wrap=preserve --atx-headers<cr>
|
|
|
|
|
|
|
|
|
|
"Run current selection through pandoc
|
|
|
|
|
" Convert from markdown to latex
|
|
|
|
|
autocmd FileType tex,latex vnoremap <localleader>p :!pandoc -t latex -f markdown-auto_identifiers --wrap=preserve<cr>
|
|
|
|
|
"convert from latex to markdown
|
|
|
|
|
autocmd FileType tex,latex vnoremap <localleader>P :!pandoc -t markdown -f latex --wrap=preserve --atx-headers<cr>
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
" Make vim fold using markers {{{2
|
|
|
|
|
augroup file_i3
|
|
|
|
|
autocmd!
|
|
|
|
|
autocmd FileType i3config setlocal foldmethod=marker "foldenable
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
" Make vim fold using markers {{{2
|
|
|
|
|
augroup file_vim
|
|
|
|
|
autocmd!
|
|
|
|
|
autocmd FileType vim setlocal foldmethod=marker "foldenable
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
" Make json fold using syntax {{{2
|
|
|
|
|
augroup file_json
|
|
|
|
|
autocmd!
|
|
|
|
|
autocmd FileType json setlocal foldmethod=syntax "foldenable
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
" Make md files use spellcheck{{{2
|
|
|
|
|
augroup file_md
|
|
|
|
|
autocmd!
|
|
|
|
|
autocmd FileType markdown setlocal spell
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
""set es6 files to javascript {{{2
|
|
|
|
|
augroup detectES6
|
|
|
|
|
autocmd!
|
|
|
|
|
autocmd BufNew,BufNewFile,BufRead *.es6 :setlocal filetype=javascript
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
""set htaccess variations to apache {{{2
|
|
|
|
|
augroup detectHtaccess
|
|
|
|
|
autocmd!
|
|
|
|
|
autocmd BufNew,BufNewFile,BufRead *.htaccess,*.localhtaccess,*.livehtaccess :setlocal filetype=apache
|
|
|
|
|
augroup END
|
|
|
|
|
|
|
|
|
|
|