This repository has been archived on 2021-04-06. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/home/.config/nvim/init.vim

172 lines
4.7 KiB
VimL

" Basic display
set number
set colorcolumn=80
" Persistent undo
set undofile
set undolevels=4096
set undoreload=16384
" Search
set ignorecase
" Hide search when enter is pressed
nnoremap <silent> <CR> :nohlsearch<CR>
" Autoload settings from file
set modeline
" Use system clipboard
set clipboard=unnamedplus
" Support more file encodings
set fileencodings=ucs-bom,utf-8,default,sjis,latin1
" Scroll before reaching top/bottom
set scrolloff=5
" Conceal when line is not active
set conceallevel=1
" Just hide buffer instead of unloading
set hidden
" Remap leader key
let mapleader = ","
" Jump to the last position
if has("autocmd")
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
\| exe "normal! g`\"" | endif
endif
call plug#begin('~/.local/share/nvim/plugged')
" Multi-entry selection UI
Plug 'junegunn/fzf'
Plug 'junegunn/fzf.vim'
" Per-project settings
Plug 'editorconfig/editorconfig-vim'
" Tagbar
Plug 'majutsushi/tagbar'
nmap <F8> :TagbarToggle<CR>
" Snippets
if has('python3')
Plug 'SirVer/ultisnips'
let g:UltiSnipsExpandTrigger = '<tab>'
let g:UltiSnipsJumpForwardTrigger = '<tab>'
let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'
Plug 'honza/vim-snippets'
endif
" Deoplete
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
let g:deoplete#enable_at_startup = 1
" Airline
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
let g:airline_powerline_fonts = 1
let g:airline_solarized_bg='dark'
let g:airline_theme='solarized'
" Airline for tmux
Plug 'edkolev/tmuxline.vim'
" NERDTree
Plug 'preservim/nerdtree'
Plug 'jistr/vim-nerdtree-tabs'
map <Leader>N <plug>NERDTreeTabsToggle<CR>
map <Leader>n <plug>NERDTreeFocusToggle<CR>
Plug 'Xuyuanp/nerdtree-git-plugin'
" Icons for NERDTree and airline
Plug 'ryanoasis/vim-devicons'
" Intra word motion
Plug 'chaoren/vim-wordmotion'
" Trailing whitespace highlighting
Plug 'ntpeters/vim-better-whitespace'
" Syntax highlighting/Language support
Plug 'Glench/Vim-Jinja2-Syntax', { 'for': 'jinja' }
Plug 'LnL7/vim-nix', { 'for': 'nix' }
Plug 'cespare/vim-toml', { 'for': 'toml' }
Plug 'mechatroner/rainbow_csv'
Plug 'posva/vim-vue', { 'for': 'vue' }
Plug 'sirtaj/vim-openscad', { 'for': 'openscad' }
" Language Client
Plug 'autozimu/LanguageClient-neovim', {
\ 'branch': 'next',
\ 'do': 'bash install.sh',
\ }
let g:LanguageClient_serverCommands = {
\ 'rust': ['rustup', 'run', 'stable', 'rls'],
\ 'go': ['gopls'],
\ 'python': ['pyls'],
\ 'typescript': ['docker', 'run', '--rm', '--init', '-i', '-v', '$HOME:$HOME:ro', '--network=none', 'r.sbruder.de/javascript-typescript-langserver'],
\ 'javascript': ['docker', 'run', '--rm', '--init', '-i', '-v', '$HOME:$HOME:ro', '--network=none', 'r.sbruder.de/javascript-typescript-langserver'],
\ }
let g:LanguageClient_loggingFile = '~/.local/share/nvim/LanguageClient.log'
let g:LanguageClient_settingsPath = '~/.config/nvim/LanguageClient.json'
function LC_maps()
if has_key(g:LanguageClient_serverCommands, &filetype)
nnoremap <buffer> <silent> <F5> :call LanguageClient_contextMenu()<CR>
nnoremap <buffer> <silent> K :call LanguageClient#textDocument_hover()<CR>
nnoremap <buffer> <silent> gd :call LanguageClient#textDocument_definition()<CR>
nnoremap <buffer> <silent> <F2> :call LanguageClient#textDocument_rename()<CR>
set formatexpr=LanguageClient#textDocument_rangeFormatting_sync()
endif
endfunction
autocmd FileType * call LC_maps()
" Rust
Plug 'rust-lang/rust.vim'
let g:rustfmt_autosave_if_config_present = 1
let g:rust_fold = 1
map <Leader>rt :RustTest<CR>
" Black (python formatter)
Plug 'psf/black', { 'branch': 'stable', 'for': 'python' }
" LaTeX helpers
Plug 'lervag/vimtex'
let g:tex_flavor='latex'
let g:vimtex_view_method='zathura'
let g:tex_conceal='abdmg'
let g:vimtex_syntax_autoload_packages = [
\'amsmath',
\'luacode',
\]
" this disables some helful warnings that often have a reason why I ignore them
let g:vimtex_quickfix_ignore_filters = [
\'Underfull \\hbox (badness [0-9]*) in ',
\'Overfull \\hbox ([0-9]*.[0-9]*pt too wide) in ',
\'Package hyperref Warning: Token not allowed in a PDF string',
\'Package typearea Warning: Bad type area settings!',
\]
" When using math environments vim does not know if if it currently is in one
" or outside of one unless it parses the file from the start. Parsing the
" file from the start each time fixes this but leads to a performance drop
" (depending on the number of lines).
" Also, somehow using FileType tex does not work, so this will enable slow
" syntax highlighting everywhere once a *.tex file is opened.
autocmd BufEnter *.tex syntax sync fromstart
" Color schemes
Plug 'altercation/vim-colors-solarized'
call plug#end()
set background=dark
silent! colorscheme solarized