-
-
Save iohub/b14d93b0fcdd47bb4aa85b53d05a84b9 to your computer and use it in GitHub Desktop.
vim profile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| set encoding=utf-8 | |
| set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1 | |
| filetype plugin indent on | |
| syntax on | |
| set foldmethod=indent | |
| let mapleader=";" | |
| "------- | |
| " YouCompleteMe | |
| "------ | |
| Plug 'Valloric/YouCompleteMe' | |
| let g:ycm_rust_src_path = '~/.rustup/toolchains/stable-x86_64-apple-darwin/lib/rustlib/src/rust/src' | |
| let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py' | |
| let g:EclimCompletionMethod = 'omnifunc' | |
| nnoremap <leader>gd :YcmCompleter GoToDefinitionElseDeclaration<CR> | |
| " [ 'same-buffer', 'horizontal-split', 'vertical-split', 'new-tab' ] | |
| let g:ycm_goto_buffer_command='vertical-split' | |
| let g:ycm_add_preview_to_completeopt = 0 | |
| let g:ycm_autoclose_preview_window_after_insertion = 1 | |
| let g:ycm_key_invoke_completion = '<C-t>' | |
| let g:ycm_semantic_triggers = { | |
| \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'], | |
| \ 'cs,lua,javascript': ['re!\w{2}'], | |
| \ } | |
| let g:ycm_filetype_whitelist = { | |
| \ "c":1, | |
| \ "cpp":1, | |
| \ "go":1, | |
| \} | |
| Plug 'tenfyzhong/CompleteParameter.vim' | |
| inoremap <silent><expr> ( complete_parameter#pre_complete("()") | |
| smap <c-j> <Plug>(complete_parameter#goto_next_parameter) | |
| imap <c-j> <Plug>(complete_parameter#goto_next_parameter) | |
| smap <c-k> <Plug>(complete_parameter#goto_previous_parameter) | |
| imap <c-k> <Plug>(complete_parameter#goto_previous_parameter) | |
| "------- | |
| " Python CompleteMe | |
| "------ | |
| " Plug 'davidhalter/jedi-vim' | |
| "------- | |
| " Go CompleteMe | |
| "------ | |
| Plug 'fatih/vim-go' | |
| Plug 'dgryski/vim-godef' | |
| Plug 'Blackrush/vim-gocode' | |
| let g:go_fmt_command = "goimports" | |
| let g:syntastic_go_checkers = ['go', 'golint', 'errcheck'] | |
| "------- | |
| " Rust CompleteMe | |
| " rustup install nightly | |
| " rustup component add rls-preview --toolchain nightly | |
| " rustup component add rust-analysis --toolchain nightly | |
| " rustup component add rust-src --toolchain nightly | |
| " Install coc-rls | |
| "------ | |
| " Plug 'neoclide/coc.nvim', {'do': { -> coc#util#install()}} | |
| " Plug 'rust-lang/rust.vim' | |
| let g:autofmt_autosave = 1 | |
| nmap <silent> cd <Plug>(coc-definition) | |
| " Use tab for trigger completion with characters ahead and navigate. | |
| " Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin. | |
| inoremap <silent><expr> <TAB> | |
| \ pumvisible() ? "\<C-n>" : | |
| \ <SID>check_back_space() ? "\<TAB>" : | |
| \ coc#refresh() | |
| inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |
| "------- | |
| " Ocaml merlin helper | |
| "------ | |
| " Plug 'vim-scripts/L9' | |
| " Plug 'iohub/vim-autocomplpop' | |
| "-------- | |
| " Vim UI | |
| "-------- | |
| " color scheme | |
| set background=dark | |
| "color solarized | |
| " highlight current line | |
| " hightlight previous position | |
| " au WinLeave * set nocursorline nocursorcolumn | |
| " au WinEnter * set cursorline cursorcolumn | |
| au WinEnter * set cursorline | |
| au WinNew * set cursorline | |
| set cursorline | |
| "colorscheme molokai | |
| "-------------- | |
| " IDE features | |
| "-------------- | |
| Plug 'scrooloose/nerdtree' | |
| Plug 'Lokaltog/vim-easymotion' | |
| Plug 'humiaozuzu/TabBar' | |
| Plug 'majutsushi/tagbar' | |
| Plug 'mileszs/ack.vim' | |
| Plug 'kien/ctrlp.vim' | |
| Plug 'tpope/vim-fugitive' | |
| Plug 'Lokaltog/vim-powerline' | |
| Plug 'scrooloose/syntastic' | |
| Plug 'bronson/vim-trailing-whitespace' | |
| Plug 'morhetz/gruvbox' | |
| Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } | |
| Plug 'junegunn/fzf.vim' | |
| " Plug 'iohub/vim-easygrep' | |
| Plug 'iohub/vim-ripgrep' | |
| Plug 'vim-airline/vim-airline' | |
| Plug 'vim-airline/vim-airline-themes' | |
| let g:airline_theme='simple' | |
| let g:EasyGrepFilesToExclude="tags" | |
| " vim-ripgrep | |
| let g:rg_highlight='true' | |
| let g:rg_ignore_dirs=['vendor'] | |
| let g:rg_ignore_files=['tags'] | |
| map <silent> <Leader>vw :Rg <cr> | |
| map <silent> <Leader>vf :RgFunc <cr> | |
| map <silent> <Leader>bt :BTags <cr> | |
| "------------- | |
| " Other Utils | |
| " search | |
| set incsearch | |
| set hlsearch | |
| "set highlight " conflict with highlight current line | |
| set ignorecase | |
| set smartcase | |
| " editor settings | |
| set history=1000 | |
| set nocompatible | |
| set nofoldenable " disable folding" | |
| set confirm " prompt when existing from an unsaved file | |
| set backspace=indent,eol,start " More powerful backspacing | |
| set t_Co=256 " Explicitly tell vim that the terminal has 256 colors " | |
| " set mouse=a " use mouse in all modes | |
| set report=0 " always report number of lines changed " | |
| set nowrap " dont wrap lines | |
| set scrolloff=5 " 5 lines above/below cursor when scrolling | |
| set number " show line numbers | |
| set showmatch " show matching bracket (briefly jump) | |
| set showcmd " show typed command in status bar | |
| set title " show file in titlebar | |
| set laststatus=2 " use 2 lines for the status bar | |
| set matchtime=2 " show matching bracket for 0.2 seconds | |
| set matchpairs+=<:> " specially for html | |
| " set relativenumber | |
| set previewheight=1 | |
| " Default Indentation | |
| set autoindent | |
| set smartindent " indent when | |
| set tabstop=4 " tab width | |
| set softtabstop=4 " backspace | |
| set shiftwidth=4 " indent width | |
| " set textwidth=79 | |
| " set smarttab | |
| set expandtab " expand tab to space | |
| autocmd FileType php setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120 | |
| autocmd FileType ruby setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120 | |
| autocmd FileType php setlocal tabstop=4 shiftwidth=4 softtabstop=4 textwidth=120 | |
| autocmd FileType coffee,javascript setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120 | |
| autocmd FileType python setlocal tabstop=4 shiftwidth=4 softtabstop=4 textwidth=120 | |
| autocmd FileType html,htmldjango,xhtml,haml setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=0 | |
| autocmd FileType sass,scss,css setlocal tabstop=2 shiftwidth=2 softtabstop=2 textwidth=120 | |
| au BufRead,BufNewFile *.nix set syntax=scala | |
| " syntax support | |
| autocmd Syntax javascript set syntax=jquery " JQuery syntax support | |
| " js | |
| let g:html_indent_inctags = "html,body,head,tbody" | |
| let g:html_indent_script1 = "inc" | |
| let g:html_indent_style1 = "inc" | |
| "----------------- | |
| " Plugin settings | |
| "----------------- | |
| " Rainbow parentheses for Lisp and variants | |
| let g:rbpt_colorpairs = [ | |
| \ ['brown', 'RoyalBlue3'], | |
| \ ['Darkblue', 'SeaGreen3'], | |
| \ ['darkgray', 'DarkOrchid3'], | |
| \ ['darkgreen', 'firebrick3'], | |
| \ ['darkcyan', 'RoyalBlue3'], | |
| \ ['darkred', 'SeaGreen3'], | |
| \ ['darkmagenta', 'DarkOrchid3'], | |
| \ ['brown', 'firebrick3'], | |
| \ ['gray', 'RoyalBlue3'], | |
| \ ['black', 'SeaGreen3'], | |
| \ ['darkmagenta', 'DarkOrchid3'], | |
| \ ['Darkblue', 'firebrick3'], | |
| \ ['darkgreen', 'RoyalBlue3'], | |
| \ ['darkcyan', 'SeaGreen3'], | |
| \ ['darkred', 'DarkOrchid3'], | |
| \ ['red', 'firebrick3'], | |
| \ ] | |
| let g:rbpt_max = 16 | |
| autocmd Syntax lisp,scheme,clojure,racket RainbowParenthesesToggle | |
| " tabbar | |
| let g:Tb_MaxSize = 2 | |
| let g:Tb_TabWrap = 1 | |
| hi Tb_Normal guifg=white ctermfg=white | |
| hi Tb_Changed guifg=green ctermfg=green | |
| hi Tb_VisibleNormal ctermbg=252 ctermfg=235 | |
| hi Tb_VisibleChanged guifg=green ctermbg=252 ctermfg=white | |
| " easy-motion | |
| let g:EasyMotion_leader_key = '<Leader>' | |
| " Tagbar | |
| let g:tagbar_left=1 | |
| let g:tagbar_width=30 | |
| let g:tagbar_autofocus = 1 | |
| let g:tagbar_sort = 0 | |
| let g:tagbar_compact = 1 | |
| " tag for golang | |
| " install gotags go get -u github.com/jstemmer/gotags | |
| let g:tagbar_autofocus = 1 | |
| let g:tagbar_type_go = { | |
| \ 'ctagstype' : 'go', | |
| \ 'kinds' : [ | |
| \ 'p:package', | |
| \ 'i:imports:1', | |
| \ 'c:constants', | |
| \ 'v:variables', | |
| \ 't:types', | |
| \ 'n:interfaces', | |
| \ 'w:fields', | |
| \ 'e:embedded', | |
| \ 'm:methods', | |
| \ 'r:constructor', | |
| \ 'f:functions' | |
| \ ], | |
| \ 'sro' : '.', | |
| \ 'kind2scope' : { | |
| \ 't' : 'ctype', | |
| \ 'n' : 'ntype' | |
| \ }, | |
| \ 'scope2kind' : { | |
| \ 'ctype' : 't', | |
| \ 'ntype' : 'n' | |
| \ }, | |
| \ 'ctagsbin' : 'gotags', | |
| \ 'ctagsargs' : '-sort -silent' | |
| \ } | |
| " Nerd Tree | |
| let NERDChristmasTree=0 | |
| let NERDTreeWinSize=30 | |
| let NERDTreeChDirMode=2 | |
| let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$'] | |
| " let NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\~$'] | |
| let NERDTreeShowBookmarks=1 | |
| let NERDTreeWinPos = "right" | |
| " nerdcommenter | |
| let NERDSpaceDelims=1 | |
| " nmap <D-/> :NERDComToggleComment<cr> | |
| let NERDCompactSexyComs=1 | |
| " powerline | |
| "let g:Powerline_symbols = 'fancy' | |
| " NeoComplCache | |
| let g:neocomplcache_enable_at_startup=1 | |
| let g:neoComplcache_disableautocomplete=1 | |
| "let g:neocomplcache_enable_underbar_completion = 1 | |
| "let g:neocomplcache_enable_camel_case_completion = 1 | |
| let g:neocomplcache_enable_smart_case=1 | |
| let g:neocomplcache_min_syntax_length = 3 | |
| let g:neocomplcache_temporary_dir = "$HOME/.vim/tmp/neocomplcache" | |
| let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*' | |
| " set completeopt-=preview | |
| set completeopt=menu,menuone | |
| " imap <C-k> <Plug>(neocomplcache_snippets_force_expand) | |
| " smap <C-k> <Plug>(neocomplcache_snippets_force_expand) | |
| imap <C-l> <Plug>(neocomplcache_snippets_force_jump) | |
| smap <C-l> <Plug>(neocomplcache_snippets_force_jump) | |
| " Enable omni completion. | |
| autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS | |
| autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags | |
| autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS | |
| autocmd FileType c setlocal omnifunc=ccomplete#Complete | |
| if !exists('g:neocomplcache_omni_patterns') | |
| let g:neocomplcache_omni_patterns = {} | |
| endif | |
| let g:neocomplcache_omni_patterns.erlang = '[a-zA-Z]\|:' | |
| " SuperTab | |
| " let g:SuperTabDefultCompletionType='context' | |
| let g:SuperTabDefaultCompletionType = '<C-X><C-o>' | |
| let g:SuperTabRetainCompletionType=2 | |
| " ctrlp | |
| set wildignore+=*/tmp/*,*.so,*.o,*.a,*.obj,*.swp,*.zip,*.pyc,*.pyo,*.class,.DS_Store " MacOSX/Linux | |
| let g:ctrlp_custom_ignore = '\.git$\|\.hg$\|\.svn$' | |
| " Keybindings for plugin toggle | |
| nnoremap <F10> :set invpaste paste?<CR> | |
| set pastetoggle=<F10> | |
| nmap F :TagbarToggle<cr> | |
| nnoremap <leader>f <ESC>:TagbarToggle<cr> | |
| nmap <F8> gg=G<cr> | |
| nmap <F7> @:<cr> | |
| nmap <leader><leader>e :q!<cr> | |
| nnoremap <leader>gi :GoImports<CR> | |
| nnoremap <leader>gt :Tags<CR> | |
| nnoremap <C-e> :pclose<cr> | |
| inoremap <C-e> <ESC>:pclose<cr> | |
| nnoremap <leader>i A | |
| nnoremap <leader>d D | |
| nmap <F2> :w<cr> | |
| nmap <F1> <nop> | |
| nnoremap 0 $ | |
| nnoremap 9 0 | |
| nnoremap <leader>h 0 | |
| nnoremap <leader>l $ | |
| nnoremap <leader>jf f( | |
| nnoremap <leader>je f) | |
| nnoremap <leader>gc :Tbbd<cr> | |
| nnoremap <leader>co :copen<cr> | |
| nnoremap <leader>gg GG<cr> | |
| nnoremap <leader>p :Files<cr> | |
| nnoremap <leader>cc :cclose<cr> | |
| nnoremap <leader>n :NERDTreeToggle<cr> | |
| nnoremap <leader>go :pedit<cr> | |
| nmap <Leader>w <Plug>(easymotion-w) | |
| nmap <Leader>b <Plug>(easymotion-b) | |
| nmap <F6> :GundoToggle<cr> | |
| " When editing a file, always jump to the last cursor position | |
| autocmd BufReadPost * | |
| \ if ! exists("g:leave_my_cursor_position_alone") | | |
| \ if line("'\"") > 0 && line ("'\"") <= line("$") | | |
| \ exe "normal g'\"" | | |
| \ endif | | |
| \ endif | |
| " w!! to sudo & write a file | |
| cmap w!! %!sudo tee >/dev/null % | |
| " Quickly edit/reload the vimrc file | |
| nmap <silent> <leader>ev :e $MYVIMRC<CR> | |
| nmap <silent> <leader>sv :so $MYVIMRC<CR> | |
| "------------------ | |
| " Useful Functions | |
| "------------------ | |
| " easier navigation between split windows | |
| nnoremap <c-j> <c-w>j | |
| nnoremap <c-k> <c-w>k | |
| nnoremap <c-h> <c-w>h | |
| nnoremap <c-l> <c-w>l | |
| " eggcache vim | |
| " nnoremap ; : | |
| :command W w | |
| :command WQ wq | |
| :command Wq wq | |
| :command Q q | |
| :command Qa qa | |
| :command QA qa | |
| call plug#end() | |
| colorscheme gruvbox | |
| set guioptions= | |
| set background=dark | |
| hi CursorLine cterm=none ctermbg=DarkGrey ctermfg=White | |
| set wildignore+=vendor/** | |
| set wildignore+=output/** | |
| " ocaml completion | |
| " opam install merlin | |
| let g:opamshare = substitute(system('opam config var share'),'\n$','','''') | |
| execute "set rtp+=" . g:opamshare . "/merlin/vim" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment