Files
dotfiles/vim/.vimrc
Fabian Ising 5bfbfc1fc7 Add diffs
2019-02-28 13:36:24 +01:00

245 lines
6.0 KiB
VimL

set nocompatible
filetype off
" Plugins
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
" Tags
Plugin 'xolox/vim-misc'
Plugin 'xolox/vim-easytags'
Plugin 'majutsushi/tagbar'
" Templates
Plugin 'aperezdc/vim-template'
" Selection expand
Plugin 'terryma/vim-expand-region'
Plugin 'kana/vim-textobj-user'
Plugin 'kana/vim-textobj-line'
Plugin 'kana/vim-submode'
" Better Pasting
Plugin 'ConradIrwin/vim-bracketed-paste'
" Tmux navigation
Plugin 'christoomey/vim-tmux-navigator'
" YouCompleteMe
Plugin 'Valloric/YouCompleteMe'
Plugin 'rdnetto/YCM-Generator'
" Git
Plugin 'tpope/vim-fugitive'
" Comments
Plugin 'scrooloose/nerdcommenter'
" Surround
Plugin 'tpope/vim-surround'
" Snippets
" Track the engine.
Plugin 'SirVer/ultisnips'
" Snippets are separated from the engine. Add this if you want them:
Plugin 'honza/vim-snippets'
Plugin 'ervandew/supertab'
"Buftabeline
"Plugin 'ap/vim-buftabline'
" Highlight matching xml tags
Plugin 'Valloric/MatchTagAlways'
"Javascript
Plugin 'pangloss/vim-javascript'
" Tex
Plugin 'lervag/vimtex'
"Go
Plugin 'fatih/vim-go'
call vundle#end()
filetype plugin indent on
set cinkeys-=0#
" Terminal emulator settings
set t_Co=256
set term=screen-256color
" Color configuration
colorscheme badwolf " some color ..
syntax enable " enable syntax processing
" Disable annoying bell
set noerrorbells
" Allow modelines at the beginning and end of a file
set modeline
" Key configuration
let mapleader = "\<Space>" " Make space the leader key
nnoremap <Leader>w :w<CR>| " Write file
nnoremap <Leader>q :q<CR>| " Close file
nnoremap <Leader>s :w !sudo tee %<CR>L<CR>
nmap <Leader><Leader> V| " Change to visual line mode
map q: :q| " No command history
nmap <Leader><CR> O<ESC> | " Add line above
nmap <CR> o<ESC>| " Add line below
nmap <Leader>f gq}| " Format paragraph
" Window management
nmap <Leader>mt :tab sp<CR> | " maximize window to new tab
nmap <Leader>. <C-w>= | " Split windows equally
map gb :bnext<CR>
map gB :bNext<CR>
call submode#enter_with('grow/shrink', 'n', '', '<Leader>r', '<Nop>')
call submode#map('grow/shrink', 'n', '', '+', '<C-w>+')
call submode#map('grow/shrink', 'n', '', '-', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<', '<C-w><')
call submode#map('grow/shrink', 'n', '', '>', '<C-w>>')
set splitbelow
set splitright
"disable submode timeouts:
let g:submode_timeout = 0
" don't consume submode-leaving key
let g:submode_keep_leaving_key = 1
" Configuration of spaces and tabs
set tabstop=4 " show 4 spaces per TAB
set softtabstop=4 " insert 4 spaces per TAB
set smarttab
set expandtab " tabs are spaces
set shiftwidth=4
" UI
set number " show line numbers
set relativenumber "relative line numbers
set showcmd " show last command in bottom bar
set cursorline " highlight current line
" Statusline
set statusline+=%f\ " show Filepath
set statusline+=[%{strlen(&fenc)?&fenc:'none'}] "file encoding
set statusline+=%m%r " Modified and read only flag
set statusline+=%= " align left
set statusline+=%y " show Filetype
set statusline+=[%{&fo}] " Show format options
set laststatus=2 " always show statusline
" Filetypes
filetype on " filetype detection on
filetype indent on " filetype-specific indent .vim/indent/
filetype plugin on " filteype plugins in .vim/ftplugins
set smartindent
set wildmenu " visual autocomplete for command menu
set lazyredraw " redraw only when necessary
set showmatch " highlight matching brackets
set mouse=a " Mouse control
" Searching
set incsearch " search while entering
set hlsearch " highlight matches
nnoremap <Leader>h :set hlsearch!<CR>
set ignorecase
set smartcase
" Line wrapping
set tw=79 " set textwidth of 80 characters
set formatoptions-=t " Don't wrap code
set formatoptions+=c " Wrap comments
set formatoptions+=mB " Don't break multibyte characters
set formatoptions+=j " Remove multiple comment markers
function TextWrapToggle()
if &fo =~'t'
setlocal fo-=t
else
setlocal fo+=t
endif
let formatoptions = &formatoptions
echom formatoptions
endfunction
nmap <Leader>t :call TextWrapToggle()<CR>
" Highlight characters past 80
"augroup vimrc_autocmds
"autocmd BufEnter * highlight OverLength ctermbg=88 guibg=#592929
"autocmd BufEnter * match OverLength /\%81v.*/
"augroup END
"Copying
set clipboard=unnamedplus,unnamed " Copy/Paste
" TagBar
nmap <F8> :TagbarToggle<CR>
imap <F8> <ESC>:TagbarToggle<CR>gi
nmap <C-]> <C-w><C-]><C-w>T
" YouCompleteMe
let g:ycm_collect_identifiers_from_tags_files = 1 " Read from tag files
let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py' " Standard conf
let g:ycm_enable_diagnostic_signs = 0 " Do not show semantic error bar
let g:ycm_server_python_interpreter = '/usr/bin/python'
let g:ycm_key_list_select_completion = ['<C-j>', '<C-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<C-k>', '<C-p>', '<Up>']
"Tags
let g:easytags_async = 1
" make
autocmd QuickFixCmdPre make set cmdheight=2
"autocmd QuickFixCmdPost make nested cwindow "Open the quickfix window
"autocmd QuickFixCmdPost make nested lwindow "Change to the quickfix window
set switchbuf=split
nmap <F9> :silent! make<CR>:redraw!<CR>
nmap <Leader>m :silent! make<CR>:redraw!<CR>
nmap <Leader>x :silent! make ex<CR>:redraw!<CR>
imap <F9> <ESC>:make<CR>:redraw!<CR>i
" vim-templates config-file
try
source ~/.vim/.vimrc_config_template
catch
" Ignore non existing file
endtry
" Expand region
vmap v <Plug>(expand_region_expand)
vmap <C-v> <Plug>(expand_region_shrink)
" Snippets
let g:SuperTabDefaultCompletionType = '<C-n>'
let g:SuperTabCrMapping = 0
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
let g:UltiSnipsEditSplit="vertical"
set rtp+=~/.vim/my-snippets
try
source ~/.vim/.vimrc_config_expand_region
catch
" Ignore non existing file
endtry
" Powerline
try
source ~/.vim/.vimrc_config_powerline
catch
" Ignore non existing file
endtry
" Extra stuff
try
source ~/.vim/.vimrc_config_extra_stuff
catch
" Ignore non existing file
endtry