Updated neovim config
This commit is contained in:
parent
e708f886ba
commit
7882f100e0
1 changed files with 348 additions and 0 deletions
348
init.vim
Normal file
348
init.vim
Normal file
|
@ -0,0 +1,348 @@
|
|||
call plug#begin('~/.config/nvim/plugged')
|
||||
Plug 'ElmCast/elm-vim', {'for' : 'elm'}
|
||||
Plug 'HerringtonDarkholme/yats', {'for' : 'typescript'}
|
||||
Plug 'Quramy/tsuquyomi', {'for' : 'typescript'}
|
||||
Plug 'Quramy/vim-js-pretty-template', {'for' : 'javascript'}
|
||||
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
|
||||
Plug 'Shougo/neosnippet'
|
||||
Plug 'Shougo/neosnippet-snippets'
|
||||
Plug 'Shougo/vimproc.vim', {'do' : 'make'}
|
||||
Plug 'Twinside/vim-hoogle', {'for' : 'haskell'}
|
||||
Plug 'bitterjug/vim-tagbar-ctags-elm', {'for' : 'elm'}
|
||||
Plug 'bling/vim-bufferline'
|
||||
Plug 'cespare/vim-toml', {'for' : 'toml'}
|
||||
Plug 'chrisbra/Colorizer'
|
||||
Plug 'chrisbra/Colorizer'
|
||||
Plug 'chrisbra/improvedft'
|
||||
Plug 'easymotion/vim-easymotion'
|
||||
Plug 'elixir-lang/vim-elixir', {'for' : 'elixir'}
|
||||
Plug 'fmoralesc/vim-tutor-mode', {'on' : 'Tutor'}
|
||||
Plug 'godlygeek/tabular'
|
||||
Plug 'haya14busa/incsearch-easymotion.vim'
|
||||
Plug 'haya14busa/incsearch-fuzzy.vim'
|
||||
Plug 'haya14busa/incsearch.vim'
|
||||
Plug 'itchyny/lightline.vim'
|
||||
Plug 'janko-m/vim-test'
|
||||
Plug 'jason0x43/vim-js-indent', {'for' : 'javascript'}
|
||||
Plug 'jceb/vim-orgmode'
|
||||
Plug 'jiangmiao/auto-pairs'
|
||||
Plug 'kassio/neoterm'
|
||||
Plug 'majutsushi/tagbar', {'on' : 'Tagbar'}
|
||||
Plug 'mhartington/deoplete-typescript', {'for' : 'typescript'}
|
||||
Plug 'mhinz/vim-startify'
|
||||
Plug 'mkasa/lushtags', {'for' : 'haskell'}
|
||||
Plug 'nathanaelkane/vim-indent-guides'
|
||||
Plug 'neomake/neomake'
|
||||
Plug 'neovimhaskell/haskell-vim', {'for' : 'haskell'}
|
||||
Plug 'ntpeters/vim-better-whitespace'
|
||||
Plug 'othree/yajs.vim'
|
||||
Plug 'pangloss/vim-javascript', {'for' : 'javascript'}
|
||||
Plug 'plasticboy/vim-markdown', {'for' : 'markdown'}
|
||||
Plug 'powerman/vim-plugin-AnsiEsc'
|
||||
Plug 'racer-rust/vim-racer', {'for' : 'rust'}
|
||||
Plug 'reedes/vim-lexical', {'for' : 'markdown'}
|
||||
Plug 'reedes/vim-litecorrect'
|
||||
Plug 'reedes/vim-pencil', {'for' : 'markdown'}
|
||||
Plug 'rust-lang/rust.vim', {'for' : 'rust'}
|
||||
Plug 'scrooloose/nerdcommenter'
|
||||
Plug 'sebastianmarkow/deoplete-rust', {'for' : 'rust'}
|
||||
Plug 'sgur/vim-lazygutter'
|
||||
Plug 'slashmili/alchemist.vim', {'for' : 'elixir'}
|
||||
Plug 'tpope/vim-fugitive'
|
||||
Plug 'tpope/vim-surround'
|
||||
Plug 'xolox/vim-misc'
|
||||
Plug 'xolox/vim-notes'
|
||||
Plug 'junegunn/goyo.vim'
|
||||
Plug 'lervag/vimtex', {'for' : 'tex'}
|
||||
Plug 'tpope/vim-vinegar'
|
||||
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
|
||||
Plug 'junegunn/fzf.vim'
|
||||
Plug 'l04m33/vlime', {'rtp': 'vim/', 'for' : 'lisp'}
|
||||
Plug 'hecal3/vim-leader-guide'
|
||||
call plug#end()
|
||||
|
||||
set exrc
|
||||
set secure
|
||||
|
||||
let g:ft_improved_ignorecase = 1
|
||||
let test#strategy = "neoterm"
|
||||
let g:elm_format_autosave = 1
|
||||
"set tags=tags;/
|
||||
set tags=./tags,tags;$HOME
|
||||
set ttyfast
|
||||
set number
|
||||
set relativenumber
|
||||
set hidden
|
||||
set nocompatible
|
||||
set lazyredraw
|
||||
set path+=**
|
||||
set wildmenu
|
||||
set ignorecase
|
||||
set smartcase
|
||||
set spelllang=en
|
||||
imap fj <Esc>
|
||||
colorscheme shblah
|
||||
|
||||
filetype plugin on
|
||||
let g:deoplete#enable_at_startup = 1
|
||||
if !exists('g:deoplete#omni#input_patterns')
|
||||
let g:deoplete#omni#input_patterns = {}
|
||||
endif
|
||||
au FileType elm set sw=4 sts=4 ts=4
|
||||
let g:deoplete#omni_patterns = {}
|
||||
let g:deoplete#omni_patterns.elm = '\.'
|
||||
let g:deoplete#sources#go#sort_class = ['func', 'type', 'var', 'const']
|
||||
let g:deoplete#sources#go#align_class = 1
|
||||
let g:elm_detailed_complete = 1
|
||||
autocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endif
|
||||
inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"
|
||||
|
||||
let g:bufferline_echo = 0
|
||||
|
||||
autocmd FileType typescript nmap <buffer> <Leader>i : <C-u>echo tsuquyomi#hint()<CR>
|
||||
autocmd FileType elm nmap <buffer> <Leader>i :ElmShowDocs<CR>
|
||||
|
||||
|
||||
set runtimepath+=$HOME/.config/nvim/localplug
|
||||
|
||||
let g:vim_markdown_folding_disabled = 1
|
||||
|
||||
let g:necoghc_enable_detailed_browse = 1
|
||||
|
||||
augroup pencil
|
||||
autocmd!
|
||||
autocmd FileType markdown,mkd call pencil#init()
|
||||
\ | call lexical#init()
|
||||
\ | call litecorrect#init()
|
||||
\ | call textobj#quote#init()
|
||||
\ | call textobj#sentence#init()
|
||||
augroup END
|
||||
|
||||
set clipboard+=unnamedplus
|
||||
|
||||
"Tabs
|
||||
set expandtab
|
||||
set tabstop=2
|
||||
set shiftwidth=2
|
||||
|
||||
autocmd! BufWritePost * Neomake
|
||||
function! neomake#makers#ft#typescript#EnabledMakers()
|
||||
return ['tslint']
|
||||
endfunction
|
||||
|
||||
function! neomake#makers#ft#elixir#credo()
|
||||
return {
|
||||
\ 'exe': 'mix',
|
||||
\ 'args': ['credo', 'list', '--strict', '%:p', '--format=oneline',
|
||||
\ 'readability'],
|
||||
\ 'errorformat': '[%t] %. %f:%l:%c %m'
|
||||
\ }
|
||||
endfunction
|
||||
|
||||
function! neomake#makers#ft#haskell#EnabledMakers()
|
||||
return ['ghcmod', 'hlint']
|
||||
endfunction
|
||||
|
||||
function! neomake#makers#ft#elixir#EnabledMakers()
|
||||
return ['credo']
|
||||
endfunction
|
||||
|
||||
|
||||
"snippets
|
||||
let g:neosnippet#enable_snipmate_compatibility = 1
|
||||
let g:neosnippet#snippets_directory='~/.config/nvim/snippets'
|
||||
let g:AutoPairsMapCR=0
|
||||
let g:deoplete#enable_at_startup = 1
|
||||
let g:deoplete#enable_smart_case = 1
|
||||
imap <expr><TAB> pumvisible() ? "\<C-n>" : neosnippet#expandable_or_jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
|
||||
imap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<S-TAB>"
|
||||
inoremap <expr><CR> pumvisible() ? deoplete#mappings#close_popup() : "\<CR>"
|
||||
|
||||
set autoindent
|
||||
set copyindent
|
||||
set smarttab
|
||||
|
||||
set smartcase
|
||||
|
||||
:imap fd <Esc>
|
||||
|
||||
command! -bang -nargs=* Rg
|
||||
\ call fzf#vim#grep(
|
||||
\ 'rg --column --line-number --hidden --no-heading --color=always --ignore-case -g "!{.git*,node_modules,Wallpapers,,icons,.themes,.fonts,*quicklisp*}" '.shellescape(<q-args>), 1,
|
||||
\ <bang>0 ? fzf#vim#with_preview('up:60%')
|
||||
\ : fzf#vim#with_preview('right:50%:hidden', '?'),
|
||||
\ <bang>0)
|
||||
|
||||
"Leader keys
|
||||
let mapleader="\<Space>"
|
||||
"neoterm
|
||||
noremap <Leader>w :w<CR>
|
||||
noremap <Leader>W :w !sudo tee % > /dev/null
|
||||
noremap <Leader>q :q<CR>
|
||||
noremap <Leader>r :%s/
|
||||
noremap <Leader>f :Rg
|
||||
noremap <leader>t :Tagbar<CR>
|
||||
nmap <silent> <leader>ev :e $MYVIMRC<CR>
|
||||
nmap <silent> <leader>sv :so $MYVIMRC<CR>
|
||||
nnoremap <leader>bb :Buffers<CR>
|
||||
nnoremap <leader>bd :bd<CR>
|
||||
nnoremap <leader>bn :bnext!<CR>
|
||||
nnoremap <leader>bp :bprevious!<CR>
|
||||
vnoremap < <gv
|
||||
vnoremap > >gv
|
||||
nnoremap <leader>v : vsplit<CR>
|
||||
nnoremap <leader>p : Files .<CR>
|
||||
nnoremap <leader>gp : GFiles<CR>
|
||||
nnoremap <leader>ls : setlocal spell<CR>
|
||||
"" Remap split movement
|
||||
nmap <leader>j <c-w>j
|
||||
nmap <leader>k <c-w>k
|
||||
nmap <leader>h <c-w>h
|
||||
nmap <leader>l <c-w>l
|
||||
|
||||
"tagbar
|
||||
let g:tagbar_type_elixir = {
|
||||
\ 'ctagstype' : 'elixir',
|
||||
\ 'kinds' : [
|
||||
\ 'f:functions',
|
||||
\ 'functions:functions',
|
||||
\ 'c:callbacks',
|
||||
\ 'd:delegates',
|
||||
\ 'e:exceptions',
|
||||
\ 'i:implementations',
|
||||
\ 'a:macros',
|
||||
\ 'o:operators',
|
||||
\ 'm:modules',
|
||||
\ 'p:protocols',
|
||||
\ 'r:records'
|
||||
\ ]
|
||||
\ }
|
||||
|
||||
let g:tagbar_type_rust = {
|
||||
\ 'ctagstype' : 'rust',
|
||||
\ 'kinds' : [
|
||||
\'T:types,type definitions',
|
||||
\'f:functions,function definitions',
|
||||
\'g:enum,enumeration names',
|
||||
\'s:structure names',
|
||||
\'m:modules,module names',
|
||||
\'c:consts,static constants',
|
||||
\'t:traits,traits',
|
||||
\'i:impls,trait implementations',
|
||||
\]
|
||||
\}
|
||||
|
||||
|
||||
"incsearch
|
||||
|
||||
map / <Plug>(incsearch-forward)
|
||||
map ? <Plug>(incsearch-backward)
|
||||
map g/ <Plug>(incsearch-stay)
|
||||
|
||||
"Easymotion
|
||||
function! s:config_easyfuzzymotion(...) abort
|
||||
return extend(copy({
|
||||
\ 'converters': [incsearch#config#fuzzyword#converter()],
|
||||
\ 'modules': [incsearch#config#easymotion#module({'overwin': 1})],
|
||||
\ 'keymap': {"\<CR>": '<Over>(easymotion)'},
|
||||
\ 'is_expr': 0,
|
||||
\ 'is_stay': 1
|
||||
\ }), get(a:, 1, {}))
|
||||
endfunction
|
||||
|
||||
noremap <silent><expr> <Space>/ incsearch#go(<SID>config_easyfuzzymotion())
|
||||
|
||||
"Lightline
|
||||
|
||||
let g:lightline = {
|
||||
\ 'colorscheme': 'wombat',
|
||||
\ 'active': {
|
||||
\ 'left': [ [ 'mode', 'paste' ],
|
||||
\ [ 'fugitive', 'filename' ], ['bufferline']]
|
||||
\ },
|
||||
\ 'component_function': {
|
||||
\ 'fugitive': 'LightlineFugitive',
|
||||
\ 'readonly': 'LightlineReadonly',
|
||||
\ 'modified': 'LightlineModified',
|
||||
\ 'filename': 'LightlineFilename',
|
||||
\ 'bufferline': 'MyBufferline'
|
||||
\ },
|
||||
\ 'separator': { 'left': '', 'right': ''},
|
||||
\ 'subseparator': { 'left': '|', 'right': '|' }
|
||||
\ }
|
||||
|
||||
function! LightlineModified()
|
||||
if &filetype == "help"
|
||||
return ""
|
||||
elseif &modified
|
||||
return "+"
|
||||
elseif &modifiable
|
||||
return ""
|
||||
else
|
||||
return ""
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! LightlineReadonly()
|
||||
if &filetype == "help"
|
||||
return ""
|
||||
elseif &readonly
|
||||
return ""
|
||||
else
|
||||
return ""
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! LightlineFugitive()
|
||||
if exists("*fugitive#head")
|
||||
let branch = fugitive#head()
|
||||
return branch !=# '' ? branch : ''
|
||||
endif
|
||||
return ''
|
||||
endfunction
|
||||
|
||||
function! LightlineFilename()
|
||||
let fname = expand('%:t')
|
||||
return fname == '__Tagbar__' ? g:lightline.fname :
|
||||
\ fname =~ 'NERD_tree' ? '' :
|
||||
\ &ft == 'denite' ? denite#get_status_string() :
|
||||
\ ('' != LightlineReadonly() ? LightlineReadonly() . ' ' : '') .
|
||||
\ ('' != fname ? fname : '[No Name]') .
|
||||
\ ('' != LightlineModified() ? ' ' . LightlineModified() : '')
|
||||
endfunction
|
||||
|
||||
function! MyBufferline()
|
||||
call bufferline#refresh_status()
|
||||
let b = g:bufferline_status_info.before
|
||||
let c = g:bufferline_status_info.current
|
||||
let a = g:bufferline_status_info.after
|
||||
let alen = strlen(a)
|
||||
let blen = strlen(b)
|
||||
let clen = strlen(c)
|
||||
let w = winwidth(0) * 4 / 9
|
||||
if w < alen+blen+clen
|
||||
let whalf = (w - strlen(c)) / 2
|
||||
let aa = alen > whalf && blen > whalf ? a[:whalf] : alen + blen < w - clen || alen < whalf ? a : a[:(w - clen - blen)]
|
||||
let bb = alen > whalf && blen > whalf ? b[-(whalf):] : alen + blen < w - clen || blen < whalf ? b : b[-(w - clen - alen):]
|
||||
return (strlen(bb) < strlen(b) ? '...' : '') . bb . c . aa . (strlen(aa) < strlen(a) ? '...' : '')
|
||||
else
|
||||
return b . c . a
|
||||
endif
|
||||
endfunction
|
||||
|
||||
let g:notes_directories = ['~/Dropbox/Write']
|
||||
|
||||
set list
|
||||
set listchars=tab:▸\ ,eol:¬
|
||||
|
||||
set hidden
|
||||
let g:racer_cmd = "~/.cargo/bin/racer"
|
||||
let $RUST_SRC_PATH="~/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/src"
|
||||
let g:racer_experimental_completer = 1
|
||||
|
||||
" Disable haskell-vim omnifunc
|
||||
let g:haskellmode_completion_ghc = 0
|
||||
autocmd FileType haskell setlocal omnifunc=necoghc#omnifunc
|
||||
|
||||
hi! Normal ctermbg=NONE guibg=NONE
|
||||
hi! NonText ctermbg=NONE guibg=NONE
|
Loading…
Reference in a new issue