Skip to content

Instantly share code, notes, and snippets.

@gavlooth
Created July 3, 2018 14:59
Show Gist options
  • Save gavlooth/b156eee77926fd1fc05602f8bcfbf6f9 to your computer and use it in GitHub Desktop.
Save gavlooth/b156eee77926fd1fc05602f8bcfbf6f9 to your computer and use it in GitHub Desktop.
My neovim configuration
let g:python3_host_prog = '/usr/bin/python3.6'
call plug#begin('~/.vim/plugged')
Plug 'JamshedVesuna/vim-markdown-preview'
Plug 'vim-scripts/SpellChecker'
Plug 'ntpeters/vim-better-whitespace'
Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-fugitive'
Plug 'bling/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'justinmk/vim-sneak'
Plug 'haya14busa/incsearch.vim'
Plug 'tomtom/tcomment_vim'
Plug 'bling/vim-bufferline'
Plug 'mattn/emmet-vim'
Plug 'Yggdroot/indentLine'
Plug 'Valloric/MatchTagAlways'
Plug 'vimlab/split-term.vim'
Plug 'lilydjwg/colorizer'
Plug 'roxma/vim-tmux-clipboard'
"Clojure
" Plug 'vim-scripts/paredit.vim'
" Plug 'tpope/vim-dispatch'
Plug 'tpope/vim-fireplace'
Plug 'tpope/vim-classpath'
Plug 'guns/vim-clojure-static'
Plug 'luochen1990/rainbow'
Plug 'guns/vim-clojure-highlight'
Plug 'markwoodhall/vim-sayid'
Plug 'eraserhd/parinfer-rust', {'do':
\ 'cargo build --release'}
"Check
" Plug 'neomake/neomake'
"Plug 'SevereOverfl0w/clojure-check', {'do': './install'}
"Completion
" Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
" Plug 'clojure-vim/async-clj-omni'
"Themes
Plug 'chriskempson/base16-vim'
Plug 'nanotech/jellybeans.vim'
Plug 'vim-scripts/twilight'
Plug 'junegunn/seoul256.vim'
Plug 'mkarmona/colorsbox'
Plug 'joshdick/onedark.vim'
Plug 'jnurmine/Zenburn'
Plug 'romainl/Apprentice'
Plug 'jdsimcoe/abstract.vim'
Plug 'AlessandroYorba/Alduin'
Plug 'tlhr/anderson.vim'
"carp
Plug 'hellerve/carp-vim'
call plug#end()
"Set leader to spacebar
nnoremap <Space> <Nop>
nnoremap Q <Nop>
nnoremap s <Nop>
nnoremap S <Nop>
let mapleader= " "
let maplocalleader = "," "optional local leader
set clipboard+=unnamedplus
"Vim sneak as vim easymotion
"let g:sneak#streak = 1
let g:sneak#label = 1
"Vim sneak one character sneak
map f <Plug>Sneak_f
map F <Plug>Sneak_F
map t <Plug>Sneak_t
map T <Plug>Sneak_T
"Max characters per line
set cc=80
"Font
set guifont=Monaco:h18
set mouse=c
" Space Mono
" Many settings
set autochdir
set expandtab
set hidden
set notimeout
set noswapfile
set nowritebackup
set nowrap
set nofoldenable "disable folding
set lazyredraw
set expandtab " Insert spaces when TAB is pressed.
set ignorecase " Make searching case insensitive
set smartcase " ... unless the query has capital letters.
set noshowmode
set modeline
set ruler "show the ruler line
set background=dark
set cursorline "show cursorline
set backspace=indent,eol,start
set laststatus=2
set clipboard=unnamedplus "default register is clipboard register
set wildmode=longest:full "cmdline full name on tba completion
set wildignorecase "make cmdline completion ignore case
set textwidth=0 " Hard-wrap long lines as you type them.
set scrolloff=8 "Start scrolling when we're 8 lines away from margins
set sidescrolloff=15
set sidescroll=5
set nocompatible
" Use <C-L> to clear the highlighting of :set hlsearch.
if maparg('<C-L>', 'n') ==# ''
nnoremap <silent> <C-L> :nohlsearch<CR><C-L>
endif
" More natural splits
set splitbelow " Horizontal split below current.
set splitright " Vertical split to right of current.
" Set hybrid togle line numbers
set number norelativenumber
"
" augroup numbertoggle
" autocmd!
" autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
" autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
" augroup END
" Undo file
set undofile
set undodir=~/.vim/undo
"Enable completion
filetype plugin on
syntax enable
let g:deoplete#enable_at_startup = 1
let g:deoplete#keyword_patterns = {}
let g:deoplete#enable_smart_case = 1
let g:deoplete#keyword_patterns.clojure = '[\w!$%&*+/:<=>?@\^_~\-\.#]*'
let g:deoplete#complete_method='complete'
"Preview autocomplete
set completeopt-=preview
set completeopt=longest,menuone
"set formatoptions-=tc
"Resize splits
map + <C-w>>
map - <C-w><
map <leader>+ <C-w>+
map <leader>- <C-w>-
"Move throught splits
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
nnoremap <leader>n <C-w>w
"parinfer
nnoremap ,, :ParinferToggleMode<CR>
nnoremap ,<leader> :ParinferOff<CR>
"Formt clj & cljs files
" command! Fmt :w | silent !cljfmt --edn=/home/heefoo/.config/nvim/cljfmt.edn %
" autocmd BufWritePost *.clj* Fmt
" autocmd BufWritePost *.clj* e!
" autocmd BufWritePost *.edn Fmt
" autocmd BufWritePost *.edn e!
" Or if you have Neovim >= 0.1.5
if (has("termguicolors"))
set termguicolors
endif
"Format json
command! Fmjson :%!jq .
let g:ctrlp_open_multiple_files = '1r'
"Airline
let g:airline#extensions#tabline#enabled = 1
let g:base16_airline=1
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#fnamemod = ':t'
if !exists('g:airline_symbols')
let g:airline_symbols = {}
endif
" unicode symbols
let g:airline_left_sep = '»'
let g:airline_left_sep = '▶'
let g:airline_right_sep = '«'
let g:airline_right_sep = '◀'
let g:airline_symbols.linenr = '␊'
let g:airline_symbols.linenr = '␤'
let g:airline_symbols.linenr = '¶'
let g:airline_symbols.branch = '⎇'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = '∥'
let g:airline_symbols.whitespace = 'Ξ'
" airline symbols
let g:airline_left_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_sep = ''
let g:airline_right_alt_sep = ''
let g:airline_symbols.branch = ''
let g:airline_symbols.readonly = ''
let g:airline_symbols.linenr = ''
" AirLine Theme
let g:airline_theme = 'tender'
let g:airline_left_sep='>'
let g:airline_theme='badwolf'
"Set Colorschemes
let g:seoul256_background = 235
" colorscheme apprentice
" colorscheme zenburn
"colorscheme twilight
" colorscheme jellybeans
" colorscheme colorsbox-stnight
" colorscheme seoul256
" colorscheme abstract
" colorscheme anderson
colorscheme alduin
highlight Cursor guifg=white guibg= steelblue
highlight iCursor guifg=white guibg= #DECAB0
highlight CursorLine ctermbg=black guibg=#2B1B17
set guicursor=n-v-c:block-Cursor
set guicursor+=i:ver100-iCursor
set guicursor+=n-v-c:blinkon0
set guicursor+=i:blinkwait10
let g:rainbow_active = 1
let g:clojure_fuzzy_indent=1
let g:clojure_align_multiline_strings = 1
"Control-P
let g:ctrlp_show_hidden = 1
let g:ctrlp_custom_ignore = {
\ 'dir': '\v[\/]\.(git|hg|svn|cljs_rhino_repl|)$',
\ 'file': '\v\.(exe|so|dll|sw.)$',
\ 'link': 'some_bad_symbolic_links',
\ }
map / <Plug>(incsearch-forward)
map ? <Plug>(incsearch-backward)
map g/ <Plug>(incsearch-stay)
set hlsearch
let g:incsearch#auto_nohlsearch = 1
" For regular expressions turn magic on
"set magic
nnoremap / /\v
vnoremap / /\v
cnoremap %s/ %smagic/
cnoremap \>s/ \>smagic/
nnoremap :g/ :g/\v
nnoremap :g// :g//
cnoreabbrev Prl %!perl -pi -e
cnoreabbrev Prl1 !perl -pi -e
"
" " Show matching brackets when text indicator is over them
set showmatch
" How many tenths of a second to blink when matching brackets
set mat=2
"
" No annoying sound on errors
set noerrorbells
set novisualbell
set t_vb=
set tm=500
"
" Use spaces instead of tabs
set expandtab
vmap ,x :!tidy -q -i --show-errors 0<CR>
" 1 tab == 4 spaces
set shiftwidth=2
set tabstop=2
set ai "Auto indent
"Always show the status line
"set laststatus=2
" Syntastic settings
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
set backupdir=~/.tmp/backup,.,/tmp,/tmp
set dir=~/.tmp/swap,.,/tmp,/tmp
augroup filetypedetect
au BufRead,BufNewFile *.mustache set filetype=html
au BufRead,BufNewFile *.dst set filetype=clojure
augroup END
"Source init.vim
map <Leader>rv :source ~/.config/nvim/init.vim<CR>
" "Copy to clipboard
" map <localLeader>c :let @* = expand("%")<CR>:echo "Copied: ".expand("%")<CR>
"Fireplace binding
map <leader>e :Eval<CR>
nmap <leader>c cq
nmap <leader>q cqq
command! Crepl :Piggieback! (do (require 'figwheel-sidecar.repl-api) (figwheel-sidecar.repl-api/cljs-repl))
command! WeaselRepl :Piggieback (weasel.repl.websocket/repl-env :ip "0.0.0.0" :port 9001)
command! Frepl :Piggieback (do (require 'figwheel-sidecar.repl-api) (figwheel-sidecar.repl-api/repl-env))
"Matchtags always filetypes
let g:mta_filetypes = {
\ 'html' : 1,
\ 'xhtml' : 1,
\ 'xml' : 1,
\ 'mustache' : 1,
\ 'jinja' : 1,
\}
autocmd BufEnter * EnableStripWhitespaceOnSave
" autocmd FileType java let b:dispatch = 'javac %'
highlight ExtraWhitespace ctermbg=yellow
highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.\+/
"Spell Checking
set spell spelllang=en_us
hi clear SpellBad
hi SpellBad cterm=underline
" Markdown
"let vim_markdown_preview_github=1
let vim_markdown_preview_hotkey='<C-m>'
"tab completion
inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"
"Paredit remaps
map <leader>l <leader>>
map <leader>h <leader><
map <localLeader>w <leader>w(
map <localLeader>{ <leader>w{
map <localLeader>" <leader>w"
map <localLeader>[ <leader>w[
map <leader>s <leader>S
map <leader>o <leader>O
map <leader><leader>h <leader><Up>
map <leader><leader>l <leader><Down>
"Paredit Vars
let g:paredit_smartjump=1
"NERDTree
nnoremap <F4> :NERDTreeToggle<CR>
"Easier emmet vim
map <leader>, <C-y>,
"Open html files in chrome
nnoremap <F5> :update<Bar>silent !xdg-open %:p &<CR>
"Paste while in terminal with <C-R>
tnoremap <expr> <C-R> '<C-\><C-N>"'.nr2char(getchar()).'pi'
"use escape to switch to normal mode in terminal
tnoremap <esc> <C-\><C-N>
nmap ,se yab<C-w>wpi<CR><esc><C-w>w
nmap ,te yap<C-w>wpi<CR><esc><C-w>w
nmap ,fe ggyG<C-w>wpi<CR><esc><C-w>w
"switching buffers
nnoremap ,n :bnext<CR>
nnoremap ,p :bprevious<CR>
"Colorizer
let g:colorizer_maxlines=1000
"Clojure check
let g:neomake_clojure_enabled_makers = ['check']
"Carp
"let g:syntastic_carp_checkers = ['carp']
"
set virtualedit=all
"User defined functions
"Show parinfer modes in airline
if (exists('g:parinfer_airline_integration') ? g:parinfer_airline_integration : 1)
function! ParinferAirline(...)
if &filetype =~ '.*\(clojure\|scheme\|lisp\|racket\|hy\).*'
let w:airline_section_a = g:airline_section_a . ' %{g:parinfer_mode}'
endif
endfunction
try
call airline#add_statusline_func('ParinferAirline')
catch
endtry
endif
" Use local perl to handle substitution
" Invoke via :S/pattern/replace/flags
function s:Substitute(line1, line2, sstring)
let l:lines=getline(a:line1, a:line2)
" Call perl using utf8. #line etc makes error messages prettier
let l:sysresult=system("perl -e 'use utf8;' -e '#line 1 \"perl substitution\"' -pe ".
\shellescape("s".escape(a:sstring,"%!").";"), l:lines)
if v:shell_error
echo l:sysresult
return
endif
let l:result=split(l:sysresult, "\n", 1) " 1: don't drop blank lines
" delete lines but don't put in register:
execute a:line1.",".a:line2." normal \"_dd"
call append(a:line1-1, l:result) " add lines
call cursor(a:line1, 1) " back to starting place
if a:line1 == a:line2
echom "Substitution on line" a:line1
else
echom "Substitution on lines" a:line1 "to" a:line2
endif
endfunction
command -range -nargs=1 S call s:Substitute(<line1>, <line2>, <q-args>)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment