后面转入linux开发环境后一直也是用si(通过wine安装)但是很不稳定,经常会出各种问题死掉。所以决定切换用vim来代替si,vim号称程序员最好用的代码编辑器,再说了,作为一个混迹多年江湖的程序猿,不去好好感受下这么优秀工具,岂不是暴殄天物?
网上找了很多资料,终于搭建了自己的 vim “IDE”,用了一段时间了,感觉还不错 ~
整合的主要功能有:
1、各自目录树、符号列表、搜索窗口切换定义;
2、ctags + cscope支持,而且 各个打开的vim工程独立不干扰,存放到~/.ctags/ 目录下;
3、保存当前vim配置,下次打开vim还是原来的配置,方便使用,而且最关键的是各个vim工程独立,同样保存在~/.ctags/目录下;
5、各种常用必备插件已配置;
6、其它详细部分见vimrc配置吧;
下面贴出来分享下。
整合好的地址:
git clone https://github.com/guomingyi/vim-warper.git
相关快捷键配置:
- # Install@H_301_34@
- ########################################@H_301_34@
- cp -a .vim ~/.vim
- cp -a .vimrc ~/.vimrc
- # Ctags:@H_301_34@
- cd ~/.vim/depends/
- unzip ctags-5.8.zip
- cd ctags-5.8
- ./configure
- make
- sudo make install
- # Cscope:@H_301_34@
- 参考Ctags步骤.
- ##################[快捷键定义]#################@H_301_34@
- # 窗口类:@H_301_34@
- f2 鼠标使能切换
- \f2 行号显示切换
- f3 tagbarlist
- \f3 NERDTree
- f4 Ctrlp,文件模糊搜索,也可按ctrl+p打开,按esc退出
- \f4 MRU,文件打开历史记录,可保存
- f5 make tags,用于查看代码进入函数跳转,支持多目录加载
- \f5 make cscope,ctags的升级,功能更强大,暂不支持多目录加载
- f6 Buf exploler,当前文件打开记录缓存
- \f6 miniBufExploler,跟上一个类同
- \f7 themes switch
- # 文件跳转:@H_301_34@
- 1 跳转到上一个文件
- 2 跳转到下一个文件
- \1 关闭当前文件
- 3 quickfix列表搜索文件条状到下一个
- 4 quickfix跳转到上一个
- # 更新插件:@H_301_34@
- \3 更新插件
- # 退出:@H_301_34@
- \q 退出当前窗口
- \qa 不保存seesion.vim退出全部
- \qs 保存session.vim退出全部
- F2 同\qs
- \w :w
- # ACK搜索相关:@H_301_34@
- \s Ack 搜索,先按下\s,再输入需要搜索的字符,回车
- \f AckFile搜索,同上
- # ag 搜索@H_301_34@
- sudo apt-get install silversearcher-ag
- # Cscope相关:@H_301_34@
- cc 搜索该函数调用的函数
- cd 搜索调用该函数的函数
- cs 搜索函数
- cf 搜索文件
- ct 搜索字符串
- # 特殊命令:@H_301_34@
- # 有时候vim的历史记录会有混乱,这个时候有两种方式还原:@H_301_34@
- 1> rm -rf ~./ctags/
- 2> vim clean
打开后默认界面:
按 F3 切换显示tagbar ,\F3 切换显示nerdtree, F4 弹出ctrlp模糊搜索
按\F4 切换ctrlp-funky,模糊搜索当前文件函数,ctrlp搜索使用外部ag搜索引擎
buffer 浏览器,按F6切换
F5 执行make tags,tags的目录做了重定向,每个新打开的vim工程互不干扰。
make cscope,和ctags类同
ag搜索符号
vimrc 全配置:
- 1 @H_301_34@
- 2 @H_301_34@"##################################################################[Plugin manager]@H_301_34@
- 3 @H_301_34@" http://www.cnblogs.com/songfy/p/5635757.html @H_301_34@
- 4 @H_301_34@set@H_301_34@ rtp@H_301_34@+=~/.vim/bundle/Vundle.vim
- 5 @H_301_34@
- 6 @H_301_34@call@H_301_34@ vundle#begin@H_301_34@()@H_301_34@
- 7 @H_301_34@
- 8 @H_301_34@Plugin 'VundleVim/Vundle.vim'@H_301_34@
- 9 @H_301_34@Plugin 'tpope/vim-fugitive'@H_301_34@
- 10 @H_301_34@Plugin 'vim-scripts/winmanager'@H_301_34@
- 11 @H_301_34@Plugin 'rstacruz/sparkup'@H_301_34@,{@H_301_34@'rtp'@H_301_34@: 'vim/'@H_301_34@}@H_301_34@
- 12 @H_301_34@Plugin 'kien/ctrlp.vim'@H_301_34@
- 13 @H_301_34@Plugin 'wincent/command-t'@H_301_34@
- 14 @H_301_34@Plugin 'scrooloose/nerdtree'@H_301_34@
- 15 @H_301_34@Plugin 'majutsushi/tagbar'@H_301_34@
- 16 @H_301_34@Plugin 'jiangmiao/auto-pairs'@H_301_34@
- 17 @H_301_34@Plugin 'minibufexpl.vim'@H_301_34@
- 18 @H_301_34@Plugin 'jlanzarotta/bufexplorer'@H_301_34@
- 19 @H_301_34@Plugin 'taglist.vim'@H_301_34@
- 20 @H_301_34@Plugin 'scrooloose/nerdcommenter'@H_301_34@
- 21 @H_301_34@Plugin 'godlygeek/tabular'@H_301_34@
- 22 @H_301_34@Plugin 'plasticboy/vim-markdown'@H_301_34@
- 23 @H_301_34@Plugin 'portante/cscope'@H_301_34@
- 24 @H_301_34@Plugin 'tomasr/molokai'@H_301_34@
- 25 @H_301_34@Plugin 'yegappan/mru'@H_301_34@
- @H_404_241@ 26 @H_301_34@Plugin 'rking/ag.vim'@H_301_34@
- 27 @H_301_34@Plugin 'altercation/vim-colors-solarized'@H_301_34@
- 28 @H_301_34@Plugin 'tacahiroy/ctrlp-funky'@H_301_34@
- 29 @H_301_34@Plugin 'Lokaltog/vim-distinguished'@H_301_34@
- 30 @H_301_34@
- 31 @H_301_34@"Plugin 'Valloric/YouCompleteMe' "NEED VIM8.0+ & PYTHON3.5+ support.@H_301_34@
- 32 @H_301_34@"Plugin 'vim/vim' "vim8.0+@H_301_34@
- 33 @H_301_34@
- 34 @H_301_34@call@H_301_34@ vundle#end@H_301_34@()@H_301_34@
- 35 @H_301_34@
- 36 @H_301_34@filetype@H_301_34@ plugin@H_301_34@ indent@H_301_34@ on@H_301_34@
- 37 @H_301_34@"##################################################################[default value set]@H_301_34@
- 38 @H_301_34@modelines@H_301_34@=0
- 39 @H_301_34@backspace@H_301_34@=2 "设置更好的删除@H_301_34@
- 40 @H_301_34@Syntax@H_301_34@ on@H_301_34@ "语法高亮@H_301_34@
- 41 @H_301_34@"set noswapfile@H_301_34@
- 42 @H_301_34@"autocmd InsertLeave * se nocul "用浅色高亮当前行@H_301_34@
- 43 @H_301_34@"autocmd InsertEnter * se cul@H_301_34@
- 44 @H_301_34@cul@H_301_34@
- 45 @H_301_34@paste@H_301_34@
- 46 @H_301_34@smartindent@H_301_34@ "智能对齐@H_301_34@
- 47 @H_301_34@autoindent@H_301_34@ "自动对齐@H_301_34@
- 48 @H_301_34@confirm@H_301_34@ "在处理未保存或只读文件的时候,弹出确认框@H_301_34@
- 49 @H_301_34@tabstop@H_301_34@=4 "tab键的宽度@H_301_34@
- 50 @H_301_34@softtabstop@H_301_34@=4
- 51 @H_301_34@shiftwidth@H_301_34@=4 "统一缩进为4@H_301_34@
- 52 @H_301_34@expandtab@H_301_34@ "不要用空格替代制表符@H_301_34@
- 53 @H_301_34@
- 54 @H_301_34@history@H_301_34@=50 "历史纪录数@H_301_34@
- 55 @H_301_34@"set nohlsearch@H_301_34@
- 56 @H_301_34@hlsearch@H_301_34@
- 57 @H_301_34@incsearch@H_301_34@ "搜素高亮,搜索逐渐高亮@H_301_34@
- 58 @H_301_34@
- 59 @H_301_34@gdefault@H_301_34@ "行内替换@H_301_34@
- 60 @H_301_34@encoding@H_301_34@=utf-8
- 61 @H_301_34@fileencodings@H_301_34@=utf-8,@H_301_34@ucs-bom301_34@shift-jis301_34@gb18030301_34@gbk301_34@gb2312301_34@cp936301_34@utf-16301_34@big5301_34@euc-jp301_34@latin1 "编码设置@H_301_34@
- 62 @H_301_34@
- 63 @H_301_34@guifont@H_301_34@=Menlo:@H_301_34@h16:@H_301_34@cANSI "设置字体@H_301_34@
- 64 @H_301_34@langmenu@H_301_34@=zn_CN.UTF-8
- 65 @H_301_34@helplang@H_301_34@=cn "语言设置@H_301_34@
- 66 @H_301_34@
- 67 @H_301_34@ruler@H_301_34@ "在编辑过程中,在右下角显示光标位置的状态行@H_301_34@
- 68 @H_301_34@laststatus@H_301_34@=1 "总是显示状态行@H_301_34@
- 69 @H_301_34@showcmd@H_301_34@ "在状态行显示目前所执行的命令,未完成的指令片段也会显示出来@H_301_34@
- 70 @H_301_34@scrolloff@H_301_34@=3 "光标移动到buffer的顶部和底部时保持3行的距离@H_301_34@
- 71 @H_301_34@"set showmatch "高亮显示对应的括号@H_301_34@
- 72 @H_301_34@matchtime@H_301_34@=5 "对应括号高亮时间(单位是十分之一秒)@H_301_34@
- 73 @H_301_34@autowrite@H_301_34@ "在切换buffer时自动保存当前文件@H_301_34@
- 74 @H_301_34@wildmenu@H_301_34@ "增强模式中的命令行自动完成操作@H_301_34@
- 75 @H_301_34@linespace@H_301_34@=2 "字符间插入的像素行数目@H_301_34@
- 76 @H_301_34@whichwrap@H_301_34@=b301_34@s301_34@<@H_301_34@,98)">>@H_301_34@301_34@[301_34@] "开启normal 或visual模式下的backspace键空格键,@H_301_34@
- 77 @H_301_34@ "左右方向键,insert或replace模式下的左方向键,右方向键的跳行功能@H_301_34@
- 78 @H_301_34@
- 79 @H_301_34@"分为三部分命令:file on,file plugin on,file indent on @H_301_34@
- 80 @H_301_34@ "分别是自动识别文件类型,用用文件类型脚本,使用缩进定义文件@H_301_34@
- 81 @H_301_34@
- 82 @H_301_34@foldenable@H_301_34@ "允许折叠@H_301_34@
- 83 @H_301_34@cursorline@H_301_34@ "突出显示当前行@H_301_34@
- 84 @H_301_34@magic@H_301_34@ "设置魔术?神马东东@H_301_34@
- 85 @H_301_34@ignorecase@H_301_34@ "搜索忽略大小写@H_301_34@
- 86 @H_301_34@"filetype on "打开文件类型检测功能@H_301_34@
- 87 @H_301_34@
- 88 @H_301_34@foldmethod@H_301_34@=Syntax "使用语法高亮定义代码折叠: zc 折叠,zo 展开@H_301_34@
- 89 @H_301_34@foldlevelstart@H_301_34@=99 "打开文件是默认不折叠代码@H_301_34@
- 90 @H_301_34@
- 91 @H_301_34@"set mouse= "鼠标默认值@H_301_34@
- 92 @H_301_34@"set number "显示行号@H_301_34@
- 93 @H_301_34@
- 94 @H_301_34@" 自动切换vim工作目录@H_301_34@
- 95 @H_301_34@" set autochdir@H_301_34@
- 96 @H_301_34@" :cd 改变vim的当前工作路径@H_301_34@
- 97 @H_301_34@" :lcd 改变当前窗口的工作路径@H_301_34@
- 98 @H_301_34@" :pwd 查看当前的工作路径@H_301_34@
- 99 @H_301_34@
- 100 @H_301_34@behave@H_301_34@ mswin@H_