You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
626 lines
15 KiB
626 lines
15 KiB
if !has('gui_running') |
|
set t_Co=256 |
|
endif |
|
|
|
set nocompatible |
|
|
|
|
|
|
|
""""""""""""" |
|
" PLUGINS " |
|
""""""""""""" |
|
|
|
call plug#begin('~/.vim/plugged') |
|
|
|
"FILETYPES |
|
Plug 'vim-crystal/vim-crystal' |
|
Plug 'elixir-lang/vim-elixir' |
|
Plug 'https://git.airen-no-jikken.icu/ageha/every.vim.git' |
|
Plug 'pangloss/vim-javascript' |
|
Plug 'JuliaEditorSupport/julia-vim' |
|
Plug 'leanprover/lean.vim' |
|
Plug 'plasticboy/vim-markdown' |
|
Plug 'https://git.airen-no-jikken.icu/ageha/mips.vim.git' |
|
Plug 'rust-lang/rust.vim' |
|
Plug 'cakebaker/scss-syntax.vim' |
|
Plug 'cespare/vim-toml' |
|
|
|
if has('python3') |
|
Plug 'whonore/Coqtail' |
|
endif |
|
|
|
"FUNCTIONALITY |
|
Plug 'junegunn/vim-easy-align' |
|
|
|
Plug 'xolox/vim-misc' |
|
Plug 'https://git.airen-no-jikken.icu/ageha/vim-easytags.git' |
|
|
|
Plug 'tommcdo/vim-exchange' |
|
|
|
Plug 'lilydjwg/fcitx.vim', { 'branch': 'fcitx4' } |
|
|
|
Plug 'airblade/vim-gitgutter' |
|
|
|
Plug 'junegunn/goyo.vim' |
|
|
|
Plug 'itchyny/lightline.vim' |
|
|
|
Plug 'MarcWeber/vim-addon-mw-utils' |
|
Plug 'tomtom/tlib_vim' |
|
Plug 'garbas/vim-snipmate' |
|
Plug 'honza/vim-snippets' |
|
|
|
Plug 'dhruvasagar/vim-table-mode' |
|
|
|
Plug 'tomtom/tcomment_vim' |
|
|
|
Plug 'mbbill/undotree' |
|
|
|
call plug#end() |
|
|
|
|
|
|
|
""""""""""""""""""""" |
|
" PLUGIN SETTINGS " |
|
""""""""""""""""""""" |
|
|
|
"Start interactive EasyAlign in visual mode (e.g. vip<Enter>) |
|
vmap <Enter> <Plug>(EasyAlign) |
|
|
|
"Start interactive EasyAlign for a motion/text object (e.g. gaip) |
|
nmap ga <Plug>(EasyAlign) |
|
|
|
"timeout on keycodes to prevent fcitx-switcher from lagging |
|
set ttimeoutlen=100 |
|
|
|
"toggle gundo pane |
|
nnoremap <Leader>g :UndotreeToggle<CR> |
|
|
|
"snippets |
|
let g:snipMate = { 'snippet_version' : 1 } |
|
|
|
"lightline colours. modded from 16color |
|
fun! s:Lightline_palette_init() |
|
let l:black = [ '#000000', 0 ] |
|
let l:lblack = [ '#808080', 8 ] |
|
let l:red = [ '#800000', 1 ] |
|
let l:lred = [ '#ff0000', 9 ] |
|
"let l:green = [ '#008000', 2 ] |
|
"let l:lgreen = [ '#00ff00', 10 ] |
|
let l:yellow = [ '#808000', 3 ] |
|
"let l:lyellow = [ '#ffff00', 11 ] |
|
let l:blue = [ '#000080', 4 ] |
|
"let l:lblue = [ '#0000ff', 12 ] |
|
let l:magenta = [ '#800080', 5 ] |
|
"let l:lmagenta = [ '#ff00ff', 13 ] |
|
"let l:cyan = [ '#008080', 6 ] |
|
"let l:lcyan = [ '#00ffff', 14 ] |
|
let l:white = [ '#c0c0c0', 7 ] |
|
let l:lwhite = [ '#ff00ff', 15 ] |
|
|
|
let l:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}} |
|
let l:p.normal.left = [ [ l:lwhite, l:blue ], [ l:lwhite, l:lblack ] ] |
|
let l:p.normal.right = [ [ l:black, l:white ], [ l:lwhite, l:lblack ] ] |
|
let l:p.inactive.right = [ [ l:lblack, l:black ], [ l:lblack, l:black ] ] |
|
let l:p.inactive.left = [ [ l:lblack, l:black ], [ l:lblack, l:black ] ] |
|
let l:p.insert.left = [ [ l:lwhite, l:magenta ], [ l:lwhite, l:lblack ] ] |
|
let l:p.replace.left = [ [ l:lwhite, l:lred ], [ l:lwhite, l:lblack ] ] |
|
let l:p.visual.left = [ [ l:white, l:red ], [ l:lwhite, l:lblack ] ] |
|
let l:p.normal.middle = [ [ l:white, l:black ] ] |
|
let l:p.inactive.middle = [ [ l:white, l:black ] ] |
|
let l:p.tabline.left = [ [ l:white, l:black ] ] |
|
let l:p.tabline.tabsel = [ [ l:white, l:black ] ] |
|
let l:p.tabline.middle = [ [ l:black, l:white ] ] |
|
let l:p.tabline.right = copy(l:p.normal.right) |
|
let l:p.normal.error = [ [ l:white, l:red ] ] |
|
let l:p.normal.warning = [ [ l:white, l:yellow ] ] |
|
|
|
let g:lightline#colorscheme#shmibs#palette = lightline#colorscheme#flatten(l:p) |
|
let g:lightline = { |
|
\ 'active': { |
|
\ 'right': [ [ 'lineinfo' ], |
|
\ [ 'percent' ], |
|
\ [ 'filetype' ] ] |
|
\ }, 'colorscheme': 'shmibs' } |
|
endfun |
|
|
|
call s:Lightline_palette_init() |
|
|
|
"async easytags |
|
let g:easytags_async = 1 |
|
let g:easytags_always_enabled = 1 |
|
|
|
"goyo |
|
fun! s:goyo_enter() |
|
set formatoptions+=a |
|
endfun |
|
|
|
fun! s:goyo_leave() |
|
set formatoptions-=a |
|
endfun |
|
|
|
autocmd! User GoyoEnter nested call <SID>goyo_enter() |
|
autocmd! User GoyoLeave nested call <SID>goyo_leave() |
|
|
|
nnoremap <Leader>w :execute "silent Goyo"<CR><C-l> |
|
|
|
"table |
|
let g:table_mode_corner = '|' |
|
let g:table_mode_syntax = 0 |
|
|
|
|
|
"""""""""""""""""""""" |
|
" GENERAL SETTINGS " |
|
"""""""""""""""""""""" |
|
|
|
syntax on |
|
filetype plugin indent on |
|
set autoindent |
|
|
|
"top-level folds only |
|
set foldnestmax=1 |
|
|
|
colorscheme shmibs |
|
|
|
"close modeline security hole |
|
set nomodeline |
|
set modelines=0 |
|
|
|
"revert annoying neovim cursor |
|
set guicursor=i-ci-ve-r-cr-o-n-v-c-sm:block-blinkon200 |
|
|
|
"enable status-line |
|
set laststatus=2 |
|
|
|
"hide mode in cmd |
|
set noshowmode |
|
|
|
"allow edited background buffers |
|
set hidden |
|
|
|
set title |
|
|
|
"spelling |
|
set spelllang=en_gb |
|
set spellcapcheck= |
|
|
|
"visual marker for overflowing the 80th column |
|
highlight Overwide ctermbg=8 |
|
call matchadd('Overwide', '\%81v', 100) |
|
|
|
"highlight space before tab |
|
highlight SpaceBeforeTab ctermbg=red |
|
call matchadd('SpaceBeforeTab', '\ \t') |
|
|
|
"don't search highlighting |
|
set nohlsearch |
|
|
|
set encoding=utf-8 |
|
set fileencoding=utf-8 |
|
|
|
|
|
|
|
""""""""""""" |
|
" ALIASES " |
|
""""""""""""" |
|
|
|
"i keep accidentally typing these over and over |
|
command W w |
|
command Wq wq |
|
command WQ wq |
|
command Q q |
|
command E e |
|
|
|
|
|
|
|
"""""""""""""" |
|
" MAPPINGS " |
|
"""""""""""""" |
|
|
|
"insert lines below |
|
nnoremap <silent>= :set paste<CR>m`O<Esc>``:set nopaste<CR> |
|
|
|
"folds! |
|
nnoremap fo zO |
|
nnoremap fc zC |
|
nnoremap fm zM |
|
nnoremap fr zR |
|
|
|
"buffer-handling |
|
nnoremap <C-j> :bn<CR> |
|
nnoremap <C-k> :bp<CR> |
|
|
|
fun! s:bufflist() |
|
if &more |
|
set nomore |
|
execute "buffers" |
|
set more |
|
else |
|
execute "buffers" |
|
endif |
|
endfun |
|
|
|
nnoremap <C-g> :call <SID>bufflist()<CR>:b<Space> |
|
|
|
"copy words from above and below the cursor |
|
inoremap <expr> <C-y> pumvisible() ? "\<C-y>" : matchstr(getline(line('.')-1), '\%' . virtcol('.') . 'v\%(\k\+\\|.\)') |
|
inoremap <expr> <C-e> pumvisible() ? "\<C-e>" : matchstr(getline(line('.')+1), '\%' . virtcol('.') . 'v\%(\k\+\\|.\)') |
|
|
|
"use the X clipboard for things when running in a virtual terminal, because yes |
|
if &term != 'linux' && has('clipboard') |
|
nnoremap <expr> y (v:register ==# '"' ? '"+' : '') . 'y' |
|
nnoremap <expr> Y (v:register ==# '"' ? '"+' : '') . 'Y' |
|
xnoremap <expr> y (v:register ==# '"' ? '"+' : '') . 'y' |
|
xnoremap <expr> Y (v:register ==# '"' ? '"+' : '') . 'Y' |
|
|
|
nnoremap <expr> d (v:register ==# '"' ? '"+' : '') . 'd' |
|
nnoremap <expr> D (v:register ==# '"' ? '"+' : '') . 'D' |
|
xnoremap <expr> d (v:register ==# '"' ? '"+' : '') . 'd' |
|
xnoremap <expr> D (v:register ==# '"' ? '"+' : '') . 'D' |
|
|
|
nnoremap <expr> p (v:register ==# '"' ? '"+' : '') . 'p' |
|
nnoremap <expr> P (v:register ==# '"' ? '"+' : '') . 'P' |
|
xnoremap <expr> p (v:register ==# '"' ? '"+' : '') . 'p' |
|
xnoremap <expr> P (v:register ==# '"' ? '"+' : '') . 'P' |
|
endif |
|
|
|
"use pgup/pgdwn for command history completion (matches zsh conf) |
|
cnoremap <PageUp> <up> |
|
cnoremap <PageDown> <down> |
|
|
|
|
|
|
|
""""""""""""""""""""""" |
|
" FILETYPE SETTINGS " |
|
""""""""""""""""""""""" |
|
|
|
"annoying syntax-related values that need to be set before files are |
|
"opened |
|
let g:c_no_comment_fold = 1 |
|
let g:c_no_if0_fold = 1 |
|
|
|
let g:sh_fold_enabled = 1 |
|
|
|
if has('autocmd') |
|
|
|
"set various filetype-specific settings. |
|
augroup filetypesettings |
|
au FileType asm call <SID>settings_asm() |
|
au FileType bash call <SID>settings_shell() |
|
au FileType c call <SID>settings_c() |
|
au FileType coffee call <SID>settings_coffee() |
|
au FileType conf call <SID>settings_conf() |
|
au FileType coq call <SID>settings_coq() |
|
au FileType cpp call <SID>settings_c() |
|
au FileType crystal call <SID>settings_crystal() |
|
au FileType cs call <SID>settings_c() |
|
au FileType css call <SID>settings_css() |
|
au FileType d call <SID>settings_c() |
|
au FileType elixir call <SID>settings_elixir() |
|
au FileType elm call <SID>settings_haskell() |
|
au FileType go call <SID>settings_c() |
|
au FileType haskell call <SID>settings_haskell() |
|
au FileType html call <SID>settings_html() |
|
au FileType xhtml call <SID>settings_html() |
|
au FileType ia64 call <SID>settings_ia64() |
|
au FileType javascript call <SID>settings_javascript() |
|
au FileType make call <SID>settings_script() |
|
au FileType mail call <SID>settings_mail() |
|
au FileType markdown call <SID>settings_markdown() |
|
au FileType matlab call <SID>settings_matlab() |
|
au FileType mips call <SID>settings_mips() |
|
au FileType mkd call <SID>settings_text() |
|
au FileType nim call <SID>settings_nim() |
|
au FileType ocaml call <SID>settings_ocaml() |
|
au FileType perl call <SID>settings_perl() |
|
au FileType php call <SID>settings_html() |
|
au FileType python call <SID>settings_script() |
|
au FileType ruby call <SID>settings_script2() |
|
au FileType rust call <SID>settings_rust() |
|
au FileType scss call <SID>settings_css() |
|
au FileType sh call <SID>settings_script() |
|
au FileType tex call <SID>settings_tex() |
|
au FileType text call <SID>settings_text() |
|
au FileType vim call <SID>settings_vim() |
|
au FileType yaml call <SID>settings_script2() |
|
au FileType zig call <SID>settings_c() |
|
au FileType zsh call <SID>settings_shell() |
|
au FileType z80 call <SID>settings_z80() |
|
augroup END |
|
|
|
"do other stuff |
|
augroup filetypemisc |
|
au FileType * call <SID>settings_skel_read() |
|
augroup END |
|
|
|
endif "autocmd |
|
|
|
" |
|
" Settings Subroutines |
|
" |
|
|
|
"command for reading filetype skeletons |
|
fun! s:settings_skel_read() |
|
"is the buffer not empty? |
|
if line('$') != 1 || col('$') != 1 |
|
return 1 |
|
endif |
|
"is there no template? |
|
if filereadable(split(&rtp, ',')[0] . "/skel/" . &ft) == 0 |
|
return 1 |
|
endif |
|
exec 'silent! r ' . split(&rtp, ',')[0] . "/skel/" . &ft |
|
"read the date into %DATE% |
|
exec '%s/%DATE%/' . system("date '+%a, %B %d, %Y'|tr -d '\n'") . '/ge' |
|
"move cursor to %START% |
|
exec "silent! normal! ggJ/%START%\<CR>:s/%START%//\<CR>zz" |
|
endfun |
|
|
|
"run vader tests on the current file |
|
fun! s:settings_sub_test_vim() |
|
"check first if curbuf is a file |
|
if @% != '' && filereadable(@%) |
|
let l:real = '' |
|
|
|
"test first for file in project test dir |
|
silent let l:base = systemlist('git rev-parse --show-toplevel')[0] |
|
if !v:shell_error |
|
let l:check = l:base . '/test/' . expand('%:t:r') . '.vader' |
|
if filereadable(l:check) |
|
let l:real = l:check |
|
endif |
|
endif |
|
|
|
"or else test for one in the same dir |
|
let l:check = expand('%:t:r') . '.vader' |
|
if l:real == '' && filereadable(l:check) |
|
let l:real = l:check |
|
endif |
|
|
|
"if a vader file was found, run the test |
|
if l:real != '' |
|
silent source % |
|
silent exec 'Vader' l:real |
|
endif |
|
endif |
|
endfun |
|
|
|
" |
|
" Settings Functions |
|
" |
|
|
|
fun! s:settings_asm() |
|
"settings |
|
setlocal foldmethod=syntax |
|
"mappings |
|
nnoremap <buffer> -- A<Tab>;<Space> |
|
nnoremap <buffer> -_ O;<Space> |
|
endfun |
|
|
|
fun! s:settings_c() |
|
"settings |
|
setlocal foldmethod=syntax |
|
setlocal shiftwidth=4 |
|
setlocal tabstop=4 |
|
setlocal softtabstop=4 |
|
setlocal cinoptions=:0,(s,m1,U1 |
|
"mappings |
|
nnoremap <buffer> -_ O//<Space> |
|
nnoremap <buffer> -- O<Space>*/<Esc>hhi/*<Space> |
|
"note: weird reverse order to avoid opening folds |
|
inoremap <buffer> {<CR> }<Esc>i{<CR><Esc>O |
|
inoremap <buffer> (<CR> )<Esc>i(<CR><Esc>O |
|
inoremap <buffer> [<CR> ]<Esc>i[<CR><Esc>O |
|
endfun |
|
|
|
fun! s:settings_coffee() |
|
call <SID>settings_script2() |
|
setlocal foldmethod=syntax |
|
nnoremap <buffer> -_ O###<CR><C-u>###<Esc>O<C-u> |
|
endfun |
|
|
|
fun! s:settings_conf() |
|
call <SID>settings_script() |
|
setlocal expandtab |
|
endfun |
|
|
|
fun! s:settings_coq() |
|
call <SID>settings_ocaml() |
|
nnoremap <buffer> <Leader>x :$CoqToLine<CR> |
|
nnoremap <buffer> <Leader>z :CoqToTop<CR> |
|
endfun |
|
|
|
fun! s:settings_crystal() |
|
call <SID>settings_script2() |
|
setlocal expandtab |
|
endfun |
|
|
|
fun! s:settings_css() |
|
call <SID>settings_c() |
|
"settings |
|
setlocal shiftwidth=2 |
|
setlocal tabstop=2 |
|
setlocal softtabstop=2 |
|
"mappings |
|
endfun |
|
|
|
fun! s:settings_elixir() |
|
call <SID>settings_script2() |
|
inoremap <buffer> do<CR> end<Esc>hhido<CR><Esc>O |
|
endfun |
|
|
|
fun! s:settings_haskell() |
|
"settings |
|
setlocal shiftwidth=4 |
|
setlocal tabstop=4 |
|
setlocal softtabstop=4 |
|
setlocal expandtab |
|
"mappings |
|
nnoremap <buffer> -- O--<Space> |
|
endfun |
|
|
|
fun! s:settings_html() |
|
"settings |
|
setlocal foldmethod=syntax |
|
setlocal shiftwidth=4 |
|
setlocal tabstop=4 |
|
setlocal softtabstop=4 |
|
"mappings |
|
nnoremap <buffer> -- O<Space>--><Esc>3hi<!--<Space> |
|
endfun |
|
|
|
fun! s:settings_ia64() |
|
"settings |
|
setlocal foldmethod=syntax |
|
"mappings |
|
nnoremap <buffer> -- A<Space>*/<Esc>hhi<Tab>/*<Space> |
|
nnoremap <buffer> -_ O<Space>*/<Esc>hhi/*<Space> |
|
endfun |
|
|
|
fun! s:settings_javascript() |
|
call <SID>settings_c() |
|
"settings |
|
setlocal shiftwidth=2 |
|
setlocal tabstop=2 |
|
setlocal softtabstop=2 |
|
setlocal expandtab |
|
"mappings |
|
endfun |
|
|
|
fun! s:settings_markdown() |
|
"settings |
|
setlocal shiftwidth=4 |
|
setlocal tabstop=4 |
|
setlocal softtabstop=4 |
|
setlocal nojoinspaces |
|
setlocal spell |
|
"mappings |
|
nnoremap <buffer> -- O<Space>--><Esc>3hi<!--<Space> |
|
endfun |
|
|
|
fun! s:settings_mail() |
|
"settings |
|
setlocal spell |
|
setlocal nojoinspaces |
|
"mappings |
|
endfun |
|
|
|
fun! s:settings_matlab() |
|
"settings |
|
setlocal shiftwidth=4 |
|
setlocal tabstop=4 |
|
setlocal softtabstop=4 |
|
"mappings |
|
nnoremap <buffer> -- O%<Space> |
|
endfun |
|
|
|
fun! s:settings_mips() |
|
"settings |
|
setlocal shiftwidth=6 |
|
setlocal tabstop=6 |
|
setlocal softtabstop=6 |
|
"mappings |
|
nnoremap <buffer> -- A<Tab>#<Space> |
|
nnoremap <buffer> -_ O#<Space> |
|
endfun |
|
|
|
fun! s:settings_nim() |
|
call <SID>settings_script() |
|
nnoremap <buffer> -- O<Space>]#<Esc>hhi#[<Space> |
|
endfun |
|
|
|
fun! s:settings_ocaml() |
|
"settings |
|
setlocal shiftwidth=2 |
|
setlocal tabstop=2 |
|
setlocal softtabstop=2 |
|
"mappings |
|
nnoremap <buffer> -- O<Space>*)<Esc>hhi(*<Space> |
|
nnoremap <buffer> -_ A<Space>*)<Esc>hhi<Space>(*<Space> |
|
nnoremap <buffer> __ O<Space>*)<Esc>hhi(**<Space> |
|
endfun |
|
|
|
fun! s:settings_script() |
|
"settings |
|
setlocal shiftwidth=4 |
|
setlocal tabstop=4 |
|
setlocal softtabstop=4 |
|
"mappings |
|
nnoremap <buffer> -- O#<Space> |
|
endfun |
|
|
|
fun! s:settings_script2() |
|
"settings |
|
setlocal shiftwidth=2 |
|
setlocal tabstop=2 |
|
setlocal softtabstop=2 |
|
"mappings |
|
nnoremap <buffer> -- O#<Space> |
|
endfun |
|
|
|
fun! s:settings_perl() |
|
call <SID>settings_script() |
|
inoremap <buffer> {<CR> }<Esc>i{<CR><Esc>O |
|
endfun |
|
|
|
fun! s:settings_rust() |
|
call <SID>settings_c() |
|
nnoremap <buffer> -_ O///<Space> |
|
endfun |
|
|
|
fun! s:settings_shell() |
|
call <SID>settings_script() |
|
inoremap <buffer> {<CR> }<Esc>i{<CR><Esc>O |
|
endfun |
|
|
|
fun! s:settings_tex() |
|
"settings |
|
setlocal noautoindent |
|
setlocal nocindent |
|
setlocal nosmartindent |
|
setlocal nojoinspaces |
|
setlocal shiftwidth=4 |
|
setlocal tabstop=4 |
|
setlocal softtabstop=4 |
|
setlocal spell |
|
"mappings |
|
nnoremap <buffer> -- O%<Space> |
|
nnoremap <buffer> <Leader>c :!latex -output-format=pdf "%"<CR><CR> |
|
nnoremap <buffer> <Leader>C :!latex -output-format=pdf "%"<CR> |
|
nnoremap <buffer> <Leader>x :!xelatex "%"<CR><CR> |
|
nnoremap <buffer> <Leader>X :!xelatex "%"<CR> |
|
nnoremap <buffer> <Leader>b :!biber "%:r"<CR><CR> |
|
endfun |
|
|
|
fun! s:settings_text() |
|
"settings |
|
setlocal noautoindent |
|
setlocal nocindent |
|
setlocal nosmartindent |
|
setlocal nojoinspaces |
|
setlocal shiftwidth=4 |
|
setlocal tabstop=4 |
|
setlocal softtabstop=4 |
|
setlocal spell |
|
"mappings |
|
endfun |
|
|
|
fun! s:settings_vim() |
|
"settings |
|
setlocal shiftwidth=4 |
|
setlocal tabstop=4 |
|
setlocal softtabstop=4 |
|
"mappings |
|
nnoremap <buffer> -- O" |
|
nnoremap <buffer> <Leader>t :call <SID>settings_sub_test_vim()<CR> |
|
endfun |
|
|
|
fun! s:settings_z80() |
|
"settings |
|
setlocal shiftwidth=6 |
|
setlocal tabstop=6 |
|
setlocal softtabstop=6 |
|
"mappings |
|
nnoremap <buffer> -- A<Tab>;<Space> |
|
nnoremap <buffer> -_ O;<Space> |
|
endfun
|
|
|