Add Neovim config
This commit is contained in:
parent
c5ee50f4c6
commit
1b98f91de9
|
@ -0,0 +1,4 @@
|
||||||
|
set runtimepath^=~/.nvim runtimepath+=~/.nvim/after
|
||||||
|
let &packpath=&runtimepath
|
||||||
|
source ~/.nvimrc
|
||||||
|
set undodir=~/.nvim/neovim/undodir/
|
|
@ -0,0 +1,308 @@
|
||||||
|
set nocompatible
|
||||||
|
syntax on
|
||||||
|
let VIMHOME = split(&rtp, ",")[0]
|
||||||
|
let $VIMHOME = VIMHOME
|
||||||
|
|
||||||
|
" vim-plug
|
||||||
|
call plug#begin(VIMHOME."/plugs")
|
||||||
|
" Plug 'Valloric/YouCompleteMe'
|
||||||
|
Plug 'williamboman/nvim-lsp-installer'
|
||||||
|
Plug 'nixprime/cpsm', {'do': './install.sh'}
|
||||||
|
Plug 'kien/ctrlp.vim'
|
||||||
|
Plug 'prabirshrestha/asyncomplete.vim'
|
||||||
|
Plug 'prabirshrestha/vim-lsp'
|
||||||
|
Plug 'prabirshrestha/asyncomplete-lsp.vim'
|
||||||
|
Plug 'ConradIrwin/vim-bracketed-paste'
|
||||||
|
Plug 'NLKNguyen/papercolor-theme'
|
||||||
|
Plug 'Shougo/deoplete.nvim'
|
||||||
|
Plug 'christoomey/vim-tmux-navigator'
|
||||||
|
Plug 'cohama/lexima.vim', {'do': 'sed -i \"s/has(.nvim.) && //\" autoload/lexima/insmode.vim'}
|
||||||
|
Plug 'editorconfig/editorconfig-vim'
|
||||||
|
Plug 'gmarik/Vundle.vim'
|
||||||
|
Plug 'hdima/python-syntax'
|
||||||
|
Plug 'jeetsukumaran/vim-buffergator'
|
||||||
|
Plug 'kristijanhusak/vim-hybrid-material'
|
||||||
|
Plug 'lambdalisue/fern.vim'
|
||||||
|
Plug 'lervag/vimtex'
|
||||||
|
Plug 'neovimhaskell/haskell-vim'
|
||||||
|
Plug 'nvie/vim-flake8'
|
||||||
|
Plug 'octol/vim-cpp-enhanced-highlight'
|
||||||
|
Plug 'pangloss/vim-javascript'
|
||||||
|
Plug 'posva/vim-vue'
|
||||||
|
Plug 'rhysd/vim-grammarous'
|
||||||
|
Plug 'roxma/nvim-yarp'
|
||||||
|
Plug 'ervandew/supertab'
|
||||||
|
Plug 'roxma/vim-hug-neovim-rpc'
|
||||||
|
Plug 'tmux-plugins/vim-tmux'
|
||||||
|
Plug 'tmux-plugins/vim-tmux-focus-events'
|
||||||
|
Plug 'tomtom/tcomment_vim'
|
||||||
|
Plug 'vim-airline/vim-airline'
|
||||||
|
Plug 'vim-airline/vim-airline-themes'
|
||||||
|
Plug 'vim-scripts/indentpython.vim'
|
||||||
|
Plug 'vimwiki/vimwiki'
|
||||||
|
Plug 'neovim/nvim-lspconfig'
|
||||||
|
Plug 'hrsh7th/cmp-nvim-lsp'
|
||||||
|
Plug 'hrsh7th/cmp-buffer'
|
||||||
|
Plug 'hrsh7th/cmp-path'
|
||||||
|
Plug 'hrsh7th/cmp-cmdline'
|
||||||
|
Plug 'hrsh7th/nvim-cmp'
|
||||||
|
Plug 'hrsh7th/cmp-vsnip'
|
||||||
|
Plug 'hrsh7th/vim-vsnip'
|
||||||
|
call plug#end()
|
||||||
|
|
||||||
|
let mapleader=","
|
||||||
|
|
||||||
|
|
||||||
|
:command W w
|
||||||
|
:command Q q
|
||||||
|
:command WQ wq
|
||||||
|
:command Wq wq
|
||||||
|
nnoremap j gj
|
||||||
|
nnoremap k gk
|
||||||
|
nnoremap <C-U> <C-O>
|
||||||
|
nnoremap <C-E> <C-U>
|
||||||
|
|
||||||
|
" don't store .swp files in the file's own directory
|
||||||
|
" neither for .ext~ files
|
||||||
|
set directory=/home/user/.nvim/tmp/
|
||||||
|
set backupdir=/home/user/.nvim/tmp/
|
||||||
|
|
||||||
|
" VimWiki
|
||||||
|
let g:vimwiki_key_mappings = { 'table_mappings': 0 }
|
||||||
|
let g:vimwiki_markdown_link_ext = 1
|
||||||
|
autocmd FileType vimwiki setlocal shiftwidth=2 softtabstop=2 expandtab
|
||||||
|
|
||||||
|
" Autoindent for filetype
|
||||||
|
filetype plugin indent on
|
||||||
|
set autoindent
|
||||||
|
|
||||||
|
set encoding=utf-8
|
||||||
|
set scrolloff=5
|
||||||
|
set sidescrolloff=10
|
||||||
|
|
||||||
|
set completeopt-=preview
|
||||||
|
|
||||||
|
set backspace=indent,eol,start
|
||||||
|
|
||||||
|
" Splits
|
||||||
|
set splitbelow
|
||||||
|
set splitright
|
||||||
|
|
||||||
|
" CtrlP
|
||||||
|
let g:ctrlp_match_func = {'match': 'cpsm#CtrlPMatch'}
|
||||||
|
nnoremap <silent> <C-o> :CtrlPBuffer<CR>
|
||||||
|
let g:cpsm_unicode=1
|
||||||
|
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
|
||||||
|
|
||||||
|
" Unsaved buffer switching
|
||||||
|
set hidden
|
||||||
|
|
||||||
|
" Line numbering
|
||||||
|
set number
|
||||||
|
set numberwidth=4
|
||||||
|
:set mouse=a
|
||||||
|
|
||||||
|
" Allow xterm-key usage inside tmux
|
||||||
|
execute "set <xUp>=\e[1;*A"
|
||||||
|
execute "set <xDown>=\e[1;*B"
|
||||||
|
execute "set <xRight>=\e[1;*C"
|
||||||
|
execute "set <xLeft>=\e[1;*D"
|
||||||
|
|
||||||
|
" Persistent undo
|
||||||
|
set undodir=~/.nvim/undodir/
|
||||||
|
set undofile
|
||||||
|
set undolevels=1000
|
||||||
|
set undoreload=10000
|
||||||
|
|
||||||
|
" Searching
|
||||||
|
set ignorecase
|
||||||
|
set smartcase
|
||||||
|
set incsearch
|
||||||
|
set hlsearch
|
||||||
|
nnoremap <leader><space> :noh<CR>
|
||||||
|
|
||||||
|
" Text wrapping
|
||||||
|
set lbr
|
||||||
|
|
||||||
|
" Vimtex
|
||||||
|
|
||||||
|
let g:tex_flavor = 'latex'
|
||||||
|
|
||||||
|
" Tabs
|
||||||
|
if has("autocmd")
|
||||||
|
filetype plugin indent on
|
||||||
|
autocmd FileType make set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Terminal colors
|
||||||
|
set t_Co=256
|
||||||
|
set background=dark
|
||||||
|
let g:airline_theme="solarized"
|
||||||
|
let g:airline_solarized_bg="dark"
|
||||||
|
|
||||||
|
set tabstop=4
|
||||||
|
set shiftwidth=4
|
||||||
|
set softtabstop=4
|
||||||
|
set expandtab
|
||||||
|
|
||||||
|
" Commenting
|
||||||
|
nnoremap <silent> <leader>c :TComment<CR>
|
||||||
|
nnoremap <silent> <leader>C :TCommentBlock<CR>
|
||||||
|
vnoremap <silent> <leader>c :TCommentInline<CR>
|
||||||
|
vnoremap <silent> <leader>C :TCommentBlock<CR>
|
||||||
|
|
||||||
|
" Tab completion
|
||||||
|
set wildmode=longest,list
|
||||||
|
set wildmenu
|
||||||
|
|
||||||
|
set guifont=Ubuntu\ Mono\ derivative\ Powerline\ 13
|
||||||
|
let g:airline_powerline_fonts = 1
|
||||||
|
set laststatus=2
|
||||||
|
set ttimeoutlen=50
|
||||||
|
|
||||||
|
" Color scheme
|
||||||
|
syntax enable
|
||||||
|
let python_highlight_all=1
|
||||||
|
let g:solarized_termcolors=256
|
||||||
|
colorscheme hybrid_material
|
||||||
|
|
||||||
|
" Remap u to y
|
||||||
|
vnoremap u y
|
||||||
|
|
||||||
|
" Save clipboard on quit
|
||||||
|
autocmd VimLeave * call system("xsel -ib", getreg('+'))
|
||||||
|
|
||||||
|
" Automatically remove trailing spaces
|
||||||
|
let blacklist = ['vimwiki']
|
||||||
|
autocmd BufWritePre * if index(blacklist, &ft) < 0 | :%s/\s\+$//e
|
||||||
|
|
||||||
|
" Use deoplete.
|
||||||
|
autocmd FileType python let g:deoplete#enable_at_startup = 1
|
||||||
|
|
||||||
|
" VPW: set filetype for .py3
|
||||||
|
autocmd BufRead,BufNewFile *.py3 set filetype=python
|
||||||
|
|
||||||
|
" Vue indent
|
||||||
|
autocmd FileType vue setlocal shiftwidth=2 softtabstop=2 expandtab
|
||||||
|
autocmd FileType javascript setlocal shiftwidth=2 softtabstop=2 expandtab
|
||||||
|
autocmd FileType vue syntax sync fromstart
|
||||||
|
|
||||||
|
" Disable shift+k for manual lookup
|
||||||
|
map <S-k> <Nop>
|
||||||
|
|
||||||
|
" Prolog: set filetype for .pl
|
||||||
|
autocmd BufRead,BufNewFile *.pl set filetype=prolog
|
||||||
|
|
||||||
|
" Disable modelines, fix CVE
|
||||||
|
set modelines=0
|
||||||
|
set nomodeline
|
||||||
|
|
||||||
|
" Tab for completion
|
||||||
|
let g:SuperTabContextDefaultCompletionType = "<c-n>"
|
||||||
|
let g:SuperTabDefaultCompletionType = "<c-n>"
|
||||||
|
|
||||||
|
lua <<EOF
|
||||||
|
-- Setup nvim-cmp.
|
||||||
|
local cmp = require'cmp'
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
snippet = {
|
||||||
|
-- REQUIRED - you must specify a snippet engine
|
||||||
|
expand = function(args)
|
||||||
|
vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
|
||||||
|
-- require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
|
||||||
|
-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
|
||||||
|
-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
window = {
|
||||||
|
completion = cmp.config.window.bordered(),
|
||||||
|
documentation = cmp.config.window.bordered(),
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert({
|
||||||
|
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
['<C-Space>'] = cmp.mapping.complete(),
|
||||||
|
['<C-e>'] = cmp.mapping.abort(),
|
||||||
|
['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif vim.fn["vsnip#available"](1) == 1 then
|
||||||
|
feedkey("<Plug>(vsnip-expand-or-jump)", "")
|
||||||
|
else
|
||||||
|
fallback() -- The fallback function sends a already mapped key. In this case, it's probably `<Tab>`.
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
|
||||||
|
['<S-Tab>'] = cmp.mapping(function()
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif vim.fn["vsnip#jumpable"](-1) == 1 then
|
||||||
|
feedkey("<Plug>(vsnip-jump-prev)", "")
|
||||||
|
end
|
||||||
|
end, { "i", "s"}),
|
||||||
|
}),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'vsnip' }, -- For vsnip users.
|
||||||
|
-- { name = 'luasnip' }, -- For luasnip users.
|
||||||
|
-- { name = 'ultisnips' }, -- For ultisnips users.
|
||||||
|
-- { name = 'snippy' }, -- For snippy users.
|
||||||
|
}, {
|
||||||
|
{ name = 'buffer' },
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Set configuration for specific filetype.
|
||||||
|
cmp.setup.filetype('gitcommit', {
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it.
|
||||||
|
}, {
|
||||||
|
{ name = 'buffer' },
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
||||||
|
cmp.setup.cmdline('/', {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = {
|
||||||
|
{ name = 'buffer' }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||||
|
cmp.setup.cmdline(':', {
|
||||||
|
mapping = cmp.mapping.preset.cmdline(),
|
||||||
|
sources = cmp.config.sources({
|
||||||
|
{ name = 'path' }
|
||||||
|
}, {
|
||||||
|
{ name = 'cmdline' }
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Setup lspconfig.
|
||||||
|
local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities())
|
||||||
|
require("nvim-lsp-installer").setup({
|
||||||
|
automatic_installation = true, -- automatically detect which servers to install (based on which servers are set up via lspconfig)
|
||||||
|
})
|
||||||
|
-- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
|
||||||
|
require('lspconfig')['pyright'].setup {
|
||||||
|
capabilities = capabilities
|
||||||
|
}
|
||||||
|
require('lspconfig')['texlab'].setup {
|
||||||
|
capabilities = capabilities
|
||||||
|
}
|
||||||
|
require('lspconfig')['ltex'].setup {
|
||||||
|
capabilities = capabilities
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
" Lanuage server
|
||||||
|
nnoremap <silent> <buffer> gd :lua vim.lsp.buf.definition()<CR>
|
||||||
|
set updatetime=300
|
||||||
|
set signcolumn=number
|
||||||
|
|
||||||
|
nmap <silent> <leader>n :lua vim.lsp.diagnostic.goto_next()<CR>
|
||||||
|
nmap <silent> <leader>p :lua vim.lsp.diagnostic.goto_prev()<CR>
|
||||||
|
nmap <silent> <leader>f :lua vim.lsp.buf.code_action()<CR>
|
17
.vimrc
17
.vimrc
|
@ -6,8 +6,8 @@ let $VIMHOME = VIMHOME
|
||||||
" vim-plug
|
" vim-plug
|
||||||
call plug#begin(VIMHOME."/plugs")
|
call plug#begin(VIMHOME."/plugs")
|
||||||
" Plug 'Valloric/YouCompleteMe'
|
" Plug 'Valloric/YouCompleteMe'
|
||||||
" Plug 'kien/ctrlp.vim'
|
Plug 'nixprime/cpsm', {'do': './install.sh'}
|
||||||
" Plug 'nixprime/cpsm', {'do': './install.sh'}
|
Plug 'kien/ctrlp.vim'
|
||||||
Plug 'prabirshrestha/asyncomplete.vim'
|
Plug 'prabirshrestha/asyncomplete.vim'
|
||||||
Plug 'prabirshrestha/vim-lsp'
|
Plug 'prabirshrestha/vim-lsp'
|
||||||
Plug 'prabirshrestha/asyncomplete-lsp.vim'
|
Plug 'prabirshrestha/asyncomplete-lsp.vim'
|
||||||
|
@ -83,10 +83,10 @@ set splitbelow
|
||||||
set splitright
|
set splitright
|
||||||
|
|
||||||
" CtrlP
|
" CtrlP
|
||||||
" let g:ctrlp_match_func = {'match': 'cpsm#CtrlPMatch'}
|
let g:ctrlp_match_func = {'match': 'cpsm#CtrlPMatch'}
|
||||||
" nnoremap <silent> <C-o> :CtrlPBuffer<CR>
|
nnoremap <silent> <C-o> :CtrlPBuffer<CR>
|
||||||
" let g:cpsm_unicode=1
|
let g:cpsm_unicode=1
|
||||||
" let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
|
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
|
||||||
|
|
||||||
" Unsaved buffer switching
|
" Unsaved buffer switching
|
||||||
set hidden
|
set hidden
|
||||||
|
@ -207,6 +207,8 @@ nmap <silent> <leader>p <Plug>(coc-diagnostic-prev)
|
||||||
nmap <silent> <leader>n <Plug>(coc-diagnostic-next)
|
nmap <silent> <leader>n <Plug>(coc-diagnostic-next)
|
||||||
nmap <silent> <leader>f <Plug>(coc-codeaction-line)
|
nmap <silent> <leader>f <Plug>(coc-codeaction-line)
|
||||||
vmap <silent> <leader>f <Plug>(coc-codeaction-line)
|
vmap <silent> <leader>f <Plug>(coc-codeaction-line)
|
||||||
|
nmap <buffer> gd <plug>(lsp-definition)
|
||||||
|
|
||||||
nnoremap <Leader>p :CocList yank<CR>
|
nnoremap <Leader>p :CocList yank<CR>
|
||||||
vnoremap <Leader>p :CocList yank<CR>
|
vnoremap <Leader>p :CocList yank<CR>
|
||||||
|
|
||||||
|
@ -232,8 +234,6 @@ Ext 'coc-yank'
|
||||||
|
|
||||||
" FZF Preview
|
" FZF Preview
|
||||||
nnoremap <silent> <Leader>/ :<C-u>CocCommand fzf-preview.Lines --add-fzf-arg=--no-sort --add-fzf-arg=--query="'"<CR>
|
nnoremap <silent> <Leader>/ :<C-u>CocCommand fzf-preview.Lines --add-fzf-arg=--no-sort --add-fzf-arg=--query="'"<CR>
|
||||||
nnoremap <silent> <C-p> :<C-u>CocCommand fzf-preview.FromResources project_mru git buffer<CR>
|
|
||||||
nnoremap <silent> <C-o> :<C-u>CocCommand fzf-preview.Buffers<CR>
|
|
||||||
nnoremap <silent> <C-f> :<C-u>CocCommand fzf-preview.ProjectGrepRecall<CR>
|
nnoremap <silent> <C-f> :<C-u>CocCommand fzf-preview.ProjectGrepRecall<CR>
|
||||||
nnoremap <silent> <Leader>d :<C-u>CocCommand fzf-preview.CocCurrentDiagnostics<CR>
|
nnoremap <silent> <Leader>d :<C-u>CocCommand fzf-preview.CocCurrentDiagnostics<CR>
|
||||||
nnoremap <silent> <Leader>d :<C-u>CocCommand fzf-preview.CocCurrentDiagnostics<CR>
|
nnoremap <silent> <Leader>d :<C-u>CocCommand fzf-preview.CocCurrentDiagnostics<CR>
|
||||||
|
@ -255,7 +255,6 @@ function! s:on_lsp_buffer_enabled() abort
|
||||||
setlocal omnifunc=lsp#complete
|
setlocal omnifunc=lsp#complete
|
||||||
setlocal signcolumn=yes
|
setlocal signcolumn=yes
|
||||||
if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif
|
if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif
|
||||||
nmap <buffer> gd <plug>(lsp-definition)
|
|
||||||
nmap <buffer> gs <plug>(lsp-document-symbol-search)
|
nmap <buffer> gs <plug>(lsp-document-symbol-search)
|
||||||
nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
|
nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
|
||||||
nmap <buffer> gr <plug>(lsp-references)
|
nmap <buffer> gr <plug>(lsp-references)
|
||||||
|
|
Loading…
Reference in New Issue