add neovim configuration
This commit is contained in:
parent
bd91683510
commit
357c0aab13
137
init.vim
Normal file
137
init.vim
Normal file
@ -0,0 +1,137 @@
|
||||
"" Based on ensimag vim config file version 1.0.2
|
||||
"" this file is intended for vim 8.
|
||||
"" before using it on your machine however you will need to:
|
||||
"" - install plug with :
|
||||
"" curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
||||
"" (see https://github.com/junegunn/vim-plug)
|
||||
"" - install the languageserver server for each language you indend to use :
|
||||
"" * pyls for python (see https://github.com/palantir/python-language-server)
|
||||
"" * rls for rust (see https://github.com/rust-lang-nursery/rls)
|
||||
"" * clangd for c
|
||||
"" - you need to install jedi for python auto-completion
|
||||
"" - install some font with powerline symbols for eye candy and icons
|
||||
"" (see https://github.com/powerline/fonts)
|
||||
"" - change plugin directory to ~/.local/share/nvim/plugged
|
||||
|
||||
"" after that copy this file as your ~/.vimrc and execute :PlugInstall
|
||||
|
||||
set nocompatible
|
||||
filetype off
|
||||
|
||||
call plug#begin('~/.local/share/nvim/plugged') " on your own machine
|
||||
|
||||
" not needed as neovim alreay has (better ?) sane defaults
|
||||
"Plug 'tpope/vim-sensible' " sane defaults
|
||||
|
||||
" eye candy
|
||||
Plug 'vim-airline/vim-airline' " status bar (needs special fonts)
|
||||
Plug 'vim-airline/vim-airline-themes'
|
||||
Plug 'morhetz/gruvbox' " very nice and soft color theme
|
||||
Plug 'ryanoasis/vim-devicons' " various symbols (linux, rust, python, ...)
|
||||
|
||||
" essential plugins
|
||||
" see for example https://github.com/autozimu/LanguageClient-neovim/issues/35#issuecomment-288731665
|
||||
"Plug 'maralla/completor.vim' " auto-complete
|
||||
Plug 'autozimu/LanguageClient-neovim', {
|
||||
\ 'branch': 'next',
|
||||
\ 'do': 'bash install.sh',
|
||||
\ } " as of july 2018 this branch is needed for vim8
|
||||
Plug 'tbodt/deoplete-tabnine', {
|
||||
\ 'do': './install.sh',
|
||||
\ } " auto-complete contextually
|
||||
|
||||
" rust
|
||||
Plug 'rust-lang/rust.vim' " syntax highlighting
|
||||
Plug 'mattn/webapi-vim' " used for rust playpen
|
||||
|
||||
|
||||
" not essential
|
||||
Plug 'tpope/vim-fugitive' " git
|
||||
Plug 'scrooloose/nerdtree' " browse files tree
|
||||
" Plug 'junegunn/fzf' " fuzzy files finding
|
||||
|
||||
" snippets allow to easily 'fill' common patterns
|
||||
Plug 'SirVer/ultisnips'
|
||||
Plug 'honza/vim-snippets'
|
||||
|
||||
call plug#end()
|
||||
|
||||
filetype plugin indent on
|
||||
|
||||
" configure maralla/completor to use tab
|
||||
" other configurations are possible (see website)
|
||||
"inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
|
||||
"inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
|
||||
"inoremap <expr> <cr> pumvisible() ? "\<C-y>\<cr>" : "\<cr>"
|
||||
|
||||
" ultisnips default bindings compete with completor's tab
|
||||
" so we need to remap them
|
||||
let g:UltiSnipsExpandTrigger="<c-t>"
|
||||
let g:UltiSnipsJumpForwardTrigger="<c-b>"
|
||||
let g:UltiSnipsJumpBackwardTrigger="<c-z>"
|
||||
|
||||
" airline :
|
||||
" for terminology you will need either to export TERM='xterm-256color'
|
||||
" or run it with '-2' option
|
||||
let g:airline_powerline_fonts = 1
|
||||
set laststatus=2
|
||||
au VimEnter * exec 'AirlineTheme hybrid'
|
||||
|
||||
set encoding=utf-8
|
||||
|
||||
syntax on
|
||||
|
||||
colorscheme gruvbox
|
||||
set background=dark
|
||||
set number relativenumber
|
||||
|
||||
" see https://jeffkreeftmeijer.com/vim-number/
|
||||
:augroup numbertoggle
|
||||
: autocmd!
|
||||
: autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif
|
||||
: autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif
|
||||
:augroup END
|
||||
|
||||
|
||||
let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree
|
||||
|
||||
" tabs
|
||||
set tabstop=4
|
||||
set shiftwidth=4
|
||||
set smartindent
|
||||
|
||||
" highlight trailing whitespace
|
||||
highlight ExtraWhitespace ctermbg=red guibg=red
|
||||
match ExtraWhitespace /\s\+\%#\@<!$/
|
||||
|
||||
" some more rust
|
||||
let g:LanguageClient_loadSettings = 1 " this enables you to have per-projects languageserver settings in .vim/settings.json
|
||||
let g:rustfmt_autosave = 1
|
||||
let g:rust_conceal = 1
|
||||
set hidden
|
||||
|
||||
" I don't really like to use this but if you prefer this kind of symbol you
|
||||
" can uncomment this.
|
||||
"au BufEnter,BufNewFile,BufRead *.rs syntax match rustEquality "==\ze[^>]" conceal cchar=≟ " Char "question equal to" from unicode: [c-v]U225F
|
||||
"au BufEnter,BufNewFile,BufRead *.rs syntax match rustInequality "!=\ze[^>]" conceal cchar=≠ " Char "not equal to" from unicode: [c-v]U2260
|
||||
|
||||
" let's autoindent c files
|
||||
au BufWrite *.c call LanguageClient#textDocument_formatting()
|
||||
|
||||
" run language server for python, rust and c
|
||||
let g:LanguageClient_autoStart = 1
|
||||
let g:LanguageClient_serverCommands = {
|
||||
\ 'python': ['pyls'],
|
||||
\ 'rust': ['rustup', 'run', 'stable', 'rls'],
|
||||
\ 'javascript': ['javascript-typescript-stdio'],
|
||||
\ 'go': ['go-langserver'],
|
||||
\ 'c' : ['clangd']
|
||||
\ }
|
||||
|
||||
" keep the cursor "centered" vertically
|
||||
set scrolloff=5
|
||||
|
||||
" use rg instead of grep. Comment this if you ripgrep is not installed.
|
||||
set grepprg=rg\ --vimgrep
|
||||
set grepformat=%f:%l:%c:%m
|
||||
|
Loading…
Reference in New Issue
Block a user