Created
May 5, 2019 17:35
-
-
Save madskjeldgaard/31b92620a3b211729986557d6e285b92 to your computer and use it in GitHub Desktop.
vimrc til eirik
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set runtimepath^=~/.vim runtimepath+=~/.vim/after | |
let &packpath = &runtimepath | |
source ~/.vimrc | |
call plug#begin() | |
" SuperCollider | |
Plug 'davidgranstrom/scnvim' | |
" Csound | |
" Plug 'luisjure/csound-vim' | |
" Python | |
Plug 'python-mode/python-mode', {'branch': 'develop'} | |
Plug 'deoplete-plugins/deoplete-jedi' | |
Plug 'vim-python/python-syntax' | |
" Tidal | |
Plug 'tidalcycles/vim-tidal' | |
" Ultisnips | |
Plug 'SirVer/ultisnips' | |
" Snippets are separated from the engine. Add this if you want them: | |
Plug 'honza/vim-snippets' | |
" Deoplete | |
Plug 'Shougo/deoplete.nvim' | |
" Auto pairs | |
Plug 'jiangmiao/auto-pairs' | |
" Ctrl p | |
Plug 'kien/ctrlp.vim' | |
" Haskell | |
Plug 'bitc/vim-hdevtools' | |
"Indentline | |
Plug 'vim-scripts/indentLine.vim' | |
" Neoformat | |
Plug 'sbdchd/neoformat' | |
" Nerdtree | |
Plug 'scrooloose/nerdtree' | |
" Supertab | |
Plug 'ervandew/supertab' | |
" Tabular | |
Plug 'godlygeek/tabular' | |
" Autoformat | |
Plug 'Chiel92/vim-autoformat' | |
" Commentary | |
Plug 'tpope/vim-commentary' | |
" Easymotion | |
Plug 'easymotion/vim-easymotion' | |
" Eunuch | |
Plug 'tpope/vim-eunuch' | |
" Prettier | |
Plug 'prettier/vim-prettier' | |
" Slime | |
Plug 'jpalardy/vim-slime' | |
" Smooth scroll | |
Plug 'terryma/vim-smooth-scroll' | |
" Surround | |
Plug 'tpope/vim-surround' | |
" Repeat | |
Plug 'tpope/vim-repeat' | |
" Vim sensible | |
Plug 'tpope/vim-sensible' | |
" Fugitive | |
Plug 'tpope/vim-fugitive' | |
" Highlighted yank | |
Plug 'machakann/vim-highlightedyank' | |
" Lightline | |
Plug 'itchyny/lightline.vim' | |
Plug 'unblevable/quick-scope' | |
" Color schemes | |
Plug 'kaicataldo/material.vim' | |
Plug 'chriskempson/base16-vim' | |
Plug 'sts10/vim-mustard' | |
Plug 'drewtempelmeyer/palenight.vim' | |
" Plug 'ayu-theme/ayu-vim' | |
Plug 'madskjeldgaard/ayu-vim' | |
Plug 'morhetz/gruvbox' | |
Plug 'ewilazarus/preto' | |
" Multi cursor | |
Plug 'terryma/vim-multiple-cursors' | |
call plug#end() | |
""""""""""""""""""""""""""""""" | |
" Settings | |
""""""""""""""""""""""""""""""" | |
let mapleader = "," | |
let maplocalleader="." | |
" set cindent | |
set autoindent | |
set shiftwidth=4 | |
set incsearch | |
set mouse=a | |
set tabstop=4 | |
set expandtab | |
" Don't hide anything | |
set conceallevel=0 | |
" text width | |
" set textwidth=70 | |
syntax enable | |
syntax on | |
filetype plugin indent on | |
set nocompatible " be iMproved, required | |
filetype off " required | |
set relativenumber " show relative line numbers | |
" Author name for notes/snips let g:snips_author = 'Mads Kjeldgaard' | |
let g:snips_contact = '[email protected]' | |
let g:EasyMotion_leader_key = '<Leader>' | |
let g:EasyMotion_smartcase = 1 | |
let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"', '`':'`', '|':'|'} | |
" autoformat on save | |
" au BufWrite * :Autoformat | |
let g:autoformat_autoindent = 0 | |
autocmd FileType supercollider let b:autoformat_autoindent=0 | |
let g:autoformat_retab = 1 | |
let g:autoformat_remove_trailing_spaces = 1 | |
" Reaper development | |
" Run last reascript action | |
au filetype lua nnoremap <c-e> :silent execute '! oscurl localhost:9898 /action 41061'<CR> | |
""""""""""""""""""""""""""""""" | |
" Pandoc | |
""""""""""""""""""""""""""""""" | |
function! g:MDtoPDF() | |
let l:fn_minus_suffix=expand('%:r') | |
let l:fn_out=fn_minus_suffix . '.pdf' | |
execute '! pandoc % -o ' . fn_out | |
endfunction | |
au filetype markdown nnoremap <F5> :execute MDtoPDF()<CR> | |
au filetype markdown nnoremap <F6> :execute '! open %:r.pdf'<CR> | |
au filetype markdown nnoremap <c-e> :execute MDtoPDF()<CR> | |
au filetype markdown nnoremap <leader>o :execute '! open %:r.pdf'<CR> | |
""""""""""""""""""""""""""""""" | |
" GENERAL REMAPPINGS | |
""""""""""""""""""""""""""""""" | |
" Reload vimrc | |
nnoremap <leader>rv :source $MYVIMRC<CR> | |
" Open tmux config file in new tab | |
nnoremap <leader>at :tabnew ~/.tmux.conf<CR> | |
" open .vimrc in a new tab | |
nnoremap <leader>av :tabnew $MYVIMRC<CR> | |
" open .bash_profile in a new tab | |
nnoremap <leader>ab :tabnew ~/.bash_profile<CR> | |
" Reload bash_profile | |
nnoremap <leader>rb :! source ~/.bash_profile<CR> | |
" Find and delete next whitespace | |
nnoremap d<space> /\s<cr>x | |
nnoremap f<space> /\s<cr> | |
" open SuperCollider startup in new file | |
nnoremap <leader>as :tabnew ~/Library/Application Support/SuperCollider/startup.scd<CR> | |
" Remap left/right arrow keys to browse through tabs | |
no <left> :tabprevious <CR> | |
no <right> :tabnext <CR> | |
no <c-tab> :tabnext <CR> | |
no <up> { | |
no <down> } | |
" Slime | |
" let g:slime_default_config = {"sessionname": "nvim", "socket_name": "default", "target_pane": ":.2"} | |
"""""""""""""""""""""""""""""" | |
" NERDTREE | |
""""""""""""""""""""""""""""""" | |
map <leader>n :NERDTreeToggle<CR> | |
nmap <space> :NERDTreeToggle<CR> | |
""""""""""""""""""""""""""""""" | |
" Tabularize | |
""""""""""""""""""""""""""""""" | |
" = | |
nmap <leader>t= :Tab /=<CR> | |
vmap <leader>t= :Tab /=<CR> | |
" : | |
nmap <leader>t: :Tab /:\zs<CR> | |
vmap <leader>t: :Tab /:\zs<CR> | |
" | | |
" nmap <leader>t| :Tab /|<CR> | |
" vmap <leader>t| :Tab /|<CR> | |
""""""""""""""""""""""""""""""" | |
" SuperCollider stuff | |
""""""""""""""""""""""""""""""" | |
" vertical 'v' or horizontal 'h' split | |
let g:scnvim_postwin_orientation = 'v' | |
" position of the post window 'right' or 'left' | |
let g:scnvim_postwin_direction = 'right' | |
" default is half the terminal size for vertical and a third for horizontal | |
let g:scnvim_postwin_size = 50 | |
" automatically open post window on a SuperCollider error | |
let g:scnvim_postwin_auto_toggle = 1 | |
" duration of the highlight | |
let g:scnvim_eval_flash_duration = 100 | |
" number of flashes. A value of 0 disables this feature. | |
let g:scnvim_eval_flash_repeats = 5 | |
" set this variable if you don't want the "echo args" feature | |
let g:scnvim_echo_args = 0 | |
" UDP port for (remote) python plugin | |
let g:scnvim_udp_port = 9670 | |
" configure the color | |
highlight SCNvimEval guifg=black guibg=white ctermfg=black ctermbg=white | |
" create a custom status line for supercollider buffers | |
function! s:set_sclang_statusline() | |
setlocal stl= | |
setlocal stl+=%f | |
setlocal stl+=%= | |
setlocal stl+=%(%l,%c%) | |
setlocal stl+=\ \| | |
setlocal stl+=%18.18{scnvim#statusline#server_status()} | |
endfunction | |
augroup scnvim_stl | |
autocmd! | |
autocmd FileType supercollider call <SID>set_sclang_statusline() | |
augroup END | |
" Mappings | |
" Choose in device | |
au filetype supercollider nnoremap <leader><F1> :call scnvim#sclang#send('~chooseInDev.value(0)')<CR> | |
au filetype supercollider nnoremap <leader><F2> :call scnvim#sclang#send('~chooseInDev.value(1)')<CR> | |
au filetype supercollider nnoremap <leader><F3> :call scnvim#sclang#send('~chooseInDev.value(2)')<CR> | |
au filetype supercollider nnoremap <leader><F4> :call scnvim#sclang#send('~chooseInDev.value(3)')<CR> | |
au filetype supercollider nnoremap <leader><F5> :call scnvim#sclang#send('~chooseInDev.value(4)')<CR> | |
au filetype supercollider nnoremap <leader><F6> :call scnvim#sclang#send('~chooseInDev.value(5)')<CR> | |
au filetype supercollider nnoremap <leader><F7> :call scnvim#sclang#send('~chooseInDev.value(6)')<CR> | |
au filetype supercollider nnoremap <leader><F8> :call scnvim#sclang#send('~chooseInDev.value(7)')<CR> | |
au filetype supercollider nnoremap <leader><F9> :call scnvim#sclang#send('~chooseInDev.value(8)')<CR> | |
au filetype supercollider nnoremap <leader><F10> :call scnvim#sclang#send('~chooseInDev.value(9)')<CR> | |
au filetype supercollider nnoremap <leader><F11> :call scnvim#sclang#send('~chooseInDev.value(10)')<CR> | |
au filetype supercollider nnoremap <leader><F12> :call scnvim#sclang#send('~chooseInDev.value(11)')<CR> | |
" Choose out device | |
au filetype supercollider nnoremap <localleader><F1> :call scnvim#sclang#send('~chooseOutDev.value(0)')<CR> | |
au filetype supercollider nnoremap <localleader><F2> :call scnvim#sclang#send('~chooseOutDev.value(1)')<CR> | |
au filetype supercollider nnoremap <localleader><F3> :call scnvim#sclang#send('~chooseOutDev.value(2)')<CR> | |
au filetype supercollider nnoremap <localleader><F4> :call scnvim#sclang#send('~chooseOutDev.value(3)')<CR> | |
au filetype supercollider nnoremap <localleader><F5> :call scnvim#sclang#send('~chooseOutDev.value(4)')<CR> | |
au filetype supercollider nnoremap <localleader><F6> :call scnvim#sclang#send('~chooseOutDev.value(5)')<CR> | |
au filetype supercollider nnoremap <localleader><F7> :call scnvim#sclang#send('~chooseOutDev.value(6)')<CR> | |
au filetype supercollider nnoremap <localleader><F8> :call scnvim#sclang#send('~chooseOutDev.value(7)')<CR> | |
au filetype supercollider nnoremap <localleader><F9> :call scnvim#sclang#send('~chooseOutDev.value(8)')<CR> | |
au filetype supercollider nnoremap <localleader><F10> :call scnvim#sclang#send('~chooseOutDev.value(9)')<CR> | |
au filetype supercollider nnoremap <localleader><F11> :call scnvim#sclang#send('~chooseOutDev.value(10)')<CR> | |
au filetype supercollider nnoremap <localleader><F12> :call scnvim#sclang#send('~chooseOutDev.value(11)')<CR> | |
" Record buffers | |
au filetype supercollider nnoremap <F16> :call scnvim#sclang#send_silent('~keyBufRout.value(0)')<CR> | |
au filetype supercollider nnoremap <F17> :call scnvim#sclang#send_silent('~keyBufRout.value(1)')<CR> | |
au filetype supercollider nnoremap <F18> :call scnvim#sclang#send_silent('~keyBufRout.value(2)')<CR> | |
au filetype supercollider nnoremap <F19> :call scnvim#sclang#send_silent('~keyBufRout.value(3)')<CR> | |
au filetype supercollider nnoremap <leader><F16> :call scnvim#sclang#send_silent('~keyBufRout.value(4)')<CR> | |
au filetype supercollider nnoremap <leader><F17> :call scnvim#sclang#send_silent('~keyBufRout.value(5)')<CR> | |
au filetype supercollider nnoremap <leader><C-F18> :call scnvim#sclang#send_silent('~keyBufRout.value(6)')<CR> | |
au filetype supercollider nnoremap <leader><C-F19> :call scnvim#sclang#send_silent('~keyBufRout.value(7)')<CR> | |
au filetype supercollider nnoremap <k1> :call scnvim#sclang#send_silent('"numpad 1 m8!".postln')<CR> | |
" Start SCNvim | |
au filetype supercollider nnoremap <F1> :SCNvimStart<CR> | |
" SCNvim Statusline | |
au filetype supercollider nnoremap <F2> :SCNvimStatusLine<CR> | |
" SCNvim tags recompile | |
au filetype supercollider nnoremap <F3> :SCNvimTags<CR> | |
" Clear post window | |
au filetype supercollider nmap <F4> <Plug>(scnvim-postwindow-clear) | |
" Hard stop | |
au filetype supercollider nmap <F12> <Plug>(scnvim-hard-stop) | |
" Echo args | |
" au filetype supercollider nnoremap <buffer> ; :call scnvim#util#echo_args()<CR> | |
" Recompile<CR> | |
au filetype supercollider nnoremap <leader>sk :SCNvimRecompile<CR> | |
" Regenerate Ctags | |
au filetype supercollider nnoremap <buffer> <leader>rt :SCNvimTags<CR> | |
" Boot server | |
au filetype supercollider nnoremap <buffer> <leader>b :call scnvim#sclang#send_silent('Server.local.boot')<CR> | |
" Look up implementation for class under cursor | |
au filetype supercollider nnoremap <buffer> <leader>si g] | |
au filetype supercollider nnoremap <buffer> <leader>rt :SCNvimTags<CR> | |
" Statusline | |
au fileType supercollider call <SID>set_sclang_statusline() | |
" Formatting | |
function! g:SCFormatting() | |
" Search and replace: Make sure there's a space around = | |
:%s/\s*=\ze\S\|\S\zs=\s*\|\S\zs=\ze\S/ = /g | |
:%s/\s\zs=\s=\ze\s/==/g " fix spaced = = | |
" Search and replace: Make sure there's a space around + | |
:%s/\s*+\ze\S\|\S\zs+\s*\|\S\zs+\ze\S/ + /g | |
:%s/\s\zs+\s+\ze\s/++/g " fix spaced + + | |
" Search and replace: Make sure there's a space around - | |
:%s/\s*-\ze\S\|\S\zs-\s*\|\S\zs-\ze\S/ - /g | |
" Search and replace: Make sure there's a space around * | |
" Doesn't always work | |
:%s/\V\s\**\ze\S\|\S\zs*\s\*\|\S\zs*\ze\S/ * /g | |
" Search and replace: Make sure there's a space around / | |
" Doesn't always work | |
" :%s/\V\s\*\/\ze\S\|\S\zs\/\s\*\|\S\zs\/\ze\S/ \/ /g | |
" :%s/\/\s\// \/\//g " Fix / / | |
:%s/\/\s\*/\/*/g " Fix / * | |
:%s/\s\=\*\s\//\*\//g " Fix * / | |
" Space after comma | |
:%s/,\ze\S\|\s*,\s*\|\s*,\ze\S*/, /g | |
" Space around .. | |
:%s/\S*\zs\s*\.\.\s*\ze\S*/ .. /g | |
" remove Blank space at end of line | |
:%s/\V\s\*\$//g | |
" Blank space before and after {} | |
:%s/{\zs\ze\S\|\S\zs\ze}/ /g "{} | |
:%s/(\zs\ze\S\|\S\zs\ze)/ /g "() | |
endfunction | |
au filetype supercollider nmap <F5> :silent! call g:SCFormatting()<CR> | |
""""""""""""""""""""""""""""""" | |
" Lightline | |
""""""""""""""""""""""""""""""" | |
" lightline.vim example | |
let g:lightline = {} | |
let g:lightline.component_function = { | |
\ 'server_status': 'scnvim#statusline#server_status', | |
\ } | |
function! s:set_sclang_lightline_stl() | |
let g:lightline.active = { | |
\ 'left': [ [ 'mode', 'paste' ], | |
\ [ 'readonly', 'filename', 'modified' ] ], | |
\ 'right': [ [ 'lineinfo' ], | |
\ [ 'percent' ], | |
\ [ 'server_status'] ] | |
\ } | |
endfunction | |
"""""""""""""""""""""""""""""" | |
" Colors | |
""""""""""""""""""""""""""""""" | |
let base16colorspace=256 " Access colors present in 256 colorspace | |
" let g:base16_shell_path=base16-builder/output/shell/ | |
" enable true color for nvim | |
if has('nvim') | |
set inccommand=nosplit " preview changes (:s/) incrementally | |
set termguicolors | |
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" | |
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" | |
else | |
" put all swap files in one place | |
" neovim already does this by default, ~/.local/share/nvim/swap | |
set directory^=$HOME/.vim/.swap// | |
set ttyfast " assume fast terminal connection | |
endif | |
" set background=dark | |
set t_Co=256 | |
colorscheme gruvbox | |
" Performance goth | |
" colorscheme base16-grayscale-dark | |
" Echo the highlighting group (for color schemes) under hte cursor | |
map <F10> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' | |
\ . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" | |
\ . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR> | |
"""""""""""""""""""""""""""""" | |
" Ignore | |
""""""""""""""""""""""""""""""" | |
set wildignore+=*\\tmp\\*,*.swp,*.swo,*.zip,.git,.cabal-sandbox | |
set wildignore+=*.jpg,*.png,*.gif,*.bmp,*.a,*.o,*.tiff,*.nef | |
set wildignore+=*.mp4,*.mkv,*.avi,*.srt | |
""""""""""""""""""""""""""""""" | |
" Performance | |
""""""""""""""""""""""""""""""" | |
" avoid menu.vim (saves ~100ms) | |
let g:did_install_default_menus = 1 | |
let g:did_install_syntax_menu = 1 | |
""""""""""""""""""""""""""""""" | |
" Ctrl P | |
""""""""""""""""""""""""""""""" | |
let g:ctrlp_map = '<c-p>' | |
let g:ctrlp_cmd = 'CtrlPMixed' | |
" let g:ctrlp_working_path_mode = 'car' | |
""""""""""""""""""""""""""""""" | |
" Deoplete | |
""""""""""""""""""""""""""""""" | |
let g:deoplete#enable_at_startup = 1 | |
call deoplete#custom#option('smart_case', v:true) | |
" <CR>: close popup and save indent. | |
inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> | |
function! s:my_cr_function() abort | |
return deoplete#close_popup() . "\<CR>" | |
endfunction | |
""""""""""""""""""""""""""""""" | |
" Snippets | |
""""""""""""""""""""""""""""""" | |
" Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe. | |
let g:UltiSnipsExpandTrigger="<tab>" | |
let g:UltiSnipsJumpForwardTrigger="<tab>" | |
let g:UltiSnipsJumpBackwardTrigger="<c-tab>" | |
let g:UltiSnipsSnippetDirectories = ['UltiSnips', 'scnvim-data', 'ultisnipsss'] | |
noremap <C-k1> echo("hello") | |
""""""""""""""""""""""""""""""" | |
" Folding | |
""""""""""""""""""""""""""""""" | |
" if has('folding') | |
" if has('windows') | |
" let &fillchars='vert: ' " less cluttered vertical window separators | |
" endif | |
" set foldmethod=indent " not as cool as syntax, but faster | |
" set foldlevelstart=99 " start unfolded | |
" endif | |
augroup myformatting | |
autocmd! | |
" autocmd filetype markdown InsertLeave * normal gwap<CR> | |
" autocmd filetype markdown BufWrite * normal gwap<CR> | |
augroup END | |
""""""""""""""""""""""""""""""" | |
" Python | |
""""""""""""""""""""""""""""""" | |
" Python3 | |
let g:pymode_python = 'python3' | |
" Run file Python | |
let g:pymode_run_bind = '<C-e>' | |
" Docs open Python | |
let g:pymode_rope_show_doc_bind = '<S-k>' | |
let g:python3_host_prog='/usr/local/bin/python3' | |
" Automatic Lint before writing buffer to file | |
au BufWritePre *.py :PymodeLintAuto |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment