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

      • 打开/关闭标签列表
  • 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
      " 打开/关闭文件管理器
      nnoremap   :WMToggle
      
    3. 自定义快捷键说明

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

    1. 安装minibufexplorer

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

      """"""""""""""""""""""""""""""""""
      " 缓冲区管理
      """"""""""""""""""""""""""""""""""
      " 用切换到上下左右窗口
      let g:miniBufExplMapWindowNavVim = 1
      " 用Ctrl+箭头切换到上下左右窗口
      let g:miniBufExplMapWindowNavArrows = 1
      "let g:bufExplorerMaxHeight=30
      " 只有一个buffer,MiniBufExplorer这栏也会出现
      "let g:miniBufExplorerMoreThanOne=0
      " normal模式下移动到下一个buffer,上一个
      nnoremap   :bn
      nnoremap   :bp
      " 不要在不可编辑内容的窗口(如TagList)中打开选中的buffer
      let g:miniBufExplModSelTarget = 1"
      
    3. 自定义快捷键说明

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

    1. 在 .vimrc 中配置

      """"""""""""""""""""""""""""""""""
      " QuickFix设置
      """"""""""""""""""""""""""""""""""
      " 按下,执行make
      nnoremap  :TlistToggle :make :copen :TlistToggle
      " 按下,执行make clean
      nnoremap  :make clean :cclose
      " 按下,光标移到上一个错误所在的行
      nnoremap  :cp
      " 按下,光标移到下一个错误所在的行
      nnoremap  :cn
      
    2. 自定义快捷键说明

      • make当前程序
      • make clean当前程序
      • 光标移动到上一个错误所在行
      • 光标移动到下一个错误所在行

参考文献

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

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

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

你可能感兴趣的:(Vim配置之入门篇)