"""""""""" " vimrc " """""""""" " load pluggins {{{ source $DOTDIR/.pluggins.vim " }}} """"""""""" " options " """"""""""" " common {{{ let mapleader = ' ' " set leader key to space let maplocalleader = '-' " set file local leader key to backslash set nocompatible " not compatible with vi set number " line number " set relativenumber " line number relative to cursor set numberwidth=1 " line numbers gutter autowidth set cursorline " highlight current line set noshowmatch " dont jump to pair bracket set autoread " reload files when changes happen outside vim set autowrite " auto write buf on certain events set hidden " keep change in buffer when quitting window set noswapfile " disable swap files set scrolloff=2 " line padding when scrolling set textwidth=0 " when line wrap occurs set wrapmargin=0 " disable auto line wrapping set encoding=utf-8 " utf-8 encoding set formatoptions-=t " do not auto break line > 89 character filetype plugin indent on " allow to add specific rules for certain type of file set mouse=a " mouse scrolling (heretic) " }}} " browse list with tab {{{ set wildmode=longest,list,full set wildmenu " tab to cycle through completion options set path+=** " recursive :find "}}} " intuitif split opening {{{ set splitbelow set splitright set fcs+=vert:│ " split separator " }}} " tab {{{ set expandtab " tab to space set tabstop=4 " tab size set shiftwidth=4 set smarttab set autoindent set smartindent " }}} " file search {{{ set ignorecase " case insensitive set smartcase set hlsearch " match highlight set incsearch " }}} " status {{{ set laststatus=2 " always a statusline (all window) set showcmd " show current partial command in the bottom right set noshowmode " dont show current mode (i.e --INSERT--) " }}} " fold {{{ set foldmethod=indent " create fold based on the text indent set nofoldenable " not folded by default " }}} """"""""""""""" " colorscheme " """"""""""""""" " one {{{ " let g:onedark_terminal_italics=1 " colorscheme onedark " }}} " dracula {{{ " let g:dracula_bold = 1 " let g:dracula_italic = 1 " let g:dracula_colorterm = 0 " colorscheme dracula " }}} " solarized {{{ set t_Co=16 let g:solarized_termcolors=16 let g:solarized_visibility='low' " visibility of invisible chars with set list set background=dark colorscheme solarized " }}} " lightline {{{ let g:lightline = {} " let g:lightline.colorscheme = 'solarized' " lightline theme to solarized " let g:lightline.colorscheme = 'jellybeans' " lightline theme to onedark let g:lightline = { \ 'colorscheme': 'solarized', \ 'active': { \ 'left': [ [ 'mode', 'paste' ], \ [ 'gitbranch', 'readonly', 'filename', 'modified' ] ] \ }, \ 'component_function': { \ 'gitbranch': 'FugitiveHead' \ }, \ } " }}} """""""""""" " mappings " """""""""""" " split navigation {{{ nnoremap nnoremap nnoremap nnoremap " nnoremap " nnoremap " nnoremap " nnoremap nnoremap s= = " }}} " common {{{ " 'Y' yank to the end of the line noremap Y y$ " solves annoying delay went exiting insert mode inoremap " kj to exit insert mode inoremap kj " remove visual mode keybinding noremap Q " remove command line window keybinding noremap q: " search with very magic nnoremap / /\v nnoremap ? ?\v " move line up and down nnoremap _ ddkP nnoremap + ddp " long move up/down nnoremap ( 10k nnoremap ) 10j " tag nagigation nnoremap ] nnoremap t " common change until nnoremap cu ct_ nnoremap cp ct) nnoremap c, ct, " }}} " buffer navigation {{{ nnoremap bn :bn nnoremap bp :bp nnoremap :b# nnoremap bl :ls " }}} " vimrc {{{ nnoremap rc :vsplit $DOTDIR/.vimrc nnoremap src :source $MYVIMRC " }}} " c {{{ " create c function body from prototype nnoremap gcf A{}j " initialise a school header file function PutHeaderBoilerPlate() let l:filename = join(split(toupper(expand('%:t')), '\.'), "_") " echom l:filename call append(12, "#ifndef " . l:filename) call append(13, "# define " . l:filename) call append(15, "#endif") endfunction nnoremap gch :Stdheader:call PutHeaderBoilerPlate() " put semicolon at the end of line nnoremap ; mqA;`q " doxygen format comments autocmd Filetype c setlocal comments=s:/**,m:**,e:*/,s:/*,m:**,e:*/ autocmd Filetype cpp setlocal comments=s:/**,m:**,e:*/,s:/*,m:**,e:*/ " }}} " cpp {{{ " Put Coplien Form boilerplate class function PutCoplienFormFunc(name) let l:default_constructor = a:name . "();\n" let l:copy_constructor = a:name . "(const " . a:name . "& other);\n" let l:copy_operator = a:name . "& operator=(const " . a:name . "& other);\n" let l:destructor = "~" . a:name . "();\n" execute "normal iclass " . a:name . "\n{\npublic:\n" . l:default_constructor . l:copy_constructor . l:copy_operator . l:destructor . "\nprivate:\n};\n" execute "normal <2{" endfunction " Put Coplien Form boilerplate according to filename command! PutCoplienFormFile call PutCoplienFormFunc(split(expand('%:t'), '\.')[0]) command! -nargs=1 PutCoplienForm call PutCoplienFormFunc("") " }}} " quickfix window toggle {{{ nnoremap t :call QuickfixToggle() nnoremap n :cnext nnoremap p :cprevious let g:quickfix_is_open = 0 if !exists('*QuickfixToggle') function QuickfixToggle() if g:quickfix_is_open cclose let g:quickfix_is_open = 0 else copen let g:quickfix_is_open = 1 endif endfunction endif " }}} " make {{{ nnoremap m :make all " }}} " hook {{{ " remove trailing white space on save autocmd BufWritePre * %s/\s\+$//e " dirty hack to disable this feature on markdown (autocmd! wouldn't work) autocmd BufReadPre *.md autocmd! BufWritePre " }}} " filetype {{{ " real tab in c file for school projects autocmd BufReadPre,BufNewFile *.h,*.c set filetype=c autocmd Filetype c setlocal noexpandtab " std::cout << ... << std::endl; shortcut autocmd Filetype cpp nnoremap cout istd::cout << << std::endl;2F q: hmmmm?? " }}} " ctrlp-funky {{{ " let g:ctrlp_funky_syntax_highlight = 1 " nnoremap :CtrlPFunky " }}}