vim配置
2015-11-24 19:13
405 查看
最近重拾vim,下定决心要好好学习一下vim了(不知道这次能坚持几天。。。)
基本配置,参考
http://blog.csdn.net/cbffyx/article/details/8998238 Vim IDE配置,详细教程
http://blog.csdn.net/wooin/article/details/1858917 手把手教你把Vim改装成一个IDE编程环境(图文)
全能补全
http://blog.csdn.net/g_brightboy/article/details/19498983
下载OmniCppComplete,
autoload/* -> ~/.vim/autoload/
doc/* -> ~/.vim/doc/
after/* -> ~/.vim/after/ 放到对应目录下(http://blog.csdn.net/g_brightboy/article/details/19498983)
出现错误:全能补全,找不到模式,查了一下http://blog.csdn.net/ordeder/article/details/17473105
需要重新生成一下tags
supertab按照吴垠博客中的设置
project插件配置
http://www.cnblogs.com/eddy-he/archive/2012/09/08/2676326.html
自动补全设置
http://blog.csdn.net/g_brightboy/article/details/19498983
一键编译运行 http://www.oschina.net/code/snippet_574132_13351
复制黏贴快捷键
map <C-c> "+y
map <C-v> "+p
附上vimrc配置代码
View Code
在eclipse中使用viplugin
部分快捷键冲突
设置几个喜欢的快捷键,由于eclipse已经设置了这些快捷键,但我们在vi里使用习惯了,所以还需要自己设置为vi模式的快捷键,
方法是:Window --> Preferences --> Keys, 在Scheme里选择viPlugin, 对Category进行排序,找到Category是ViPlugin的几项,
我喜欢设置:(如果有冲突,则把其他项修改为其它快捷键)http://www.cppblog.com/binger/archive/2014/01/02/205122.html
基本配置,参考
http://blog.csdn.net/cbffyx/article/details/8998238 Vim IDE配置,详细教程
http://blog.csdn.net/wooin/article/details/1858917 手把手教你把Vim改装成一个IDE编程环境(图文)
全能补全
http://blog.csdn.net/g_brightboy/article/details/19498983
下载OmniCppComplete,
autoload/* -> ~/.vim/autoload/
doc/* -> ~/.vim/doc/
after/* -> ~/.vim/after/ 放到对应目录下(http://blog.csdn.net/g_brightboy/article/details/19498983)
出现错误:全能补全,找不到模式,查了一下http://blog.csdn.net/ordeder/article/details/17473105
需要重新生成一下tags
supertab按照吴垠博客中的设置
project插件配置
http://www.cnblogs.com/eddy-he/archive/2012/09/08/2676326.html
自动补全设置
http://blog.csdn.net/g_brightboy/article/details/19498983
一键编译运行 http://www.oschina.net/code/snippet_574132_13351
复制黏贴快捷键
map <C-c> "+y
map <C-v> "+p
附上vimrc配置代码
source ~/.vim/bundles.vim " encoding dectection set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1 " enable filetype dectection and ft specific plugin/indent filetype plugin indent on " enable syntax hightlight and completion syntax on "-------- " Vim UI "-------- " color scheme set background=dark color candy set ruler " 显示标尺 " highlight current line au WinLeave * set nocursorline nocursorcolumn au WinEnter * set cursorline cursorcolumn set cursorline cursorcolumn " search set incsearch "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 " 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 " 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 coffee if executable('coffeetags') let g:tagbar_type_coffee = { \ 'ctagsbin' : 'coffeetags', \ 'ctagsargs' : '', \ 'kinds' : [ \ 'f:functions', \ 'o:object', \ ], \ 'sro' : ".", \ 'kind2scope' : { \ 'f' : 'object', \ 'o' : 'object', \ } \ } let g:tagbar_type_markdown = { \ 'ctagstype' : 'markdown', \ 'sort' : 0, \ 'kinds' : [ \ 'h:sections' \ ] \ } endif " 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 " ZenCoding let g:user_emmet_expandabbr_key='<C-j>' " 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_lock_buffer_name_pattern = '\*ku\*' set completeopt-=preview 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 python setlocal omnifunc=pythoncomplete#Complete 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-U>' 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 <F2> :set invpaste paste?<CR> set pastetoggle=<F2> nmap <F5> :TagbarToggle<cr> nmap <F6> :NERDTreeToggle<cr> nmap <F3> :GundoToggle<cr> nmap <F4> :IndentGuidesToggle<cr> nmap <D-/> : nnoremap <leader>a :Ack nnoremap <leader>v V`] "------------------ " 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 " 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> " sublime key bindings nmap <D-]> >> nmap <D-[> << vmap <D-[> <gv vmap <D-]> >gv " eggcache vim nnoremap ; : :command W w :command WQ wq :command Wq wq :command Q q :command Qa qa :command QA qa " for macvim if has("gui_running") set go=aAce " remove toolbar "set transparency=30 "set guifont=Bitstream\charter:12 set gfn=Bitstream\ Vera\ Sans\ Mono\ 30 set showtabline=2 set columns=140 set lines=40 noremap <D-M-Left> :tabprevious<cr> noremap <D-M-Right> :tabnext<cr> map <D-1> 1gt map <D-2> 2gt map <D-3> 3gt map <D-4> 4gt map <D-5> 5gt map <D-6> 6gt map <D-7> 7gt map <D-8> 8gt map <D-9> 9gt map <D-0> :tablast<CR> endif "--ctags setting-- " 按下F5重新生成tag文件,并更新taglist map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR> imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR> set tags=tags set tags+=./tags "add current directory's generated tags file set tags+=~/liuyanjie/code/tags "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件) "-- Taglist setting -- let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行 let Tlist_Use_Right_Window=1 "让窗口显示在右边,0的话就是显示在左边 let Tlist_Show_One_File=0 "让taglist可以同时展示多个文件的函数列表 let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏 let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动推出vim "是否一直处理tags.1:处理;0:不处理 let Tlist_Process_File_Always=1 "实时更新tags let Tlist_Inc_Winwidth=0 "默认打开Tlist let Tlist_Auto_Open=1 set tags=tags; "-- WinManager setting -- let g:winManagerWindowLayout='FileExplorer|TagList' " 设置我们要管理的插件 "let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim nmap wm :WMToggle<cr> " -- MiniBufferExplorer -- let g:miniBufExplMapWindowNavVim = 1 " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口 let g:miniBufExplMapWindowNavArrows = 1 " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口 let g:miniBufExplMapCTabSwitchBufs = 1 " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持 "let g:miniBufExplMapCTabSwitchWindows = 1 " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像不支持 let g:miniBufExplModSelTarget = 1 " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer "--fold setting 折叠设置-- set foldmethod=syntax " 用语法高亮来定义折叠 set foldlevel=100 " 启动vim时不要自动折叠代码 set foldcolumn=5 " 设置折叠栏宽度 "-- QuickFix setting -- " 按下F6,执行make clean map <F6> :make clean<CR><CR><CR> " 按下F7,执行make编译程序,并打开quickfix窗口,显示编译信息 map <F7> :make<CR><CR><CR> :copen<CR><CR> " 按下F8,光标移到上一个错误所在的行 map <F8> :cp<CR> " 按下F9,光标移到下一个错误所在的行 map <F9> :cn<CR> " 以上的映射是使上面的快捷键在插入模式下也能用 imap <F6> <ESC>:make clean<CR><CR><CR> imap <F7> <ESC>:make<CR><CR><CR> :copen<CR><CR> imap <F8> <ESC>:cp<CR> imap <F9> <ESC>:cn<CR> "-- Cscope setting -- if has("cscope") set csprg=/usr/bin/cscope " 指定用来执行cscope的命令 set csto=0 " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库 set cst " 同时搜索cscope数据库和标签文件 set cscopequickfix=s-,c-,d-,i-,t-,e- " 使用QuickFix窗口来显示cscope查找结果 set nocsverb if filereadable("cscope.out") " 若当前目录下存在cscope数据库,添加该数据库到vim cs add cscope.out elseif $CSCOPE_DB != "" " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim cs add $CSCOPE_DB endif set csverb endif map <F4> :cs add ./cscope.out .<CR><CR><CR> :cs reset<CR> imap <F4> <ESC>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR> " 将:cs find c等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快再按下c) nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR> nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR> nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR> nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR> nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR> nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR> nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR> :copen<CR><CR> "ew-omni-completion配置 filetype plugin indent on set completeopt=longest,menu "supertab设置 let g:SuperTabRetainCompletionType=2 let g:SuperTabDefaultCompletionType="<C-X><C-O>" "------------------------------------------------------------------------------ " < 判断操作系统是否是 Windows 还是 Linux > "------------------------------------------------------------------------------ if(has("win32") || has("win64") || has("win95") || has("win16")) let g:iswindows = 1 else let g:iswindows = 0 endif "------------------------------------------------------------------------------ " < 判断是终端还是 Gvim > "------------------------------------------------------------------------------ if has("gui_running") let g:isGUI = 1 else let g:isGUI = 0 endif "------------------------------------------------------------------------------ " < 编译、连接、运行配置 > "------------------------------------------------------------------------------ " F9 一键保存、编译、连接存并运行 map <F9> :call Run()<CR> imap <F9> <ESC>:call Run()<CR> " Ctrl + F9 一键保存并编译 map <c-F9> :call Compile()<CR> imap <c-F9> <ESC>:call Compile()<CR> " Ctrl + F10 一键保存并连接 map <c-F10> :call Link()<CR> imap <c-F10> <ESC>:call Link()<CR> let s:LastShellReturn_C = 0 let s:LastShellReturn_L = 0 let s:ShowWarning = 1 let s:Obj_Extension = '.o' let s:Exe_Extension = '.exe' let s:Sou_Error = 0 let s:windows_CFlags = 'gcc\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o' let s:linux_CFlags = 'gcc\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o' let s:windows_CPPFlags = 'g++\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o' let s:linux_CPPFlags = 'g++\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o' func! Compile() exe ":ccl" exe ":update" if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx" let s:Sou_Error = 0 let s:LastShellReturn_C = 0 let Sou = expand("%:p") let Obj = expand("%:p:r").s:Obj_Extension let Obj_Name = expand("%:p:t:r").s:Obj_Extension let v:statusmsg = '' if !filereadable(Obj) || (filereadable(Obj) && (getftime(Obj) < getftime(Sou))) redraw! if expand("%:e") == "c" if g:iswindows exe ":setlocal makeprg=".s:windows_CFlags else exe ":setlocal makeprg=".s:linux_CFlags endif echohl WarningMsg | echo " compiling..." silent make elseif expand("%:e") == "cpp" || expand("%:e") == "cxx" if g:iswindows exe ":setlocal makeprg=".s:windows_CPPFlags else exe ":setlocal makeprg=".s:linux_CPPFlags endif echohl WarningMsg | echo " compiling..." silent make endif redraw! if v:shell_error != 0 let s:LastShellReturn_C = v:shell_error endif if g:iswindows if s:LastShellReturn_C != 0 exe ":bo cope" echohl WarningMsg | echo " compilation failed" else if s:ShowWarning exe ":bo cw" endif echohl WarningMsg | echo " compilation successful" endif else if empty(v:statusmsg) echohl WarningMsg | echo " compilation successful" else exe ":bo cope" endif endif else echohl WarningMsg | echo ""Obj_Name"is up to date" endif else let s:Sou_Error = 1 echohl WarningMsg | echo " please choose the correct source file" endif exe ":setlocal makeprg=make" endfunc func! Link() call Compile() if s:Sou_Error || s:LastShellReturn_C != 0 return endif let s:LastShellReturn_L = 0 let Sou = expand("%:p") let Obj = expand("%:p:r").s:Obj_Extension if g:iswindows let Exe = expand("%:p:r").s:Exe_Extension let Exe_Name = expand("%:p:t:r").s:Exe_Extension else let Exe = expand("%:p:r") let Exe_Name = expand("%:p:t:r") endif let v:statusmsg = '' if filereadable(Obj) && (getftime(Obj) >= getftime(Sou)) redraw! if !executable(Exe) || (executable(Exe) && getftime(Exe) < getftime(Obj)) if expand("%:e") == "c" setlocal makeprg=gcc\ -o\ %<\ %<.o echohl WarningMsg | echo " linking..." silent make elseif expand("%:e") == "cpp" || expand("%:e") == "cxx" setlocal makeprg=g++\ -o\ %<\ %<.o echohl WarningMsg | echo " linking..." silent make endif redraw! if v:shell_error != 0 let s:LastShellReturn_L = v:shell_error endif if g:iswindows if s:LastShellReturn_L != 0 exe ":bo cope" echohl WarningMsg | echo " linking failed" else if s:ShowWarning exe ":bo cw" endif echohl WarningMsg | echo " linking successful" endif else if empty(v:statusmsg) echohl WarningMsg | echo " linking successful" else exe ":bo cope" endif endif else echohl WarningMsg | echo ""Exe_Name"is up to date" endif endif setlocal makeprg=make endfunc func! Run() let s:ShowWarning = 0 call Link() let s:ShowWarning = 1 if s:Sou_Error || s:LastShellReturn_C != 0 || s:LastShellReturn_L != 0 return endif let Sou = expand("%:p") let Obj = expand("%:p:r").s:Obj_Extension if g:iswindows let Exe = expand("%:p:r").s:Exe_Extension else let Exe = expand("%:p:r") endif if executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou) redraw! echohl WarningMsg | echo " running..." if g:iswindows exe ":!%<.exe" else if g:isGUI exe ":!gnome-terminal -e ./%<" else exe ":!./%<" endif endif redraw! echohl WarningMsg | echo " running finish" endif endfunc map <C-A> ggVG$"+y map <C-v> "*pa imap <C-v> <Esc>"*pa vmap <C-c> "+y map <C-c> "+y map <C-v> "+p
View Code
在eclipse中使用viplugin
部分快捷键冲突
设置几个喜欢的快捷键,由于eclipse已经设置了这些快捷键,但我们在vi里使用习惯了,所以还需要自己设置为vi模式的快捷键,
方法是:Window --> Preferences --> Keys, 在Scheme里选择viPlugin, 对Category进行排序,找到Category是ViPlugin的几项,
我喜欢设置:(如果有冲突,则把其他项修改为其它快捷键)http://www.cppblog.com/binger/archive/2014/01/02/205122.html
相关文章推荐
- Bootstrap历练实例:导航内下拉菜单的用法
- 10.26~11.23刷题(shui)记录
- Python 性能分析入门指南
- ibatis源码分析—运行流程解析(二)
- ClassLoader工作机制介绍(整理版)
- Deep learning论文笔记一:ImageNet Classification with Deep Convolutional Neural Networks
- 简洁代码之道(1):用多态替代条件语句
- jquery 首页轮播插件 icarouselbox.js
- DZNEmptyDataSet customViewForEmptyDataSet: 1.7.1版本 点击事件无法响应
- Wireshark实战分析之IP协议(四)
- Reg注册表的一些使用方法
- BIOS在内存中加载中断向量表和中断服务程序
- C 位运算符
- C++ socket编程
- 南大软院大神养成计划--js
- Deep learning:四十一(Dropout简单理解)
- PS
- iphone开发基础:loadView/viewDidLoad/initWithNibName/awakeFromNib/initWithCoder的用法
- label.lineBreakMode设置lable中文字过长时的显示格式,其中可以有末尾以省略号显示。
- 为tomcat 创建定时 任务 关闭 重启