diff --git a/.gitignore b/.gitignore index 55273366..53732717 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,8 @@ temp_dirs/yankring_history_v2.txt sources_forked/yankring/doc/tags sources_non_forked/tlib/doc/tags sources_non_forked/ctrlp.vim/doc/tags* -my_plugins/ -my_configs.vim +sources_non_forked/* +sources_forked/* +my_plugins/* tags .DS_Store diff --git a/my_configs.vim b/my_configs.vim new file mode 100644 index 00000000..04fb7662 --- /dev/null +++ b/my_configs.vim @@ -0,0 +1,150 @@ +source plugins_config.vim +let mapleader = ";" + +set rnu +highlight CursorLineNr guifg=#050505 +set nu +set cin ts=4 sw=4 sts=4 et acd +set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1 +set enc=utf8 +set fencs=utf8,gbk,gb2312,gb18030 +set cursorline + +" for complete +set completeopt=menu,menuone,preview,noselect,noinsert +autocmd vimenter * NERDTree +" autocmd vimenter * call system("touch .tags_root") +autocmd StdinReadPre * let s:std_in=1 +autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif +autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif + +" autocmd TextChangedI * call ale#completion#Queue() +" autocmd TextChangedI * call feedkeys("\\", 'i') + +vnoremap y "+y +noremap p "+p +" autocmd BufWritePost $MYVIMRC source $MYVIMRC + +noremap n +noremap b + +" Exuberant Ctags +" let g:tagbar_ctags_bin='/usr/bin/ctags' " Proper Ctags locations +" Universal Ctags +let g:tagbar_ctags_bin='/usr/local/bin/ctags' " Proper Ctags locations +" let g:tagbar_width=26 " Default is 40, seems too wide +" noremap y :TagbarToggle " Display panel with y (or ,y) + +" noremap +" noremap +" noremap +" noremap + +" nnoremap :!ctags -R * +" autocmd BufWritePost * call system("ctags -R *") + +set spell +set cinoptions=g0,:0,(0,W4,N-s +" " completeparameter +" inoremap ( complete_parameter#pre_complete("()") +" smap (complete_parameter#goto_next_parameter) +" imap (complete_parameter#goto_next_parameter) +" smap (complete_parameter#goto_previous_parameter) +" imap (complete_parameter#goto_previous_parameter) + + +" Specify a directory for plugins +" - Avoid using standard Vim directory names like 'plugin' +call plug#begin('~/.vim_runtime/my_plugins') + +" Make sure you use single quotes + +" YouCompleteMe + +"let g:ycm_confirm_extra_conf = 0 +"let g:ycm_auto_trigger = 0 +"" let g:ycm_global_ycm_extra_conf = '~/.vim_runtime/data/.ycm_extra_conf.py' +"let g:ycm_global_ycm_extra_conf = '~/.vim_runtime/my_plugins/YouCompleteMe/.ycm_extra_conf.py' +"" let g:ycm_global_ycm_extra_conf = '~/.vim_runtime/my_plugins/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_confirm_extra_conf/' + +"nnoremap jd :YcmCompleter GoTo +"nnoremap y :let g:ycm_auto_trigger=0 " turn off YCM +"nnoremap Y :let g:ycm_auto_trigger=1 "turn on YCM + +"" let g:ycm_add_preview_to_completeopt = 0 +"" let g:ycm_show_diagnostics_ui = 0 +"" let g:ycm_server_log_level = 'info' +"" let g:ycm_min_num_identifier_candidate_chars = 2 +"" let g:ycm_collect_identifiers_from_comments_and_strings = 1 +"" let g:ycm_complete_in_strings=1 +"" +"" set completeopt=menu,menuone +"" let g:ycm_key_invoke_completion = '' +"" noremap +"" Apply YCM FixIt +"map :YcmCompleter FixIt + +"" let g:ycm_semantic_triggers = { +"" \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{2}'], +"" \ 'cs,lua,javascript': ['re!\w{2}'], +"" \ } + +" tenfyzhong/CompleteParameter.vim +"Plug 'tenfyzhong/CompleteParameter.vim' + +Plug 'elzr/vim-json' +Plug 'airblade/vim-gitgutter' +Plug 'junegunn/vim-easy-align' +Plug 'Chiel92/vim-autoformat' +Plug 'tpope/vim-surround' +Plug 'tpope/vim-fugitive' +Plug 'majutsushi/tagbar' +Plug 'buoto/gotests-vim' +" Plug 'ycm-core/YouCompleteMe' ", { 'do': './install.py --clang-completer' } +" Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' } + +Plug 'universal-ctags/ctags' +Plug 'ludovicchabant/vim-gutentags' + +" Plug 'vim-airline/vim-airline' +" Plug 'vim-airline/vim-airline-themes' +" Plug 'altercation/vim-colors-solarized' +" Plug 'itchyny/lightline.vim' + +Plug 'voldikss/vim-translator' +" Initialize plugin system +call plug#end() + +" gutentags 搜索工程目录的标志,碰到这些文件/目录名就停止向上一级目录递归 +let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project', '.tags_root'] +" 所生成的数据文件的名称 +let g:gutentags_ctags_tagfile = '.tags' +" 将自动生成的 tags 文件全部放入 ~/.cache/tags 目录中,避免污染工程目录 +let s:vim_tags = expand('~/.cache/tags') +let g:gutentags_cache_dir = s:vim_tags +" 配置 ctags 的参数 +let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q'] +let g:gutentags_ctags_extra_args += ['--c++-kinds=+px'] +let g:gutentags_ctags_extra_args += ['--c-kinds=+px'] +" 检测 ~/.cache/tags 不存在就新建 +if !isdirectory(s:vim_tags) + silent! call mkdir(s:vim_tags, 'p') +endif + +" echodoc +set noshowmode + +" for vim-gitgutter +GitGutterEnable +GitGutterLineHighlightsEnable +GitGutterSignsEnable + +" for vim-easy-align +" Start interactive EasyAlign in visual mode (e.g. vipga) +xmap ga (EasyAlign) + +" Start interactive EasyAlign for a motion/text object (e.g. gaip) +nmap ga (EasyAlign) + +" for vim-autoformat +noremap :Autoformat diff --git a/plugins_config.vim b/plugins_config.vim new file mode 100644 index 00000000..1be306f4 --- /dev/null +++ b/plugins_config.vim @@ -0,0 +1,252 @@ +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Important: +" This requries that you install https://github.com/amix/vimrc ! +" +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + + +"""""""""""""""""""""""""""""" +" => Load pathogen paths +"""""""""""""""""""""""""""""" +let s:vim_runtime = expand(':p:h')."/.." +call pathogen#infect(s:vim_runtime.'/sources_forked/{}') +call pathogen#infect(s:vim_runtime.'/sources_non_forked/{}') +call pathogen#infect(s:vim_runtime.'/my_plugins/{}') +call pathogen#helptags() + +"""""""""""""""""""""""""""""" +" => bufExplorer plugin +"""""""""""""""""""""""""""""" +let g:bufExplorerDefaultHelp=0 +let g:bufExplorerShowRelativePath=1 +let g:bufExplorerFindActive=1 +let g:bufExplorerSortBy='name' +map o :BufExplorer + + +"""""""""""""""""""""""""""""" +" => MRU plugin +"""""""""""""""""""""""""""""" +let MRU_Max_Entries = 400 +map f :MRU + + +"""""""""""""""""""""""""""""" +" => YankStack +"""""""""""""""""""""""""""""" +let g:yankstack_yank_keys = ['y', 'd'] + +nmap yankstack_substitute_older_paste +nmap yankstack_substitute_newer_paste + + +"""""""""""""""""""""""""""""" +" => CTRL-P +"""""""""""""""""""""""""""""" +let g:ctrlp_working_path_mode = 0 + +let g:ctrlp_map = '' +map j :CtrlP +map :CtrlPBuffer + +let g:ctrlp_max_height = 20 +let g:ctrlp_custom_ignore = 'node_modules\|^\.DS_Store\|^\.git\|^\.coffee' + + +"""""""""""""""""""""""""""""" +" => ZenCoding +"""""""""""""""""""""""""""""" +" Enable all functions in all modes +let g:user_zen_mode='a' + + +"""""""""""""""""""""""""""""" +" => snipMate (beside support ) +"""""""""""""""""""""""""""""" +ino =snipMate#TriggerSnippet() +snor i=snipMate#TriggerSnippet() + + +"""""""""""""""""""""""""""""" +" => Vim grep +"""""""""""""""""""""""""""""" +let Grep_Skip_Dirs = 'RCS CVS SCCS .svn generated' +set grepprg=/bin/grep\ -nH + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => Nerd Tree +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" let g:NERDTreeWinPos = "right" +let g:NERDTreeWinPos = "left" +let NERDTreeShowHidden=1 +let NERDTreeIgnore = ['\.pyc$', '__pycache__'] +let g:NERDTreeWinSize=40 +map nn :NERDTreeToggle +map nb :NERDTreeFromBookmark +map nf :NERDTreeFind + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => vim-multiple-cursors +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +let g:multi_cursor_use_default_mapping=0 + +" Default mapping +let g:multi_cursor_start_word_key = '' +let g:multi_cursor_select_all_word_key = '' +let g:multi_cursor_start_key = 'g' +let g:multi_cursor_select_all_key = 'g' +let g:multi_cursor_next_key = '' +let g:multi_cursor_prev_key = '' +let g:multi_cursor_skip_key = '' +let g:multi_cursor_quit_key = '' + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => surround.vim config +" Annotate strings with gettext +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +vmap Si S(i_f) +au FileType mako vmap Si S"i${ _(2f"a) } + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => lightline +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +let g:lightline = { + \ 'colorscheme': 'wombat', + \ } + +let g:lightline = { + \ 'colorscheme': 'wombat', + \ 'active': { + \ 'left': [ ['mode', 'paste'], + \ ['fugitive', 'readonly', 'filename', 'modified'] ], + \ 'right': [ [ 'lineinfo' ], ['percent'] ] + \ }, + \ 'component': { + \ 'readonly': '%{&filetype=="help"?"":&readonly?"🔒":""}', + \ 'modified': '%{&filetype=="help"?"":&modified?"+":&modifiable?"":"-"}', + \ 'fugitive': '%{exists("*fugitive#head")?fugitive#head():""}' + \ }, + \ 'component_visible_condition': { + \ 'readonly': '(&filetype!="help"&& &readonly)', + \ 'modified': '(&filetype!="help"&&(&modified||!&modifiable))', + \ 'fugitive': '(exists("*fugitive#head") && ""!=fugitive#head())' + \ }, + \ 'separator': { 'left': ' ', 'right': ' ' }, + \ 'subseparator': { 'left': ' ', 'right': ' ' } + \ } + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => Vimroom +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +let g:goyo_width=100 +let g:goyo_margin_top = 2 +let g:goyo_margin_bottom = 2 +nnoremap z :Goyo + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => Vim-go +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +let g:go_fmt_command = "goimports" +let g:go_highlight_types = 1 +let g:go_highlight_functions = 1 +let g:go_highlight_function_calls = 1 +let g:go_highlight_operators = 1 +let g:go_highlight_extra_types = 1 +let g:go_highlight_build_constraints = 1 +let g:go_highlight_generate_tags = 1 + + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => Syntastic (syntax checker) +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +""始终开启标志列 +let g:ale_set_highlights = 1 +let g:ale_set_signs = 1 +let g:ale_sign_column_always = 1 +" let g:ale_sign_column_always = 1 +" let g:ale_set_highlights = 0 +"自定义error和warning图标 +let g:ale_sign_error = '✗' +let g:ale_sign_warning = '⚡ ' +""在vim自带的状态栏中整合ale +let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK'] +"显示Linter名称,出错或警告等相关信息 +let g:ale_echo_msg_error_str = 'E' +let g:ale_echo_msg_warning_str = 'W' +let g:ale_echo_msg_format = '[%linter%] [%severity%] %s %code: %%s' + +""普通模式下,sp前往上一个错误或警告,sn前往下一个错误或警告 +nmap sp (ale_previous_wrap) +nmap sn (ale_next_wrap) +"s触发/关闭语法检查 +"nmap s :ALEToggle +""d查看错误或警告的详细信息 +nmap d :ALEDetail + +" Set this. Airline will handle the rest. +let g:airline#extensions#ale#enabled = 1 +let g:airline#extensions#tabline#formatter = 'default' +let g:airline#extensions#tabline#left_sep = ' ' +let g:airline#extensions#tabline#left_alt_sep = '|' +let g:airline_theme='dark' + +" Enable completion where available. +" let g:ale_completion_enabled = 1 +let g:ale_completion_delay = 500 +let g:ale_echo_delay = 20 +let g:ale_lint_delay = 500 +let g:ale_c_parse_compile_commands=1 +" 离开 insert 模式的时候运行 linter +let g:ale_lint_on_insert_leave = 1 +let g:ale_c_cppcheck_options = '--enable=all' +let g:ale_cpp_cppcheck_options = '--enable=all' + +let g:ale_linters_explicit = 1 +let g:ale_lint_on_insert_leave = 1 +let g:ale_c_gcc_options = '-Wall -O2 -std=c99' +let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14' + + +let g:ale_linters = { +\ 'make': ['make', 'checkmake'], +\ 'cmake': ['cmake', 'cmakelint'], +\ 'c': ['c', "gcc", "clangd", "cppcheck", "clang"], +\ 'cpp': ['cpp', "gcc", "clangd", "clang", "cppcheck", "cpplint"], +\ 'javascript': ['jshint'], +\ 'python': ['flake8'], +\ 'go': ['go', 'golangserver', 'go vet', 'golint', 'errcheck'] +\} + +nmap a (ale_next_wrap) + +" Disabling highlighting +let g:ale_set_highlights = 0 + +" Only run linting when saving the file +let g:ale_lint_on_text_changed = 'never' +let g:ale_lint_on_enter = 0 + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => Git gutter (Git diff) +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +let g:gitgutter_enabled=1 +nnoremap d :GitGutterToggle + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => Tagbar (TagbarToggle) +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +nmap :TagbarToggle +nnoremap tt :TagbarToggle + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" => gotests-vim +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +let g:gotests_bin = s:vim_runtime.'/bin/gotests'