正所谓“工欲善其事,必先利其器”,而作为一个专业的码农,怎么能不好好对待自己编程的利器-- VIM 编辑器呢!可能读者会说编程的利器不应该是各种语言的集成工具么?像编写 C/C++ 程序的 VS,Codeblock(跨平台)软件,像编写 Java 程序的 Eclipse(现在已经有支持 C/C++/Python 的插件),像编写 Python 程序的 PyCharm 等。这些人性化的开发集成环境功能强大,使用方便。不过成也在此,败也在此。本文将详细介绍Vim编辑器以及其基本入门级配置。
简介
正所谓“工欲善其事,必先利其器”,而作为一个专业的码农,怎么能不好好对待自己的编程利器-- VIM 编辑器呢!可能读者会说编程的利器不应该是各种语言的集成工具么?像编写 C/C++程序的 VS,Codeblock(跨平台)软件,像编写 Java 程序的 Eclipse(现在已经有支持 C/C++/Python 的插件),像编写 Python 程序的 PyCharm 等。这些人性化的开发集成环境功能强大,使用方便。不过我觉得成也在此,败也在此。
- 功能冗余
现在编程的集成环境工具非常强大,但是很多功能我们都用不到,反而每次开启都花费很长时间。所以集成环境并不适合专业的码农。我们经常说适合自己的才是最好的,编程利器更是如此,毕竟它每天不离手。 - 定制化太低 基本上每个集成开发工具都没有留太多的定制空间给用户,而用户只能习惯软件供应商提供的大众化用法。对于熟悉多种语言的用户而言,它得掌握多种开发集成环境,还不如用Vim解决所有。
- 鼠标和键盘的混合使用
其实这一点仁者见仁,智者见智吧。个人觉得高效编程还是需要手不离键盘的,要熟练掌握一些基本的快捷键的使用。
基本的 Vim 说白了就是一个文本编辑器,不过它的强大之处在于它庞大的插件。这些插件可以让Vim能够干很多牛x的事,这跟 Google 浏览器有点像。像代码补全,错误跳转,高亮显示等等,Vim 都有相应的插件来处理,用户可以自行了解,自由组合。所以 Vim 的入门门槛还是蛮高的,主要是开始学得命令比较多,这里有推荐个玩游戏记命令的网址以及Vim学习指南。此外打造一个适合自己的 Vim 环境将会大大节约时间,是磨刀不误砍柴工的。下面就来看看基础入门级的Vim插件配置。
基本配置
安装 vim,scripts,doc
sudo apt-get install vim vim-scripts vim-doc
Tips:
- vim vim软件,安装目录是/usr/share/vim
- vim-scripts vim的基本插件,包括语法高亮等,安装目录是/usr/share/vim-scripts
- vim-doc vim帮助文件,不过是英文版本的
中文帮助文档
- 下载最新版本的vim中文帮助文档
- 解压 doc 文件夹到 ~/.vim 目录下
配置 ~/.vimrc 文件
配置个性化的 .vimrc(不懂的命令可以用
:help command
查看中文帮助文档)
实用插件
Vim 的插件很多,而且功能很强大,非常强大。官网的插件地址在这里,不过它的很多插件都转移到 Github 上。
ctags
ctags 可以建立源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形。安装 exuberant-ctags 工具
sudo apt-get install exuberant-ctags
创建 C++ 代码库索引
下载 libstdc++ 头文件,包含 C++ 中 STL,streams 等。
解压到 ~/.vim/tags 目录后执行 ctags 命令
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ cpp_src mv tags ~/.vim/tags/cpptag
在 .vimrc 中设置
set tags+=~/.vim/tags/cpptag
创建 Gcc 代码库索引
ubuntu 中安装完 build-essential 后,会在 /usr/include/c++ 目录下有 C/C++ 的头文件。
sudo apt-get install build-essential
拷贝 /usr/include/c++/4.8 里的文件到 ~/.vim/tags/gcc 文件夹里后执行 ctags 命令
cp -R /usr/include/c++/4.8 ~/.vim/tags/gcc ctags -R --c++-kinds=+p --fields=+iaS --extra=+q gcc mv tags ~/.vim/tags/gcctag
在 .vimrc 中设置
set tags+=~/.vim/tags/gcctag
taglist
在屏幕右侧出现的就是 taglist 窗口,从中可以看到文件中定义的所有 tag :宏、定义、变量、函数等;通过单击某个 tag,可以跳到该 tag 定义的位置;也可以把某一类的 tag 折叠起来,方便查看。安装 taglist
vim-addon-manager install taglist
在 .vimrc 中配置
"""""""""""""""""""""""""""""""""" " 标签列表的设置 """""""""""""""""""""""""""""""""" " 启动vim后,自动打开taglist窗口 let Tlist_Auto_Open=1 " 高亮显示当前标签列表中的标签 let Tlist_Auto_Highlight_Tag=1 " 添加新文件后,标签列表将自动更新 let Tlist_Auto_Update=1 " 显示标签域--类 let Tlist_Display_Tag_Scope=1 " 如果taglist窗口是最后一个窗口,则退出vim let Tlist_Exit_OnlyWindow=1 " Taglist窗口里可折叠 let Tlist_Enable_Fold_Column=1 " 只显示当前文件的标签,折叠其他文件的标签 let Tlist_File_Fold_Auto_Close=1 " 多个文件间切换时,标签列表也更新为当前文件 let Tlist_Show_One_File=1 " 标签列表显示在Buffer区的右边 "let Tlist_Use_Right_Window=1 " 单击标签列表中的标签将定位到标签定义处 let Tlist_Use_SingleClick=1
自定义快捷键说明
<F10>
打开/关闭标签列表
winmanager
WinManager 用于管理文件浏览器和缓冲区(buffer)。2.0 以上版本的 WinManager 还可以管理其他 IDE 类型插件,不过要用户在插件中增加一些辅助变量和 hook 来支持WinManager(帮助文档有相关说明)。安装 winmanager
vim-addon-manager install winmanager
在 .vimrc 中配置
"""""""""""""""""""""""""""""""""" " 文件管理器 """""""""""""""""""""""""""""""""" " 进入vim后自动打开winmanager let g:AutoOpenWinManager =1 " 设置要管理的插件 let g:winManagerWindowLayout='FileExplorer|TagList' " 如果所有编辑文件都关闭了,退出vim "let g:persistentBehaviour=0 " <F9>打开/关闭文件管理器 nnoremap <silent> <F9> :WMToggle<CR>
自定义快捷键说明
<F9>
打开/关闭文件浏览器
minibufexplorer
MiniBufferExplorer 用于浏览和管理 buffer ,如果只打开一个文件,是不会显示在屏幕上的,而打开多个文件之后,会自动出现在屏幕上。Vim 也有自带的 buffer 管理工具,不过只有 :ls, :bnext, :bdelete 等的命令, 既不好用, 又不直观.安装minibufexplorer
vim-addon-manager install minibufexplorer
在 .vimrc 中配置
"""""""""""""""""""""""""""""""""" " 缓冲区管理 """""""""""""""""""""""""""""""""" " 用<C-h/j/k/l>切换到上下左右窗口 let g:miniBufExplMapWindowNavVim = 1 " 用Ctrl+箭头切换到上下左右窗口 let g:miniBufExplMapWindowNavArrows = 1 "let g:bufExplorerMaxHeight=30 " 只有一个buffer,MiniBufExplorer这栏也会出现 "let g:miniBufExplorerMoreThanOne=0 " normal模式下<Tab>移动到下一个buffer,<C-Tab>上一个 nnoremap <silent> <Tab> :bn<CR> nnoremap <silent> <C-Tab> :bp<CR> " 不要在不可编辑内容的窗口(如TagList)中打开选中的buffer let g:miniBufExplModSelTarget = 1"
自定义快捷键说明
<Tab>
移动到下一个buffer<C-Tab>
移动到上一个buffer
quickfix
通过 quickfix 命令集,你可在 Vim 内编译程序并直接跳转到出错位置进行修正。你可以接着重新编译并做修正,直到不再出错为止。因为 quickfix 已经在 vim 里集成了,只要配置就好了。在 .vimrc 中配置
"""""""""""""""""""""""""""""""""" " QuickFix设置 """""""""""""""""""""""""""""""""" " 按下<F2>,执行make nnoremap <F2> :TlistToggle<CR> :make<CR><CR><CR> :copen<CR> :TlistToggle<CR> " 按下<F12>,执行make clean nnoremap <F12> :make clean<CR><CR><CR> :cclose<CR> " 按下<F3>,光标移到上一个错误所在的行 nnoremap <F3> :cp<CR> " 按下<F4>,光标移到下一个错误所在的行 nnoremap <F4> :cn<CR>
自定义快捷键说明
<F2>
make当前程序<F10>
make clean当前程序<F3>
光标移动到上一个错误所在行<F4>
光标移动到下一个错误所在行
参考文献
如果该文章对您产生了帮助,或者您对技术文章感兴趣,可以关注微信公众号: 技术茶话会, 能够第一时间收到相关的技术文章,谢谢!
本篇文章由一文多发平台ArtiPub自动发布