" ########## General ########## {{{ syntax on colorscheme elflord let g:airline_theme='atomic' set encoding=utf-8 set fileencoding=utf-8 set wildmenu set autoindent set smartindent set incsearch set hlsearch set smarttab set ignorecase set smartcase set mouse= set number relativenumber set so=7 set tabstop=4 shiftwidth=4 set expandtab let mapleader = "," let maplocalleader = "\\" " }}} " ########## Highlighting ########## {{{ highlight ExtraWhitespace ctermbg=red guibg=red match ExtraWhitespace /\s\+$/ augroup trailingwhitespace autocmd! autocmd Syntax * syn match ExtraWhitespace /\s\+$\| \+\ze\t/ augroup END " Tabs set list set listchars=tab:\|\ , " }}} " ########## Keybinds ########## {{{ nnoremap ev :vsplit $MYVIMRC nnoremap sv :source $MYVIMRC nnoremap f :FZF nnoremap gs :Gstatus nnoremap gc :Gcommit nnoremap gr :Git rebase -i noremap c :w! \| !compiler % noremap o :!open % noremap p :!opout % nnoremap u :!ctags -R . " Local (scope) replace nnoremap gr gd[{V%::s////gc " Global replace nnoremap gR gD:%s////gc " Cscope keybinds map g :cs find 3 =expand("") map g :cs find 0 =expand("") nnoremap Y y$ nnoremap H ^ nnoremap L $ vnoremap H ^ vnoremap L $ inoremap jk inoremap inoremap inoremap inoremap inoremap " Dragvisuals keybinds vmap DVB_Drag('left') vmap DVB_Drag('right') vmap DVB_Drag('down') vmap DVB_Drag('up') vmap D DVB_Duplicate() " Remove any introduced trailing whitespace after moving... let g:DVB_TrimWS = 1 " }}} " ########## Abbreviations ########## {{{ iabbrev @@ frans@tankernn.eu iabbrev ssig -- Frans Bergmanfrans@tankernn.eu " }}} " ########## File-specific settings ########## {{{ autocmd FileType gitcommit,groff :set spell autocmd FileType vim :set foldmethod=marker autocmd BufNewFile,BufRead *.ms,*.me,*.mom,*.man set filetype=groff " }}} " ########## Plugins ########## {{{ call plug#begin() Plug 'tpope/vim-fugitive' Plug 'bling/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'mkitt/tabline.vim' Plug 'tpope/vim-surround' Plug 'tpope/vim-repeat' Plug 'raimondi/delimitmate' Plug 'fisadev/dragvisuals.vim' Plug 'dense-analysis/ale' Plug 'maralla/completor.vim' Plug 'junegunn/fzf' Plug 'Chiel92/vim-autoformat' Plug 'preservim/nerdtree' Plug 'vim-scripts/taglist.vim' Plug 'ashinkarov/nvim-agda' Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } call plug#end() " }}} " ########## Plugin Settings ########## {{{ let g:ale_linters = {'rust': ['cargo', 'rls']} let g:deoplete#enable_at_startup = 1 nmap an (ale_next) nmap ap (ale_previous) let g:completor_filetype_map = {} " Enable lsp for rust by using rls let g:completor_filetype_map.rust = {'ft': 'lsp', 'cmd': 'rls'} augroup rust autocmd! autocmd FileType rust au BufWrite :Autoformat autocmd FileType rust let b:delimitMate_smart_quotes='\%(\w\|[^[:punct:][:space:]]\|\%(\\\\\)*\\\)\%#\|\%#\%(\w\|[^[:space:][:punct:]]\)\|\<\%#\|\&\%#' augroup END " Use TAB to complete when typing words, else inserts TABs as usual. Uses " dictionary, source files, and completor to find matching words to complete. " Note: usual completion is on but more trouble to press all the time. " Never type the same word twice and maybe learn a new spellings! " Use the Linux dictionary when spelling is in doubt. function! Tab_Or_Complete() abort " If completor is already open the `tab` cycles through suggested completions. if pumvisible() return "\" " If completor is not open and we are in the middle of typing a word then " `tab` opens completor menu. elseif col('.')>1 && strpart( getline('.'), col('.')-2, 3 ) =~ '^[[:keyword:][:ident:]]' return "\=completor#do('complete')\" else " If we aren't typing a word and we press `tab` simply do the normal `tab` " action. return "\" endif endfunction " Use `tab` key to select completions. Default is arrow keys. inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " Use tab to trigger auto completion. inoremap Tab_Or_Complete() " }}}