Skip to content

Instantly share code, notes, and snippets.

@joshbode
Created April 17, 2016 17:39
Show Gist options
  • Save joshbode/445e584d30d0dd1335abc28c86ba7aea to your computer and use it in GitHub Desktop.
Save joshbode/445e584d30d0dd1335abc28c86ba7aea to your computer and use it in GitHub Desktop.
" directories
set browsedir=buffer
set wildignore=*.o,*.pyc
set wildmode=list:longest,list:full
if v:version >=# '704'
set wildignorecase
endif
set autochdir
" persistence
set hidden
set undofile
set viewoptions=cursor,folds,slash,unix
" visual elements
set visualbell
set confirm
set nowrap
set showmatch
set hlsearch
set colorcolumn=80
set background=dark
set number
set relativenumber
" spelling
set spell
set spelllang=en_au
" tab/indentation settings
set expandtab
set smartindent
set shiftwidth=2
set softtabstop=2
set tabstop=4
" misc
set infercase
set shell=/bin/sh
" other gui/terminal fixes
if exists('neovim_dot_app')
" Neovim.app is paradoxically very slow with lazyredraw
set nolazyredraw
set noshowcmd
else
" map keys remapped in terminal
set t_F3=^[[25~
map <F13> <S-CR>
map! <F13> <S-CR>
endif
" plugins
if has('nvim')
call g:plug#begin()
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'
Plug 'Valloric/YouCompleteMe', {'do': './install.py'}
Plug 'ervandew/supertab'
Plug 'benekastah/neomake'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
"Plug 'coot/CRDispatcher' | Plug 'coot/EnchantedVim'
Plug 'danro/rename.vim'
Plug 'bfredl/nvim-ipy'
Plug 'jcf/vim-latex'
Plug 'jalvesaq/Nvim-R'
Plug 'mhinz/vim-grepper'
Plug 'jmcantrell/vim-virtualenv'
Plug 'majutsushi/tagbar'
Plug 'mattn/webapi-vim' | Plug 'mattn/gist-vim'
Plug 'nathanaelkane/vim-indent-guides'
Plug 'Shougo/unite.vim'
Plug 'mbbill/undotree'
Plug 'tpope/vim-sensible'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-speeddating'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-pathogen'
Plug 'vim-pandoc/vim-pandoc' | Plug 'vim-pandoc/vim-pandoc-syntax'
Plug 'vim-scripts/ingo-library' | Plug 'vim-scripts/AdvancedSorters'
Plug 'vim-scripts/restore_view.vim'
Plug 'vim-scripts/tabops'
Plug 'xolox/vim-misc' | Plug 'xolox/vim-session'
Plug 'sheerun/vim-polyglot'
Plug 'vim-scripts/SAS-Syntax'
Plug 'Glench/Vim-Jinja2-Syntax'
Plug 'ntpeters/vim-better-whitespace'
Plug 'luochen1990/rainbow'
Plug 'fatih/vim-go'
Plug 'chriskempson/base16-vim'
Plug 'takac/vim-hardtime'
Plug 'tfnico/vim-gradle'
Plug 'vim-scripts/HJKL'
call g:plug#end()
else
" share nvim storage
set directory=~/.local/share/nvim/swap
set undodir=~/.local/share/nvim/undo
set backupdir=.,~/.local/share/nvim/backup
set viewdir=~/.local/share/nvim/view
" regular vim - fall back to pathogen
set runtimepath+=~/.config/nvim/plugged/vim-pathogen
let g:pathogen_disabled = ['CRDispatcher', 'EnchantedVim', 'Nvim-R', 'nvim-ipy']
if v:version <# '704'
let g:pathogen_disabled += ['vim-pandoc', 'vim-pandoc-syntax', 'YouCompleteMe', 'ultisnips']
endif
execute pathogen#infect('plugged/{}')
endif
" colours
let g:base16colorspace=256
colorscheme base16-chalk
" rainbow
let g:rainbow_active = 0
let g:rainbow_conf = {
\ 'separately': {
\ 'rbrowser': 0,
\ 'tagbar': 0
\ }
\ }
" vim-grepper
let g:grepper = {
\ 'tools': ['git', 'ag', 'grep'],
\ 'next_tool': '<leader>g',
\ 'open': 1, 'switch': 1, 'jump': 0,
\ }
command! -nargs=* -complete=file Ag Grepper! -tool ag -query <args>
nnoremap <leader>ag :Grepper! -tool ag -open -switch
nmap gs <plug>(GrepperOperator)
xmap gs <plug>(GrepperOperator)
" R plugin
let g:R_assign = 0
let g:R_applescript = 1
let g:R_openpdf = 0
if g:R_applescript == 1
let g:R_in_buffer = 0
let g:R_args = [' ']
else
let g:R_in_buffer = 1
let g:R_args = ['--silent', '--no-save']
endif
" indent guides
let g:indent_guides_start_level = 2
let g:indent_guides_guide_size = 1
" session
let g:session_directory = '~/.local/share/nvim/session'
let g:session_autosave = 'yes'
let g:session_autoload = 'yes'
let g:session_autosave_periodic = 5
" ipy
let g:nvim_ipy_perform_mappings = 0
map <silent> <Leader>r <Plug>(IPy-Run)
map <silent> <Leader>? <Plug>(IPy-WordObjInfo)
map <silent> <C-Space> <Plug>(IPy-Complete)
map <silent> <F8> <Plug>(IPy-Interrupt)
" youcompleteme & supertab
let g:ycm_python_binary_path = '/usr/local/bin/python3'
let g:ycm_autoclose_preview_window_after_completion = 1
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
let g:SuperTabDefaultCompletionType = '<C-n>'
inoremap <C-Space> <C-x><C-o>
" ultisnips
let g:UltiSnipsExpandTrigger = '<Tab>'
let g:UltiSnipsJumpForwardTrigger = '<Tab>'
let g:UltiSnipsJumpBackwardTrigger = '<S-Tab>'
let g:UltiSnipsEditSplit = 'vertical'
" automake
let g:neomake_python_pylama_maker = {'args': ['--ignore=E501']}
let g:neomake_python_enabled_makers = ['pylama']
augroup neomaker
autocmd!
autocmd BufWritePost * Neomake
augroup END
" latexsuite
let g:tex_flavor = 'latex'
let g:Tex_DefaultTargetFormat = 'pdf'
let g:Tex_ViewRuleComplete_pdf = 'start SumatraPDF -reuse-instance "$*.pdf"'
let g:Tex_ViewRule_pdf = 'SumatraPDF -reuse-instance "$*.pdf"'
let g:Tex_CompileRule_pdf = 'pdflatex --synctex=-1 -src-specials -interaction=nonstopmode $*'
" undotree
nnoremap <F5> :UndotreeToggle<CR>
" gist
let g:gist_get_multiplefile = 1
let g:gist_detect_filetype = 1
" airline
let g:airline_powerline_fonts = 1
let g:airline#extensions#branch#enabled = 1
let g:airline#extensions#tagbar#enabled = 1
let g:airline#extensions#virtualenv#enabled = 1
let g:airline#extensions#whitespace#enabled = 1
let g:airline#extensions#tabline#enabled = 1
" enchanted vim
let g:VeryMagic = 0
let g:VeryMagicSubstituteNormalise = 1
let g:VeryMagicSubstitute = 1
let g:VeryMagicGlobal = 1
let g:VeryMagicVimGrep = 1
let g:VeryMagicSearchArg = 1
let g:VeryMagicFunction = 1
let g:VeryMagicHelpgrep = 1
let g:VeryMagicRange = 1
let g:VeryMagicEscapeBackslashesInSearchArg = 1
let g:SortEditArgs = 1
nnoremap / /\v
nnoremap ? ?\v
vnoremap / /\v
vnoremap ? ?\v
" highlighting
highlight NonASCII ctermbg=124 guibg=red
augroup highlighting
autocmd!
autocmd Syntax * syntax match NonASCII /[^\x00-\xff]/
augroup END
augroup no_highlighting
autocmd!
autocmd Syntax rbrowser syntax clear NonASCII
autocmd Syntax tagbar syntax clear NonASCII
augroup END
" misc key mappings
" folds
inoremap <F9> <C-O>za
nnoremap <F9> za
onoremap <F9> <C-C>za
vnoremap <F9> zf
" map Enter to insert lines in normal mode
map <CR> o<Esc>
map <S-CR> O<Esc>
" extra copy commands
map Y y$
map \ "+y$
" open files under cursor
map <F8> :vertical wincmd f<CR>
" save as sudo if file already open
cmap w!! w !sudo tee > /dev/null %
" break bad habits
let g:hardtime_default_on = 0
let g:hardtime_ignore_buffer_patterns = ['__Tagbar__', 'undo.*']
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>
vnoremap <Up> <NOP>
vnoremap <Down> <NOP>
vnoremap <Left> <NOP>
vnoremap <Right> <NOP>
" filetypes
" python
augroup filetype_python
autocmd!
autocmd FileType python inoremap # X<BS>#
augroup END
" go
augroup filetype_go
autocmd!
autocmd FileType go setlocal shiftwidth=4
augroup END
" octave
augroup filetype_octave
autocmd!
autocmd Filetype octave
\ setlocal omnifunc=syntaxcomplete#Complete |
\ setlocal shiftwidth=2
augroup END
" R
augroup filetype_r
autocmd!
autocmd Filetype r setlocal shiftwidth=2
autocmd Filetype rbrowser setlocal nospell
augroup END
" functions
"" Remove all text except what matches the current search result
"" The opposite of :%s///g (which clears all instances of the current search).
function! s:ClearAllButMatches()
let l:old = getreg('z')
let l:buffer = join(getline(1, '$'), '\n')
let l:pattern = getreg('/')
call setreg('z', '')
call substitute(l:buffer, l:pattern, '\=setreg("Z", submatch(0), "l")', 'g')
%d _
put z
0d _
call setreg('z', l:old)
endfunction
command! ClearAllButMatches call s:ClearAllButMatches()
"" set +x on file
function! s:SetExecutableBit()
let l:fname = expand('%:p')
checktime
execute 'au FileChangedShell ' . l:fname . ' :echo'
silent !chmod a+x %
checktime
execute 'au! FileChangedShell ' . l:fname
endfunction
command! Xbit call s:SetExecutableBit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment