前言
关于IDE就不用对多说了,那么在Linux下怎么把vim配置成一个轻量级的“IDE”呢?今天就教大家方法。(⊙o⊙)…其实百度一下就可以出来了,不过我这里吧我在配置时遇到了些问题写出来,避免绕弯路。。。。
貌似还有一个比较NB的 YouCompleteMe 。。
Pathogen,这是一个用来管理插件的插件
github: https://github.com/tpope/vim-pathogengit clone https://github.com/tpope/vim-pathogen.git
Syntastic,用来检测语法错误的
github: https://github.com/vim-syntastic/syntasticgit clone https://github.com/vim-syntastic/syntastic.git
Auto Pairs,自动补全括号,如()、{}
github: https://github.com/jiangmiao/auto-pairsgit clone https://github.com/jiangmiao/auto-pairs.git
NERD Commenter,代码注释作用
github: https://github.com/scrooloose/nerdcommentergit clone https://github.com/scrooloose/nerdcommenter.git
用法(摘自互联网:
\cc 注释当前行和选中行
\cn 貌似和 \cc一样。。
\c<空格> 如果被选区域有部分被注释,则对被选区域执行取消注释操作,其它情况执行反转注释操作
\cm 对被选区域用一对注释符进行注释,前面的注释对每一行都会添加注释
\ci 执行反转注释操作,选中区域注释部分取消注释,非注释部分添加注释
\cs 添加性感的注释,代码开头介绍部分通常使用该注释
\cy 添加注释,并复制被添加注释的部分
\c$ 注释当前光标到改行结尾的内容
\cA 跳转到该行结尾添加注释,并进入编辑模式
\ca 转换注释的方式,比如: //和//
\cl \cb 左对齐和左右对其,左右对其主要针对//
\cu 取消注释
Snipmate,这玩意相当与补全吧git clone https://github.com/garbas/vim-snipmate.git
NERDTree 和 Taglist
nerdtree: git clone https://github.com/scrooloose/nerdtree.git
taglist 官网: http://www.vim.org/scripts/script.php?script_id=273 ,我下载的是 4.6 版本的
NERDTree用法(摘自互联网:
文件相关操作
o : 在光标所在的上一个窗口打开文件,并将光标置于新打开的窗口
go : 预览文件,光标停留在NERDTree窗口中
t : 在新标签中打开文件并激活
gt : 在新标签打开文件,光标留在NERDTree窗口中
i : 水平分割打开文件
gi : 水平分割预览
s : 垂直分割打开文件
gs : 垂直分割预览
目录树相关操作
o : 展开/关闭目录
O : 递归展开目录。慎用,如果目录层级多,打开会很慢
x : 关闭父目录
C : 切换光标所在目录为根目录
u : 切换目录树的根目录为上层目录
U : 切换目录树的根目录为上层目录,并保持旧的目录树的状态
r : 刷新当前目录
R : 刷新当前根目录(这个在新加入文件后会用到)
cd : 切换vim工作目录为光标所在目录(命令模式下:pwd可查看当前工作目录)
快捷键
ctrl + w + w 光标自动在左右窗口切换
ctrl + w + l 光标 移动到右侧窗口
ctrl + w + h 光标移动到左侧窗口
ctrl + w + r 切换NERDTree窗口位置(左或右)
或
ctrl+w+(↑ 、↓ 、← 、→)
OmniComplete,C++ 的补全功能,同时还要下载 cpp_src文件夹
OmniComplete: http://www.vim.org/scripts/script.php?script_id=1520
cpp_src: http://www.vim.org/scripts/script.php?script_id=2358
SuperTab(这货挺好的,按下tab键就可以补全变量名或函数名,不过却不能通过tab键输入制表符了(然后可以映射其他键输出制表符),所以我没用)
github: https://github.com/ervandew/supertabgit clone https://github.com/ervandew/supertab.git
当然,还有一些像 MiniBufferExplorer、UndoTree、GDBMgr 大家可以百度百度。。。。。。(⊙﹏⊙)b,其实我也木有用到这几个
apt-get install vim-addon-mw-utils
apt-get install vim-tlib
apt-get install ctags
假定我把这些插件放在 ~/vim_plugins 目录下
cd ~/vim_plugins
先安装 pathogen
1.把 pathogen/autoload 的文件夹复制到 ~/.vim/ 下
2.mkdir ~/.vim/bundle #以后只需把插件文件夹放到这个bundle文件夹
接着 Syntastic
cp -r syntastic/ ~/.vim/bundle/
Auto Pairs
cp -r auto-pairs/ ~/.vim/bundle/
NERD Commenter
cp -r nerdcommenter/ ~/.vim/bundle/
Snipmate
cp -r snipMate/ ~/.vim/bundle/
NERDTree 和 Taglist
cp -r nerdtree/ ~/.vim/bundle/
cp -r taglist/ ~/.vim/bundle/
OmniComplete
cp -r omnicppcomplete/ ~/.vim/bundle/
这时别忘了那个解压下来的cpp_src文件夹,进入到cpp_src目录
cd ~/vim_plugins/cpp_src
执行如下命令ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++
生成 tags 文件,再把cpp_src文件夹复制到~/.vim/tags/下(tags直接新建)
最后,再来看下 .vimrc 文件
"设置 cpp_src/tags 文件的路径
set tags+=~/.vim/tags/cpp_src/tags
set modelines=0
"设置更好的删除
set backspace=2
syntax on "语法高亮
"用浅色高亮当前行
autocmd InsertLeave * se nocul
autocmd InsertEnter * se cul
set smartindent "智能对齐
set autoindent "自动对齐
set confirm "在处理未保存或只读文件的时候,弹出确认框
set tabstop=4 "tab键的宽度
set softtabstop=4
set shiftwidth=4 "统一缩进为4
set expandtab "不要用空格替代制表符
set number "显示行号
set history=50 "历史纪录数
set hlsearch
set incsearch "搜素高亮,搜索逐渐高亮
set gdefault "行内替换
set encoding=utf-8
set fileencodings=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf-16,big5,euc-jp,latin1 "编码设置
set guifont=Menlo:h16:cANSI "设置字体
set langmenu=zn_CN.UTF-8
set helplang=cn "语言设置
set ruler "在编辑过程中,在右下角显示光标位置的状态行
set laststatus=1 "总是显示状态行
set showcmd "在状态行显示目前所执行的命令,未完成的指令片段也会显示出来
set scrolloff=3 "光标移动到buffer的顶部和底部时保持3行的距离
set showmatch "高亮显示对应的括号
set matchtime=5 "对应括号高亮时间(单位是十分之一秒)
set autowrite "在切换buffer时自动保存当前文件
set wildmenu "增强模式中的命令行自动完成操作
set linespace=2 "字符间插入的像素行数目
set whichwrap=b,s,<,>,[,] "开启normal 或visual模式下的backspace键空格键,左右方向键,insert或replace模式下的左方向键,右方向键的跳行功能
filetype plugin indent on "分为三部分命令:file on,file plugin on,file indent on 分别是自动识别文件类型, 用用文件类型脚本,使用缩进定义文件
set foldenable "允许折叠
set cursorline "突出显示当前行
set magic "设置魔术?神马东东
set ignorecase "搜索忽略大小写
filetype on "打开文件类型检测功能
set background=dark
set t_Co=256 "256色
set mouse=v "允许鼠标
"===============================
execute pathogen#infect()
syntax on
filetype plugin indent on
filetype plugin on
"启动vim显示nerdtree
autocmd VimEnter * NERDTree
" 按下 ctrl+b 显示/隐藏 NERDTree
map <C-b> :NERDTreeToggle<CR>
" 将 NERDTree 的窗口设置在 vim 窗口的右侧(默认为左侧)
let NERDTreeWinPos="left"
"设置 NERDTree 窗口宽度
let NERDTreeWinSize=30
"这个设置 ctags 的路径,如果是 apt-get install 安装的,省略
" let Tlist_Ctags_Cmd = ...
let Tlist_Show_One_File=1 "只展示一个文件的taglist
let Tlist_Exit_OnlyWindow=1 " 当taglist是最后以个窗口时自动退出
let Tlist_Use_Right_Window=1 " 在右边显示taglist窗口
let Tlist_Sort_Type="name" " tag按名字排序
let Tlist_Auto_Open=1 "自动打开 taglist
"让当前不被编辑的文件的方法列表自动折叠起来
let Tlist_File_Fold_Auto_Close=1
"按Ctrl+M键显示/隐藏Taglist
map <C-m> :TlistToggle<CR>
autocmd VimEnter * TlistToggle
"只有安装了supertab插件才管用
"let g:SuperTabMappingBackward= "<tab>"
"let g:SuperTabMappingForward = "c-tab"
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " 显示函数参数列表
let OmniCpp_MayCompleteDot = 1 " 输入 . 后自动补全
let OmniCpp_MayCompleteArrow = 1 " 输入 -> 后自动补全
let OmniCpp_MayCompleteScope = 1 " 输入 :: 后自动补全
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
set completeopt=menuone,menu,longest
"================================
I’m Frazer ! fantabulous!!!