Vim配置之入门篇

正所谓“工欲善其事,必先利其器”,而作为一个专业的码农,怎么能不好好对待自己编程的利器-- 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 等。这些人性化的开发集成环境功能强大,使用方便。不过我觉得成也在此,败也在此。

  1. 功能冗余
    现在编程的集成环境工具非常强大,但是很多功能我们都用不到,反而每次开启都花费很长时间。所以集成环境并不适合专业的码农。我们经常说适合自己的才是最好的,编程利器更是如此,毕竟它每天不离手。
  2. 定制化太低
    基本上每个集成开发工具都没有留太多的定制空间给用户,而用户只能习惯软件供应商提供的大众化用法。对于熟悉多种语言的用户而言,它得掌握多种开发集成环境,还不如用Vim解决所有。
  3. 鼠标和键盘的混合使用
    其实这一点仁者见仁,智者见智吧。个人觉得高效编程还是需要手不离键盘的,要熟练掌握一些基本的快捷键的使用。

基本的 Vim 说白了就是一个文本编辑器,不过它的强大之处在于它庞大的插件。这些插件可以让Vim能够干很多牛x的事,这跟 Google 浏览器有点像。像代码补全,错误跳转,高亮显示等等,Vim 都有相应的插件来处理,用户可以自行了解,自由组合。所以 Vim 的入门门槛还是蛮高的,主要是开始学得命令比较多,这里有推荐个玩游戏记命令的网址以及Vim学习指南。此外打造一个适合自己的 Vim 环境将会大大节约时间,是磨刀不误砍柴工的。下面就来看看基础入门级的Vim插件配置

基本配置

  1. 安装 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帮助文件,不过是英文版本的
  2. 中文帮助文档

    1. 下载最新版本的vim中文帮助文档
    2. 解压 doc 文件夹到 ~/.vim 目录下
  3. 配置 ~/.vimrc 文件

    配置个性化的 .vimrc(不懂的命令可以用 :help command 查看中文帮助文档)

实用插件

Vim 的插件很多,而且功能很强大,非常强大。官网的插件地址在这里,不过它的很多插件都转移到 Github 上。

  • ctags
    ctags 可以建立源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形。

    1. 安装 exuberant-ctags 工具

      sudo apt-get install exuberant-ctags
      
    2. 创建 C++ 代码库索引

      1. 下载 libstdc++ 头文件,包含 C++ 中 STL,streams 等。

      2. 解压到 ~/.vim/tags 目录后执行 ctags 命令

        ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ cpp_src
        mv tags ~/.vim/tags/cpptag
        
      3. 在 .vimrc 中设置

        set tags+=~/.vim/tags/cpptag
        
    3. 创建 Gcc 代码库索引

      1. ubuntu 中安装完 build-essential 后,会在 /usr/include/c++ 目录下有 C/C++ 的头文件。

        sudo apt-get install build-essential
        
      2. 拷贝 /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
        
      3. 在 .vimrc 中设置

        set tags+=~/.vim/tags/gcctag
        
  • taglist
    在屏幕右侧出现的就是 taglist 窗口,从中可以看到文件中定义的所有 tag :宏、定义、变量、函数等;通过单击某个 tag,可以跳到该 tag 定义的位置;也可以把某一类的 tag 折叠起来,方便查看。

    1. 安装 taglist

      vim-addon-manager install taglist
      
    2. 在 .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
      
    3. 自定义快捷键说明

      • <F10> 打开/关闭标签列表
  • winmanager
    WinManager 用于管理文件浏览器和缓冲区(buffer)。2.0 以上版本的 WinManager 还可以管理其他 IDE 类型插件,不过要用户在插件中增加一些辅助变量和 hook 来支持WinManager(帮助文档有相关说明)。

    1. 安装 winmanager

      vim-addon-manager install winmanager
      
    2. 在 .vimrc 中配置

      """"""""""""""""""""""""""""""""""
      " 文件管理器
      """"""""""""""""""""""""""""""""""
      " 进入vim后自动打开winmanager
      let g:AutoOpenWinManager =1
      " 设置要管理的插件
      let g:winManagerWindowLayout='FileExplorer|TagList'
      " 如果所有编辑文件都关闭了,退出vim
      "let g:persistentBehaviour=0
      " <F9>打开/关闭文件管理器
      nnoremap <silent> <F9> :WMToggle<CR>
      
    3. 自定义快捷键说明

      • <F9> 打开/关闭文件浏览器
  • minibufexplorer
    MiniBufferExplorer 用于浏览和管理 buffer ,如果只打开一个文件,是不会显示在屏幕上的,而打开多个文件之后,会自动出现在屏幕上。Vim 也有自带的 buffer 管理工具,不过只有 :ls, :bnext, :bdelete 等的命令, 既不好用, 又不直观.

    1. 安装minibufexplorer

      vim-addon-manager install minibufexplorer
      
    2. 在 .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"
      
    3. 自定义快捷键说明

      • <Tab> 移动到下一个buffer
      • <C-Tab> 移动到上一个buffer
  • quickfix
    通过 quickfix 命令集,你可在 Vim 内编译程序并直接跳转到出错位置进行修正。你可以接着重新编译并做修正,直到不再出错为止。因为 quickfix 已经在 vim 里集成了,只要配置就好了。

    1. 在 .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>
      
    2. 自定义快捷键说明

      • <F2> make当前程序
      • <F10> make clean当前程序
      • <F3> 光标移动到上一个错误所在行
      • <F4> 光标移动到下一个错误所在行

参考文献

  1. 有趣的vim游戏
  2. Vim学习指南
  3. vim plugin
  4. Vim Script

如果该文章对您产生了帮助,或者您对技术文章感兴趣,可以关注微信公众号: 技术茶话会, 能够第一时间收到相关的技术文章,谢谢!

本篇文章由一文多发平台ArtiPub自动发布

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容

  • .vimrc内容如下 "=============================================...
    Morb1d阅读 1,020评论 0 0
  • 第一步:配_vimrc,配成自己喜欢的样式。 代码:在.vimrc中添加以下代码后,重启vim即可实现按TAB产生...
    南滨月亮阅读 1,430评论 0 1
  • "========================================================...
    徐志恒阅读 4,102评论 1 1
  • 安装依赖库(支持Python 3、Lua、Ruby) sudo apt-get install libncurse...
    Cyfeng阅读 2,099评论 0 2
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,512评论 16 22