diff --git a/init.vim b/init.vim index 274e135..00ae4cf 100644 --- a/init.vim +++ b/init.vim @@ -4,7 +4,7 @@ " Mirror: https://github.com/valeth/vim-config -" XDG Directories {{{ +" [NVim Directories] {{{ let g:vim_config_home = split(&rtp, ',', 0)[0] if exists('$XDG_CACHE_HOME') @@ -18,269 +18,83 @@ if exists('$XDG_DATA_HOME') else let g:vim_data_home = expand('$HOME/.local/share/') . v:progname endif -" }}} +" [NVim Directories] }}} -" Settings {{{ - -" prompt with save dialog on exit -set confirm - -" wait only a short amount of time -set notimeout -set ttimeout -set timeoutlen=10 -set visualbell t_vb= - -" automatically do stuff +" [Settings] {{{ set autochdir -set autoread set autowriteall - -" scroll n lines before hitting the border -set scrolloff=3 -set sidescrolloff=5 - -" show line numbers -set number - -" show position -set ruler - -" ignore case when searching -set ignorecase -set smartcase -set incsearch -set gdefault - -" show matching parenthesis -set showmatch -set matchtime=3 - - -" show hidden characters -set listchars=tab:»\ ,trail:◆,extends:❯,precedes:❮,eol:↲,nbsp:· set breakindent set breakindentopt=sbr -set showbreak=↳ -set list - -set shortmess=aoOtTI - -" share yank buffer with system clipboard set clipboard+=unnamed - -" indent automatically -set autoindent -set smartindent - -set undofile - +set completeopt=longest,menuone,preview +set confirm +set foldcolumn=1 +set foldlevel=99 +set foldmethod=syntax +set foldtext=myfold#text() +set gdefault +set grepprg=grep\ -nH\ $* +set hidden +set ignorecase +set list +set listchars=tab:»\ ,trail:◆,extends:❯,precedes:❮,eol:↲,nbsp:· +set matchtime=3 +set noshowmode set noswapfile - -" change split behaviour +set notimeout +set number +set ruler +set scrolloff=3 +set showmatch +set showbreak=↳ +set shortmess=aoOtTI +set sidescrolloff=5 +set smartcase +set smartindent set splitbelow set splitright - -" show sane line lenght limit marker -set colorcolumn=+3 - -" wildmenu completion -set wildmenu -set wildmode=list:longest,full +set synmaxcol=300 +set timeoutlen=50 +set ttimeout +set undofile +set virtualedit+=block +set visualbell t_vb= set wildignore+=.git set wildignore+=*.bak,*.old,*.swp,*~ set wildignore+=*.o,*.hi set wildignore+=*.pyc,*.class set wildignore+=*.pdf,*.aux set wildignore+=*.png,*.jpg +set wildmode=list:longest,full +" [Settings] }}} -set virtualedit+=block - -set foldcolumn=1 -set foldlevel=99 -set foldmethod=syntax -set foldtext=myfold#text() - -set complete=.,w,b,u,t -set completeopt=longest,menuone,preview - -" enable syntax highlighting and filetype detection -filetype indent on -filetype plugin on -syntax enable -set synmaxcol=300 -" }}} - -" Keyboard mappings {{{ -let g:mapleader = "," -let g:maplocalleader = "\\" - -command! Wq wq -command! WQ wq -command! Q q -command! W w - -noremap :noh - -nnoremap U :redo -nnoremap -nnoremap vl :setlocal cursorline! -nnoremap vc :setlocal cursorcolumn! -nnoremap ve :setlocal colorcolumn=80 -nnoremap vn :setlocal colorcolumn=0 -nnoremap tcs :call ToggleColorscheme() -nnoremap Y y$ -nnoremap j gj -nnoremap k gk -nnoremap fmt gg=G`` -nnoremap gr gd[{V%::s////g -nnoremap gR gD:%s////g -nnoremap th :tabfirst -nnoremap tj :tabnext -nnoremap tk :tabprev -nnoremap tl :tablast -nnoremap tn :tabnew -nnoremap tq :tabclose - -nnoremap o - -" change beginning and end mappings -noremap H ^ -noremap L $ -vnoremap L g_ -inoremap I -inoremap A -cnoremap -cnoremap - -" movement -noremap j gj -noremap k gk -noremap gj j -noremap gj j - -" go to last change -nnoremap gC `. - -" stay in center when searching -nnoremap n nzzzv -nnoremap N Nzzzv - -nnoremap g; g;zz -nnoremap g, g,zz -nnoremap zz - -" toggle invlist -nnoremap il :set invlist -vnoremap il :set invlist - -" make substitutions more convenient -nnoremap :%s/ -vnoremap :s/ - -nnoremap / /\v -vnoremap / /\v - -" quicker escape -inoremap jk -inoremap JK -inoremap Jk - -" indent in visual mode and keep selection -vnoremap < >gv - -" just in case I forgot sudo again -cnoremap w! w !sudo tee % >/dev/null - -tnoremap -tnoremap - -" NOP(E)s -noremap -noremap -noremap -noremap -noremap -" }}} - -" Autocommands {{{ -augroup LineReturn - au! - au BufReadPost * - \ if line("'\"") > 0 && line("'\"") <= line("$") | - \ execute 'normal! g`"zvzz' | - \ endif -augroup END - -augroup ToggleLineNumbers - au! - au VimEnter,WinEnter,InsertLeave * setlocal relativenumber - au WinLeave,InsertEnter * setlocal norelativenumber -augroup END - -augroup CursorLineColumn - au! - au VimEnter,WinEnter,BufWinEnter * setlocal cursorline cursorcolumn - au WinLeave * setlocal nocursorline nocursorcolumn -augroup END - -augroup AutoReload - au! - au BufWritePost $MYVIMRC source $MYVIMRC -augroup END - -au FocusLost * :silent! wa - -" keep splits equal on terminal resize -au VimResized * :wincmd = - -augroup Trailing - au! - au InsertEnter * :set invlist - au InsertLeave * :set invlist -augroup END -" }}} - -" Plugins {{{ +" [Plugins] {{{ call plug#begin(g:vim_data_home . '/plugins') -" deoplete {{{ -" run 'UpdateRemotePlugins' first -Plug 'Shougo/deoplete.nvim' -Plug 'Shougo/neco-syntax' -Plug 'Shougo/neoinclude.vim', { 'for': ['c', 'cpp'] } -Plug 'Rip-Rip/clang_complete', { 'for': ['c', 'cpp'] } -Plug 'zchee/deoplete-jedi', { 'for': 'python' } -Plug 'eagletmt/neco-ghc', { 'for': 'haskell' } +" {{{ +function! DoRemote(arg) + UpdateRemotePlugins +endfunction let g:deoplete#enable_at_startup = 1 -" }}} +"let g:deoplete#sources#clang#libclang_path = '/usr/lib/libclang.so' +"let g:deoplete#sources#clang#clang_header = '/usr/include/clang' -" ctrlp.vim {{{ +Plug 'Shougo/vimproc.vim', { 'do': 'make' } +Plug 'Shougo/deoplete.nvim', { 'do': function('DoRemote') } +Plug 'Shougo/neco-syntax' +Plug 'Shougo/neoinclude.vim', { 'for': ['c', 'cpp'] } +Plug 'Rip-Rip/clang_complete', { 'for': ['c', 'cpp'] } +"Plug 'zchee/deoplete-clang', { 'for': ['c', 'cpp'] } +Plug 'zchee/deoplete-jedi', { 'for': ['python'] } +Plug 'eagletmt/neco-ghc', { 'for': ['haskell'] } +" }}} + +" {{{ Plug 'kien/ctrlp.vim' +" }}} -let g:ctrlp_cmd = "CtrlPBuffer" -let g:ctrlp_prompt_mappings = { - \ 'ToggleType(1)': ['', '', ''], - \ 'ToggleType(-1)': ['', '', ''], -\ } -" }}} - -" Gundo {{{ -Plug 'vim-scripts/Gundo', { 'on': 'GundoToggle' } - -let g:gundo_width = 60 -let g:gundo_preview_height = 30 -let g:gundo_right = 1 - -nnoremap gu :GundoToggle -vnoremap gu :GundoToggle -" }}} - -" latexsuite {{{ -set grepprg=grep\ -nH\ $* - +" {{{ let g:tex_flavor = "latex" let g:tex_fold_enabled = 1 let g:Imap_UsePlaceHolders = 0 @@ -291,107 +105,67 @@ let g:Tex_ViewRuleComplete_dvi = "pgrep okular.*$* || xdg-open &" let g:Tex_ViewRuleComplete_ps = "" let g:Tex_ViewRuleComplete_pdf = "pgrep okular.*$* || xdg-open &" let g:Tex_DefaultTargetFormat = "pdf" +" }}} -nnoremap Tex_Help -inoremap Tex_Help -nnoremap IMAP_JumpForward -vnoremap IMAP_JumpForward -"noremap :w :!pdflatex -shell-escape "%" && { pgrep ".*%:p || xdg-open %:p:r.pdf } -" }}} - -" nerdtree {{{ +" {{{ Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } Plug 'scrooloose/nerdtree-git-plugin', { 'on': 'NERDTreeToggle' } -au bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif +au BufEnter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif +" }}} -noremap nt :NERDTreeToggle -vnoremap nt :NERDTreeToggle -" }}} +" {{{ +Plug 'scrooloose/syntastic', {'for': ['c', 'cpp', 'python', 'sh', 'ruby']} -" syntastic {{{ -Plug 'scrooloose/syntastic', {'for': ['c', 'cpp', 'python', 'sh']} - -let g:syntastic_enable_signs = 1 let g:syntastic_check_on_open = 1 -let g:syntastic_enable_highlighting = 1 +let g:syntastic_check_on_wq = 0 let g:syntastic_auto_loc_list = 1 +let g:syntastic_loc_list_height = 5 let g:syntastic_c_check_header = 1 let g:syntastic_cpp_remove_include_errors = 1 let g:syntastic_cpp_check_header = 1 let g:syntastic_cpp_auto_refresh_includes = 1 let g:syntastic_tex_checkers = ["false"] -let g:syntastic_error_symbol = '!' -let g:syntastic_warning_symbol = '?' -nnoremap syn :SyntasticToggleMode -vnoremap syn :SyntasticToggleMode -" }}} +let g:syntastic_error_symbol = '☓' +let g:syntastic_warning_symbol = '⚠' +" }}} -" tagbar {{{ +" {{{ Plug 'majutsushi/tagbar' +" }}} -nnoremap tag :TagbarToggle -vnoremap tag :TagbarToggle -" }}} - -" powerline/airline {{{ +" {{{ Plug 'bling/vim-airline' -"set showtabline=2 -set laststatus=2 -set noshowmode - -"let g:powerline_pycmd = "py3" -"let g:powerline_pyeval = g:powerline_pycmd . "eval" let g:airline#extensions#tabline#enabled = 1 let g:airline_powerline_fonts = 1 let g:airline_theme='dark' -" }}} +" }}} -" scratch.vim {{{ +" {{{ Plug 'mtth/scratch.vim', { 'on': 'Scratch' } -" allow autohiding -set hidden - let g:scratch_persistence_file = g:vim_data_home . "/scratch.vim" -" }}} +" }}} -" vim-pandoc {{{ +" {{{ Plug 'vim-pandoc/vim-pandoc' Plug 'vim-pandoc/vim-pandoc-syntax' -" the filetypes for which vim-pandoc should be used let g:pandoc#filetypes#handles = [ "markdown", "pandoc" ] - -" enable pandoc for markdown let g:pandoc#filetypes#pandoc_markdown = 1 - -" disable the spellchecker let g:pandoc#spell#enabled = 0 - -" don't use the conceal functionality let g:pandoc#syntax#conceal#use = 0 - -" would you please use the defined foldcolums settings, thanks let g:pandoc#folding#fdc = &fdc -" }}} +" }}} -" vim-tmux-navigator {{{ +" {{{ Plug 'christoomey/vim-tmux-navigator' -" use Alt instead of Ctrl let g:tmux_navigator_no_mappings = 1 - -nnoremap :TmuxNavigateLeft -nnoremap :TmuxNavigateDown -nnoremap :TmuxNavigateUp -nnoremap :TmuxNavigateRight -nnoremap :TmuxNavigatePrevious -" }}} +" }}} Plug 'Konfekt/FastFold' -Plug 'Raimondi/delimitMate' Plug 'vim-scripts/fish-syntax' Plug 'valeth/sprak.vim', { 'for': 'sprak' } Plug 'hoelzro/vim-polyglot' @@ -406,60 +180,185 @@ Plug 'junegunn/seoul256.vim' Plug 'NLKNguyen/papercolor-theme' Plug 'chriskempson/tomorrow-theme' call plug#end() -" }}} +" [Plugins] }}} -" Colorscheme {{{ +" [Keymappings] {{{ +let g:mapleader = "," +let g:maplocalleader = "\\" + +" {{{ +command! Wq wq +command! WQ wq +command! Q q +command! W w +" }}} + +" {{{ +nnoremap :CtrlPBuffer +inoremap :CtrlPBuffer +nnoremap :CtrlP +inoremap :CtrlP +nnoremap Tex_Help +inoremap Tex_Help +nnoremap IMAP_JumpForward +vnoremap IMAP_JumpForward +"noremap :w :!pdflatex -shell-escape "%" && { pgrep ".*%:p || xdg-open %:p:r.pdf } +noremap nt :NERDTreeToggle +vnoremap nt :NERDTreeToggle +nnoremap syn :SyntasticToggleMode +vnoremap syn :SyntasticToggleMode +nnoremap tag :TagbarToggle +vnoremap tag :TagbarToggle +nnoremap :TmuxNavigateLeft +nnoremap :TmuxNavigateDown +nnoremap :TmuxNavigateUp +nnoremap :TmuxNavigateRight +nnoremap :TmuxNavigatePrevious +" }}} + +" {{{ +nnoremap +inoremap +nnoremap +noremap +noremap +noremap +noremap +noremap ^ +noremap $ +" }}} + +noremap :noh +nnoremap U :redo +nnoremap vl :setlocal cursorline! +nnoremap vc :setlocal cursorcolumn! +nnoremap ve :setlocal colorcolumn=+3 +nnoremap vn :setlocal colorcolumn=0 +nnoremap tcs :call ToggleColorscheme() +nnoremap Y y$ +nnoremap j gj +nnoremap k gk +nnoremap fmt gg=G`` +nnoremap gr gd[{V%::s////g +nnoremap gR gD:%s////g +nnoremap th :tabfirst +nnoremap tj :tabnext +nnoremap tk :tabprev +nnoremap tl :tablast +nnoremap tn :tabnew +nnoremap tq :tabclose +nnoremap H ^ +nnoremap L $ +vnoremap L g_ +inoremap I +inoremap A +cnoremap +cnoremap +noremap j gj +noremap k gk +noremap gj j +noremap gk k +nnoremap gC `. +nnoremap n nzzzv +nnoremap N Nzzzv +nnoremap g; g;zz +nnoremap g, g,zz +nnoremap zz +nnoremap il :set invlist +vnoremap il :set invlist +inoremap :%s/ +nnoremap :%s/ +vnoremap :s/ +nnoremap / /\v +vnoremap / /\v +inoremap jk +inoremap jK +inoremap Jk +inoremap JK +vnoremap < >gv +cnoremap w! w !sudo tee % >/dev/null +tnoremap +tnoremap +" [Keymappings] }}} + +" [Autocommands] {{{ +"augroup LineReturn +" au! +" au BufReadPost * +" \ if line("'\"") > 0 && line("'\"") <= line("$") | +" \ execute 'normal! g`"zvzz' | +" \ endif +"augroup END + +augroup ToggleLineNumbers + au! + au VimEnter,WinEnter,InsertLeave * setlocal relativenumber + au WinLeave,InsertEnter * setlocal norelativenumber +augroup END + +augroup CursorHighlight + au! + au VimEnter,WinEnter,BufWinEnter * setlocal cursorline + au WinLeave * setlocal nocursorline + "au VimEnter,WinEnter,BufWinEnter * setlocal cursorcolumn + "au WinLeave * setlocal nocursorcolumn + au VimEnter,WinEnter,BufWinEnter * setlocal colorcolumn=+3 + au WinLeave * setlocal colorcolumn=0 +augroup END + +" reload initrc +"au BufWritePost $MYVIMRC source $MYVIMRC + +" save automatically +au FocusLost * :silent! wa + +" keep splits equal on terminal resize +au VimResized * :wincmd = + +augroup Trailing + au! + au InsertEnter * :set invlist + au InsertLeave * :set invlist +augroup END +" [Autocommands] }}} + +" [Colorscheme] {{{ function! ToggleColorscheme() if g:colors_name =~ 'seoul256' - call ToggleSeoul256() + if g:colors_name == 'seoul256' + colorscheme seoul256-light + else + colorscheme seoul256 + endif elseif g:colors_name =~ 'Tomorrow' - call ToggleTomorrow() + if g:colors_name == 'Tomorrow-Night' + colorscheme Tomorrow + else + colorscheme Tomorrow-Night + endif else - call ToggleBackground() - endif - - AirlineRefresh -endfunction - -function! ToggleBackground() if &background == 'dark' set background=light else set background=dark endif -endfunction - -function! ToggleSeoul256() - if g:colors_name == 'seoul256' - colorscheme seoul256-light - else - colorscheme seoul256 endif + AirlineRefresh endfunction -function! ToggleTomorrow() - if g:colors_name == 'Tomorrow-Night' - colorscheme Tomorrow - else - colorscheme Tomorrow-Night - endif -endfunction - -"let g:molokai_original = 1 -"let g:rehash256 = 1 -"colorscheme molokai - " Theme Range Default " ----- ----- ------- " seoul256 233 - 239 237 " seoul256-light 252 - 256 253 let g:seoul256_background = 237 let g:seoul256_light_background = 254 + +let g:rehash256 = 1 + colorscheme seoul256 - +"colorscheme molokai "colorscheme PaperColor - "colorscheme Tomorrow-Night -" }}} +" [Colorscheme] }}} -" vim:set foldmethod=marker foldlevel=0: