Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save madskjeldgaard/31b92620a3b211729986557d6e285b92 to your computer and use it in GitHub Desktop.
Save madskjeldgaard/31b92620a3b211729986557d6e285b92 to your computer and use it in GitHub Desktop.
vimrc til eirik
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 = 'mail@madskjeldgaard.dk'
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