Chinaunix首页 | 论坛 | 博客
  • 博客访问: 61513
  • 博文数量: 7
  • 博客积分: 90
  • 博客等级: 民兵
  • 技术积分: 117
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-26 09:09
文章分类

全部博文(7)

文章存档

2018年(1)

2017年(4)

2012年(2)

我的朋友

分类: LINUX

2017-06-12 12:42:28


本文的目的

刚进公司 跟着老大使用vim, 慢慢的喜欢上不用鼠标敲代码的炫酷感觉, 我想很多人也和我一样, 想用vim敲代码.

很多人因为下载插件 拷贝配置插件麻烦 对vim望而却步, 有很多同事也经常问我vim如何配置的, 我只有把我保存的一堆插件和一个.vimrc配置文件给他, 结果鲜少有人能够用上,
写下此文: 照着步骤 安装几个必须的软件,下载几个配置文件, 几个命令, 简单的几步 就可以完美将vim配置成和我的一模一样.

下面是我的gvim配置好后的界面:



最顶上: buffer列表插件 minibufexpl.vim
左边: 多窗口管理插件  winmanager
底部状态栏: 状态栏增强插件 vim-powerline
搜索文件: ctrlp
配色: molokai
还有界面上看不出来的功能:
   自动补全: acp
  自动补全括号: AutoClose
   快速移动: easymotion
   快速操作括号: vim-surround
   HTML/CSS快速键入: Emmet.vim
   代码浏览相关: cscope ctags

  下面是一台新的机器安装完ubuntu 16.04后 简单快速配置好vim的步骤.

1. 安装gvim, cscope, ctags, git(已安装的略过)

       gvim: vim带图形界面
       cscope, ctags: 用vim敲代码时提供跳转功能
       git: 用来从github上直接下载vim配置文件

点击(此处)折叠或打开

  1. y1@y1-virtual-machine:~$ apt-get install vim-gnome cscope ctags git


2. 使用git下载我上传到github中的vim配置文件


点击(此处)折叠或打开

  1. #从github上下载 我上传的vim相关的文件
  2. y1@y1-virtual-machine:~$ git clone
    Cloning into 'vim-config'...
    remote: Counting objects: 41, done.
    remote: Total 41 (delta 0), reused 0 (delta 0), pack-reused 41
    Unpacking objects: 100% (41/41), done.
    Checking connectivity... done.

  3. #看是否下载成功
  4. y1@y1-virtual-machine:~$ ls
  5. vim-config
  6. y1@y1-virtual-machine:~$ ls vim-config/
  7. README.md update.sh vimrc
        可以看到 我上传了三个文件
README.md:  简单的介绍文档
update.sh:  一个简单的脚本程序, 用来快速为你的项目生成cscope ctags跳转要使用的文件
vimrc : vim的配置文件了


3. 备份之前的vim文件

如果之前有耍过vim和修改过配置文件 插件的, 可以先进行备份再进行后续的操作. 
如果没操作过的 可能没得下面的文件和目录 更不用管, 直接下一步.

点击(此处)折叠或打开

  1. #备份当前用户的.vimrc配置文件
  2. y1@y1-virtual-machine:~$ cp $HOME/.vimrc $HOME/vimrc_bak  

  3. #备份当前用户的vim插件目录
  4. y1@y1-virtual-machine:~$ mv $HOME/.vim $HOME/vim_ba

    4.下载Vundle.vim插件

 vundle.vim相当于我们平常windows下使用的360软件管家, QQ软件管家, 只不过这个插件专门用来管理vim相关的插件.

虽然它可以管理安装卸载其他插件, 但本身还是需要我们单独另外下载,  不多说, 我们通过git下载此插件     

点击(此处)折叠或打开

  1. #从github上将插件下载到vim插件目录中, 它就是我们配vim的第一个必须安装
  2. y1@y1-virtual-machine:~$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  3. Cloning into '/home/ywj1/.vim/bundle/Vundle.vim'...
  4. remote: Counting objects: 3128, done.
  5. remote: Total 3128 (delta 0), reused 0 (delta 0), pack-reused 3128
  6. Receiving objects: 100% (3128/3128), 931.67 KiB | 538.00 KiB/s, done.
  7. Resolving deltas: 100% (1101/1101), done.
  8. Checking connectivity... done.

5. 拷贝vim配置文件

接着拷贝vim配置文件,  覆盖之前已有的配置文件$HOME/.vimrc.

点击(此处)折叠或打开

  1. #进入到第2步下载的vim-config目录
  2. y1@y1-virtual-machine:~$ cd vim-config

  3. #拷贝并覆盖vim配置文件
  1. y1@y1-virtual-machine:~/vim-config$ cp vimrc $HOME/.vimrc

6. 安装其他插件

接着运行gvim 然后通过已安装的vundle插件, 安装$HOME/.vimrc中配置的要安装其他的插件.

运行gvim 后,  按":"进行命令模式, 输入 PluginInstall

                   

接下来vundle插件 将会自动安装$HOME/.vimrc中配置的其他插件

$HOME/.vimrc中配置的其他插件名单如下:
(感兴趣的可以自己瞅瞅$HOME/.vimrc配置文件里的内容)

点击(此处)折叠或打开

  1. # .vimrc中配置的插件名单
  2. Plugin 'tomasr/molokai' " 配色
  3. Plugin 'vim-scripts/winmanager' " 多窗口管理插件 :wm
  4. Plugin 'vim-scripts/minibufexpl.vim' "顶部buffer列表插件
  5. Plugin 'vim-scripts/taglist.vim' " 左边ctag函数列表
  6. Plugin 'vim-scripts/AutoClose' " 自动补全另一边括号 引号等插件
  7. Plugin 'vim-scripts/snipper' " 识别不同类型语言的关键字语法插件
  8. Plugin 'kien/ctrlp.vim' " 快速搜索文件工具
  9. Plugin 'scrooloose/nerdcommenter' " 快速增加注释工具
  10. "Plugin 'Valloric/YouCompleteMe' " 自动补全插件(配置有些复制)
  11. Plugin 'eikenb/acp' " 简单的自动补全插件, 懒得安装时用来替换YouCompleteMe
  12. Plugin 'klen/python-mode' " python功能插件
  13. Plugin 'easymotion/vim-easymotion' " 快速移动插件
  14. Plugin 'tpope/vim-surround' " 增加/修改/删除 引号,括号等
  15. Plugin 'vim-scripts/Emmet.vim' " HTML/CSS等免除重复劳动
  16. Plugin 'Lokaltog/vim-powerline' " 状态栏增强插件

输入:PluginInstall命令后显示如下:


+表示已安装成功  >表示正在安装
vundle插件详细 可以另外运行gvim 输入 :help vundle 来查看详细说明.
注: 推荐多使用:help XXX 来熟悉了解某个插件功能说明, 比网上到处找人家偶尔丢几个命令 全面,透彻得多.
      英文并不是那么难懂, 多看几个插件说明就感觉容易了.

全部安装成功时显示如下:


所有插件安装完成后,可以退出了,重新运行gvim编辑某个文件 来看效果吧, 看下面随便编辑一个文件($HOME/.vimrc)展示的效果:
gvim  $HOME/.vimrc
如出现折叠敲命令展开所有折叠  zR



接下来开始为项目工程代码作准备了

7. 拷贝剩余的update.sh脚本

 我一般是把update.sh放到$HOME/.rd 隐藏目录中.

点击(此处)折叠或打开

  1. #创建隐藏目录 .rd
  2. y1@y1-virtual-machine:~/vim-config$ mkdir -p ~/.rd

  3. #拷贝脚本到.rd目录中
  4. y1@y1-virtual-machine:~/vim-config$ cp update.sh ~/.rd/

  5. #查看下
  6. y1@y1-virtual-machine:~/vim-config$ ls ~/.rd/
  7. update.sh

这个脚本做的事很简单, 根据用户指定的项目代码路径, 来自动使用ctags, cscope命令生成跳转需要的tag文件.
这些文件都会自动放在$HOME/vim_tags_dir/目录下,  以项目名为目录分别保存.

8. 通过update.sh脚本生成ctags cscope需要的tag文件

我们随便下载一个程序dhcpd的源码, 然后针对这个程序来执行脚本作为示范.
update.sh的参数很简单  ./update.sh  -a/-d  [project_path]
    -a : 为某个项目(重新)生成 ctags cscope使用的 tag文件
    -d : 删除某个项目所有跳转使用的tag文件
    project_path: 项目根目录的完整路径

通过pwd 获取我们下载的dhcpd项目路径 然后执行脚本.

点击(此处)折叠或打开

  1. #通过git下载dhcpd项目源码
  2. y1@y1-virtual-machine:~/vim-config$ git clone https://github.com/fritz0705/dhcpd.git
  3. Cloning into 'dhcpd'...
  4. remote: Counting objects: 355, done.
  5. remote: Total 355 (delta 0), reused 0 (delta 0), pack-reused 355
  6. Receiving objects: 100% (355/355), 104.39 KiB | 0 bytes/s, done.
  7. Resolving deltas: 100% (208/208), done.
  8. Checking connectivity... done.

  9. #查看当前路径
  10. y1@y1-virtual-machine:~/vim-config$ pwd
  11. /home/y1/vim-config

  12. #执行.rd目录下的update.sh脚本 生成tag文件
  1. y1@y1-virtual-machine:~/vim-config$ ~/.rd/update.sh  -a /home/y1/vim-config/dhcpd/
    Add /home/y1/vim-config/dhcpd/, Del  ...
    Will add /home/y1/vim-config/dhcpd/ ...
    Begin to Check the directory /home/y1/vim_tags_dir/dhcpd
    Not exist the /home/y1/vim_tags_dir/dhcpd, begin to create!
    Check the directory /home/y1/vim_tags_dir/dhcpd success!
    Begin to create "ctags" , "cscope" of [dhcpd]
    Now create the file list for dhcpd
    Now create the tags according file_list[/tmp/4957.list] and mv to /home/y1/vim_tags_dir/dhcpd....
    Now create the cscope according file_list[/tmp/4957.list] and mv to /home/y1/vim_tags_dir/dhcpd....
    ^_^  Completed! Please wait all process done then into the /home/y1/vim-config/dhcpd and vim the Programe with this plugins!

        看到Completed!时只是启动生成tag后台进程成功了, 如果项目比较大 生成tag的进程可能需要一段时间才能结束, 可以通过 ps命令看update.sh 进程是否完结.

点击(此处)折叠或打开

  1. ^_^ Please wait all process done then into the /opt/work/N360/N360_TRUNK and vim the Programe with this

  2. #通过ps查看进程还在运行 说明正在生成tag
  3. y1@y1-virtual-machine:~/vim-config$ ps
  4.   PID TTY TIME CMD
  5. 19868 pts/4 00:00:00 bash
  6. 26300 pts/4 00:00:00 update.sh
  7. 26301 pts/4 00:00:00 update.sh
  8. 26302 pts/4 00:00:00 ctags
  9. 26303 pts/4 00:00:00 cscope
  10. 26340 pts/4 00:00:00 ps

  11. # 等后台进程退出后 可以浏览下tag目录下文件
  12. y1@y1-virtual-machine:~/vim-config$ ls $HOME/vim_tags_dir/dhcpd -al
    total 268
    drwxrwxr-x 2 ywj1 ywj1  4096  6月 12 11:01 .
    drwxrwxr-x 3 ywj1 ywj1  4096  6月 12 11:01 ..
    -rw-rw-r-- 1 ywj1 ywj1 73728  6月 12 11:01 cscope.in.out
    -rw-rw-r-- 1 ywj1 ywj1 63620  6月 12 11:01 cscope.out
    -rw-rw-r-- 1 ywj1 ywj1 96768  6月 12 11:01 cscope.po.out
    -rw-rw-r-- 1 ywj1 ywj1 29419  6月 12 11:01 tags


上面步骤都成功后, 等待tag生成完后就可以开始使用gvim编辑项目代码了.

9. 用gvim敲代码

点击(此处)折叠或打开

  1. #进入到dhcpd源码目录
  2. y1@y1-virtual-machine:~/vim-config$ cd dhcpd/

  3. #查看下有些什么文件
  4. y1@y1-virtual-machine:~/vim-config/dhcpd$ ls
  5. argv.c config.c db.c dhcpctl.c dhcpstress.c iplist.h tools
  6. argv.h config.h db.h dhcpd.c Doxyfile Makefile
  7. array.h COPYING dhcp.c dhcp.h error.h README.md

  8. #选择一个文件进行编辑
  9. y1@y1-virtual-machine:~/vim-config/dhcpd$ gvim dhcpd.c

执行 :wm 命令打开左边的tag窗口
效果图如下:


嗯... 还是介绍几个敲代码用得着的命令吧:

窗口间切换命令:  Ctrl + h, j , k, l    //h j k l 方向跟我们平常使用vim移动光标一致
帮助 :help CTRL-W

跳转到定义处:  Ctrl + ]
返回跳转前的位置: Ctrl + o
帮助 :help tag-commands

有时候ctag可以找不到某个函数定义 使用cscope吧.
 光标置于要查找的函数名上命令:   ,sg
光标置于要#include "*.h"上: ,sf  跳转到指定头文件
帮助 :help cscope

查找项目内某个文件命令  ctrl + p
下面弹出来的输入框中输入要查找的文件名
在列出来的文件中上下移动: Ctrl + j/k
退出 ctrlp 查找文件功能: Ctrl + [  或者 Esc
帮助 :help ctrlp


文件内查找  /XXX
如果跟平常使用的不一样 不要惊慌 我用easymotion插件命令替换了/查找动作
查找到多个匹配时 输入红色的字母直接跳转到指定位置.
如下图:
  /lease
  查找lease单词时出现多个匹配, 再输入相应的红色字母跳转到指定位置的lease处.
  再也不用不停的按n 来跳到指定的位置了


帮助 :help easymotion

10. 遇到问题

如果有遇到问题的请留言 我再及时更新.


2017-06-12:

2. 如果想删除某个插件怎么办

1) 先找到配置文件($HOME/.vimrc)中插件列表的位置


2) 想去掉哪个插件 直接在前面加 " 符号将此行注释.
3) 再命令行模式下执行vundle 插件命令 :PluginClean   清除不要的插件.
4) 退出并重新运行gvim应该就好了.


1. 从普通用户切换成root操作时 运行gvim出现

        

点击(此处)折叠或打开

  1. (gvim:3525): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
       执行下面的命令:
    

点击(此处)折叠或打开

  1. root@y1# export $(dbus-launch)
      再次运行gvim 应该OK了.


阅读(4121) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

biansongqi2017-10-20 08:41:49

为什么输入wm会报:E492: Not an editor command: wm