自己学服务器程序已经有一段时间了。的确,在Unix/Linux下,会有很多机会用到vi,开发、编译和发布环境都在服务器端。
但苦于vi学习曲线太陡,所以自己就在linux下用起了Qtceator。这样最起码比用vs编码,再上传到linux上方便。想想以前学嵌入式时,也是用Qtceator。所以就很快转变起来了。
但是,越到后面,我就越觉得,Qtceator也不怎么好用了。在编码方面跟vi无法比。
其实,终究到底,都是自已嫌麻烦,没有钻研精神。最后还是要配一配vim,学一学vi的语法。
其实这样的例子在网上有很多,但怎样打造自己的编程环境还是很有讲究的。
俗话说,工欲善其事必先利其器,选来选去,还是配一下vi吧,毕竟emacs没用过。就用着凑合凑合,向大牛学习学习。顺便打造一下个性编程环境。
为什么选择gvim?只是为了方便统一。
运行gvim执行文件,选择完全安装(Full),我的安装目录是默认的C:\Program Files\Vim。
安装完成后,包括了文件夹vim72和文件夹vimfiles,以及脚本_vimrc。
用户目录下的.vimrc文件就是Vim针对当前用户的主配置文件,该文件不是必备的,没有的话就创建它。文件位于当前用户的主目录下,可以用~/.vimrc找到,Vim启动时会自动
运行文件中的每条命令。
通过.vimrc我们可以为Vim进行个性化配置,包括使用方式、显示风格、编写函数和运行插件等,.vimrc中所有的命令都可以在Vim运行时通过类似:comm args[=args1]的方式动
态运行,即时生效。
以下是一个.vimrc的样例脚本,包含了一些常用配置,后面的注释是简要说明。
.vimrc的注释用双引号(")表示 ,样例中的大括号仅表示功能区,属于注释的一部分,无其他含义
.vimrc的配置非常丰富,可以定义各种宏、函数、插件和映射,我见过最长的.vimrc配置有1000多行,这里的示例比较简单,适合入门级用户
syn on "语法支持
"common conf {{ 通用配置
set ai "自动缩进
set bs=2 "在insert模式下用退格键删除
set showmatch "代码匹配
set laststatus=2 "总是显示状态行
set expandtab "以下三个配置配合使用,设置tab和缩进空格数
set shiftwidth=4set tabstop=4set cursorline "为光标所在行加下划线
set number "显示行号
set autoread "文件在Vim之外修改过,自动重新读入
set ignorecase "检索时忽略大小写
set fileencodings=uft-8,gbk "使用utf-8或gbk打开文件
set hls "检索时高亮显示匹配项
set helplang=cn "帮助系统设置为中文
set foldmethod=syntax "代码折叠"}}
"conf for tabs, 为标签页进行的配置,通过ctrl h/l切换标签等
let mapleader= ','nnoremap<C-l> gt
nnoremap<C-h> gT
nnoremap<leader>t : tabe<CR>
"conf for plugins {{ 插件相关的配置"状态栏的配置"powerline{
set guifont=PowerlineSymbols\ for\ Powerline
set nocompatible
set t_Co=256let g:Powerline_symbols= 'fancy'
"}"pathogen是Vim用来管理插件的插件"pathogen{
call pathogen#infect()
"}
"}}
.vim是Vim的主配置文件夹,位于当前用户的主目录下,可以用cd ~/.vim进入。该文件夹一般用来放置插件和相关的帮助文档,常用的目录结构包括:
doc //帮助文档目录
autoload //Vim启动时自动加载的插件目录
plugin //插件目录,一般在使用Vim时通过命令呼出
我们首先来介绍这款用来管理插件的插件——pathogen。
(1)功能说明
一个插件包往往具备多种功能,每个文件根据Vim的路径约定会放置到不同的目录下,通用插件放到plugin下,语法高亮插件放到syntax下,自动加载插件放到autoload下,文
件类型插件放到ftplugin下,编码格式插件的放到indent下......如果你是重度插件用户,你会发现在.vim主目录下会有一堆文件夹,无论是你想要安装新插件,还是想删除旧插
件,都非常麻烦,你不得不在每个文件夹下找相关的vim文件。
pathogen是管理插件的插件,主要用来解决上述问题。pathogen采用了bundle的概念来管理插件。
pathogen在.vim目录下建立bundle文件,所有的插件都会在该目录下管理。当Vim启动时,会自动执行runtimepath(rtp)列表中所包含文件夹下的vim脚本,pathogen会在启动
时把./vim/bundle下的文件夹中的插件按照一定顺序递归加载到rtp中,这样Vim启动时,通过pathogen管理的插件就生效了。
有了pathogen之后,一般.vim文件夹下只有三个文件夹:autoload、bundle和doc,其他插件将被安装在bundle文件夹下,如图所示:
如无特殊说明,后面提到的插件都采用pathogen方式安装。
(2)安装
在.vim文件夹下建立autoload和bundle目录
从下载地址获取pathogen.vim文件,将其复制到autoload目录下
在.vimrc文件中增加如下代码:
call pathogen#infect()
(3)注意事项
新插件安装到bundle目录下后,如果插件中包含doc,则需要在Vim中运行:Helptags来生成在线帮助tags。
我们在介绍pathogen的时候,用一张图展示了插件的目录结构,这个目录结构就是基于NERDTree插件实现的。
NERDTree是Vim最常用的插件之一,可以在Vim运行时显示目录和文件结构,类似TextMate左侧的文件浏览器,但操作起来更为方便,你可以在手不离开键盘的情况下快速浏
览文件,并在文件和文件夹之间进行切换。
把nerdtree文件夹放进.vim/bundle目录,所有相关插件都在nerdtree该文件夹下
在Vim中运行:Helptags来生成NERDTree的在线帮助tags
打开Vim,输入:NERDTree,即可呼出执行Vim命令的当前目录的文件目录。为了方便使用,我在.vimrc中定义了快捷键,可以用Ctrl+t打开NERDTree,你可以定义自己习惯的
快捷键。
NERDTree提供了丰富的键盘操作方式来浏览和打开文件,我简单介绍一些常用的快捷键:
和编辑文件一样,通过h j k l移动光标定位
o 打开关闭文件或者目录,如果是文件的话,光标出现在打开的文件中
go 效果同上,不过光标保持在文件目录里,类似预览文件内容的功能
i和s可以水平分割或纵向分割窗口打开文件,前面加g类似go的功能
t 在标签页中打开
T 在后台标签页中打开
p 到上层目录
P 到根目录
K 到同目录第一个节点
J 到同目录最后一个节点
m 显示文件系统菜单(添加、删除、移动操作)
? 帮助
q 关闭
想了解更多操作方式,可以通过? 查看详细的帮助信息。
ctags(Generate tag files for source code)是vim下方便代码阅读的工具,简单来说,就是在程序中跳转。它可以帮助程序员很容易地浏览源代码。
严格意义上来说,ctags并不是Vim的插件,而是Linux/Unix下的标签命令。通过ctags -R命令可以对当前目录下源代码中的类、函数、方法、变量、宏等元素进行索引处理,并
生成索引文件。Vim使用ctags生成的tag文件,即可实现IDE中常用的代码跳转功能。
将ctags.exe复制到C:\WINDOWS\system32下,或自己设置环境路径
3、使用说明
打开cmd命令行,切换到你要查看的源代码的根目录处,运行
ctags -R
将会在此目录处生成一个tags文件。
用gvim打开一个代码文件,打以下命令:
set tags=/文件目录/tags
当然,你也可以把这条命令写到.vimrc中。
用gvim打开一个代码文件,将光标放到某一函数名上,按下"ctrl+]",光标会自动跳转到定义处。
按下"ctrl+T"会跳回到原来的位置。
变量、结构体、宏等等,都可以这样做。
当你的源文件有更新时,只能重新运行ctags -R命令,来更新tags文件。
3.窗口管理
将taglist_45.zip解压,解压后包含一个doc文件夹和一个plugin文件夹,将其中内容分别复制到C:\Program Files\Vim\vim72下的doc及plugin中。
在_vimrc文件中加入以下内容:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
用gvim打开代码文件(已生成过tags文件),:Tlist,TagList窗口即出现在左侧。
用相同的方法将winmanager.zip解压和拷贝,在_vimrc文件中加入以下内容:
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
用gvim打开代码文件,normal状态下输入命令"wm"
其中左上是netrw窗口(浏览文件),左下是TagList窗口,再次输入"wm"时这两个窗口会关闭。
4.多文件编辑
将minibufexpl.vim复制到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplMapWindowsNavVim=1
let g:miniBufExplMapWindowNavArrows=1
当用gvim打开两个或两个以上的文件时,会自动弹出MiniBufExplorer窗口
5.快速切换头文件/源文件
将a.vim复制到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
nnoremap <silent> <F12> :A<CR>
用gvim打开源码文件后,按F12即可以在c/h文件中切换,也可以通过输入:A实现。
6.在工程中快速查找
将grep.vim复制到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
nnoremap <silent> <F3> :Grep<CR>
用gvim打开源码文件,并将光标定位到要查找的内容上,按下F3,确定要查找的内容和搜索范围,gvim会在弹出的QuickFix窗口中列出所有符合条件的搜索结果。确定查找内容时,支持正则表达式。
7.高亮的书签
将visualmark.vim复制到C:\Program Files\Vim\vim72\plugin。
用gvim打开源码文件,将光标定位在需要添加书签的地方,按下ctrl+F2,即添加了书签。
使用F2在书签之间正向切换,shift+F2反向切换。