分类: LINUX
2017-10-21 08:19:32
原文地址:我的GVIM: 快速配置vim 作者:Meppo
刚进公司 跟着老大使用vim, 慢慢的喜欢上不用鼠标敲代码的炫酷感觉, 我想很多人也和我一样, 想用vim敲代码.下面是一台新的机器安装完ubuntu 16.04后 简单快速配置好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
1. 安装gvim, cscope, ctags, git(已安装的略过)
gvim: vim带图形界面
cscope, ctags: 用vim敲代码时提供跳转功能
git: 用来从github上直接下载vim配置文件点击(此处)折叠或打开
- y1@y1-virtual-machine:~$ apt-get install vim-gnome cscope ctags git
2. 使用git下载我上传到github中的vim配置文件
可以看到 我上传了三个文件点击(此处)折叠或打开
- #从github上下载 我上传的vim相关的文件
- 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.
- #看是否下载成功
- y1@y1-virtual-machine:~$ ls
- vim-config
- y1@y1-virtual-machine:~$ ls vim-config/
- README.md update.sh vimrc
README.md: 简单的介绍文档
update.sh: 一个简单的脚本程序, 用来快速为你的项目生成cscope ctags跳转要使用的文件
vimrc : vim的配置文件了
3. 备份之前的vim文件
如果之前有耍过vim和修改过配置文件 插件的, 可以先进行备份再进行后续的操作.
如果没操作过的 可能没得下面的文件和目录 更不用管, 直接下一步.点击(此处)折叠或打开
- #备份当前用户的.vimrc配置文件
- y1@y1-virtual-machine:~$ cp $HOME/.vimrc $HOME/vimrc_bak
- #备份当前用户的vim插件目录
- y1@y1-virtual-machine:~$ mv $HOME/.vim $HOME/vim_ba
vundle.vim相当于我们平常windows下使用的360软件管家, QQ软件管家, 只不过这个插件专门用来管理vim相关的插件.
虽然它可以管理安装卸载其他插件, 但本身还是需要我们单独另外下载, 不多说, 我们通过git下载此插件点击(此处)折叠或打开
- #从github上将插件下载到vim插件目录中, 它就是我们配vim的第一个必须安装的插件
- y1@y1-virtual-machine:~$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
- Cloning into '/home/ywj1/.vim/bundle/Vundle.vim'...
- remote: Counting objects: 3128, done.
- remote: Total 3128 (delta 0), reused 0 (delta 0), pack-reused 3128
- Receiving objects: 100% (3128/3128), 931.67 KiB | 538.00 KiB/s, done.
- Resolving deltas: 100% (1101/1101), done.
- Checking connectivity... done.
5. 拷贝vim配置文件
接着拷贝vim配置文件, 覆盖之前已有的配置文件$HOME/.vimrc.
点击(此处)折叠或打开
- #进入到第2步下载的vim-config目录
- y1@y1-virtual-machine:~$ cd vim-config
- #拷贝并覆盖vim配置文件
- y1@y1-virtual-machine:~/vim-config$ cp vimrc $HOME/.vimrc
6. 安装其他插件
接下来开始为项目工程代码作准备了接着运行gvim 然后通过已安装的vundle插件, 安装$HOME/.vimrc中配置的要安装其他的插件.
运行gvim 后, 按":"进行命令模式, 输入 PluginInstall
接下来vundle插件 将会自动安装$HOME/.vimrc中配置的其他插件
$HOME/.vimrc中配置的其他插件名单如下:
(感兴趣的可以自己瞅瞅$HOME/.vimrc配置文件里的内容)点击(此处)折叠或打开
- # .vimrc中配置的插件名单
- Plugin 'tomasr/molokai' " 配色
- Plugin 'vim-scripts/winmanager' " 多窗口管理插件 :wm
- Plugin 'vim-scripts/minibufexpl.vim' "顶部buffer列表插件
- Plugin 'vim-scripts/taglist.vim' " 左边ctag函数列表
- Plugin 'vim-scripts/AutoClose' " 自动补全另一边括号 引号等插件
- Plugin 'vim-scripts/snipper' " 识别不同类型语言的关键字语法插件
- Plugin 'kien/ctrlp.vim' " 快速搜索文件工具
- Plugin 'scrooloose/nerdcommenter' " 快速增加注释工具
- "Plugin 'Valloric/YouCompleteMe' " 自动补全插件(配置有些复制)
- Plugin 'eikenb/acp' " 简单的自动补全插件, 懒得安装时用来替换YouCompleteMe
- Plugin 'klen/python-mode' " python功能插件
- Plugin 'easymotion/vim-easymotion' " 快速移动插件
- Plugin 'tpope/vim-surround' " 增加/修改/删除 引号,括号等
- Plugin 'vim-scripts/Emmet.vim' " HTML/CSS等免除重复劳动
- Plugin 'Lokaltog/vim-powerline' " 状态栏增强插件
输入:PluginInstall命令后显示如下:
+表示已安装成功 >表示正在安装
vundle插件详细 可以另外运行gvim 输入 :help vundle 来查看详细说明.
注: 推荐多使用:help XXX 来熟悉了解某个插件功能说明, 比网上到处找人家偶尔丢几个命令 全面,透彻得多.
英文并不是那么难懂, 多看几个插件说明就感觉容易了.
全部安装成功时显示如下:
所有插件安装完成后,可以退出了,重新运行gvim编辑某个文件 来看效果吧, 看下面随便编辑一个文件($HOME/.vimrc)展示的效果:
gvim $HOME/.vimrc
如出现折叠敲命令展开所有折叠 zR
我一般是把update.sh放到$HOME/.rd 隐藏目录中.
点击(此处)折叠或打开
- #创建隐藏目录 .rd
- y1@y1-virtual-machine:~/vim-config$ mkdir -p ~/.rd
- #拷贝脚本到.rd目录中
- y1@y1-virtual-machine:~/vim-config$ cp update.sh ~/.rd/
- #查看下
- y1@y1-virtual-machine:~/vim-config$ ls ~/.rd/
- update.sh
这个脚本做的事很简单, 根据用户指定的项目代码路径, 来自动使用ctags, cscope命令生成跳转需要的tag文件.
这些文件都会自动放在$HOME/vim_tags_dir/目录下, 以项目名为目录分别保存.
我们随便下载一个程序dhcpd的源码, 然后针对这个程序来执行脚本作为示范.
update.sh的参数很简单 ./update.sh -a/-d [project_path]
-a : 为某个项目(重新)生成 ctags cscope使用的 tag文件
-d : 删除某个项目所有跳转使用的tag文件
project_path: 项目根目录的完整路径
通过pwd 获取我们下载的dhcpd项目路径 然后执行脚本.点击(此处)折叠或打开
- #通过git下载dhcpd项目源码
- y1@y1-virtual-machine:~/vim-config$ git clone https://github.com/fritz0705/dhcpd.git
- Cloning into 'dhcpd'...
- remote: Counting objects: 355, done.
- remote: Total 355 (delta 0), reused 0 (delta 0), pack-reused 355
- Receiving objects: 100% (355/355), 104.39 KiB | 0 bytes/s, done.
- Resolving deltas: 100% (208/208), done.
- Checking connectivity... done.
- #查看当前路径
- y1@y1-virtual-machine:~/vim-config$ pwd
- /home/y1/vim-config
- #执行.rd目录下的update.sh脚本 生成tag文件
- 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 进程是否完结.
点击(此处)折叠或打开
- ^_^ Please wait all process done then into the /opt/work/N360/N360_TRUNK and vim the Programe with this
- #通过ps查看进程还在运行 说明正在生成tag
- y1@y1-virtual-machine:~/vim-config$ ps
- PID TTY TIME CMD
- 19868 pts/4 00:00:00 bash
- 26300 pts/4 00:00:00 update.sh
- 26301 pts/4 00:00:00 update.sh
- 26302 pts/4 00:00:00 ctags
- 26303 pts/4 00:00:00 cscope
- 26340 pts/4 00:00:00 ps
- # 等后台进程退出后 可以浏览下tag目录下文件
- 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
点击(此处)折叠或打开
- #进入到dhcpd源码目录
- y1@y1-virtual-machine:~/vim-config$ cd dhcpd/
- #查看下有些什么文件
- y1@y1-virtual-machine:~/vim-config/dhcpd$ ls
- argv.c config.c db.c dhcpctl.c dhcpstress.c iplist.h tools
- argv.h config.h db.h dhcpd.c Doxyfile Makefile
- array.h COPYING dhcp.c dhcp.h error.h README.md
- #选择一个文件进行编辑
- 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
如果有遇到问题的请留言 我再及时更新.
2017-06-12:
2. 如果想删除某个插件怎么办
1) 先找到配置文件($HOME/.vimrc)中插件列表的位置
2) 想去掉哪个插件 直接在前面加 " 符号将此行注释.
3) 再命令行模式下执行vundle 插件命令 :PluginClean 清除不要的插件.
4) 退出并重新运行gvim应该就好了.
1. 从普通用户切换成root操作时 运行gvim出现
执行下面的命令:点击(此处)折叠或打开
- (gvim:3525): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion 'G_IS_DBUS_CONNECTION (connection)' failed
再次运行gvim 应该OK了.点击(此处)折叠或打开
- root@y1# export $(dbus-launch)