vim是一款很强大的文本编辑器,并且有丰富的插件来扩充功能。
这几天,网上找了一些资料配置了一下我的vim,总结一下,记录一下,好后续使用.
1.常用ex模式命令
进入vim,输入冒号:,就进入ex模式,该模式下有一些常用的命令
1)copy或co或t,复制命令,后面需要跟一个行号,表示复制到哪一行的下面
例如:1,10 t 20
将第1到第10行复制到第20行的后面
2)m,移动命令,后面跟一个行号,表示移动哪一行的下面
例如:10,11 m $
将第10,11行的内容移动到文件末尾
例如:m +1
当前行和下一行互换位置
3)d,删除命令
例如:1,3 d
删除第1到第3行
4)y,复制命令,后面可跟一个寄存器,表示复制到该寄存器,也可以不跟
如:10,20 y
复制第10到第20行
5)p,打印命令
如:p
打印出当前光标所在行的内容,包括行号
6)=,打印出当前文件的总行数
如:=
打印出当前文件的总行数
7)pu,命令,粘贴命令
如:10,20 y,然后将光标移动到任意行,再输入:pu命令,可以将刚才复制的内容粘贴到当前光标所在行的下面
8)s/xxxx/yyyy/g,非常常用的搜索替换命令,前面可以指定范围
如:10,20 s/xxxx/yyyy/g ,将第10到第20行中的xxx替换为yyy,前面加%表示在全文件中替换,不加表示在当前行替换
9)g,全局命令,非常强大的命令
基本用法是:g/pattern/cmd
如:g/^/norm o
会在每一行下面加一个空行
又如:g/^/+1 d
则删除偶数行
上面两个命令先后执行完,文件内容没有变化
还有:g/^/m 0
整个文件上下翻转,即最后一行到第一行,第一行到最后一行
非常有用的还有
:g/pattern/p 或者直接 :g pattern
将所有pattern出现的地方显示出来
这跟很多加强型的文本编辑器中的在文件中查找功能有些相像
10)/,搜索命令,
基本用法:/pattern,向前搜索,搜索完后,按n查看下一处,N查看上一处
相反的:?patter是向后搜索
2.常用normal模式命令
在ex模式下按Esc键,就退出到normal模式,也是刚进入vim的默认模式
该模式下也有一些常用的命令
1)dd,删除命令
如8dd,删除包括当前行在内的8行
2)yy,复制命令
如8yy,复制包括当前行在内的8行
3)p,粘贴命令
如p,将上次删除或复制的内容粘贴到当前行的下面
4)x,删除当前光标位置的字符
如4x,删除4个字符
5)i,基本是最常用的命令,进入插入模式
6)a,进入插入模式,跟i不同的是,光标定位到当前字符的后面,i是前面
7)s,删除当前字符并进入插入模式
如6s,删除6个字符并进入插入模式
8)o,在当前行下面建立新行,并进入插入模式,光标定位到新行行首
9)shift+o,也就是大写O,在当前行的上面建立新行,并进入插入模式
10)shift+j,也就是大写的J,将当前行和下一行合并成一行。
11)shift+8,也就是*,查找当前光标所在单词的下一次出现,#是查找上一次,非常好用且实用的命令
等等还有很多,暂时想起这么多,再想起来再编辑加入
值得一提的是在ex模式下,也可以执行normal模式下的命令,用如下格式
如:norm OOXX
会在当前行的上面创建新行并输入OXX,但不会直接进入插入模式,而是同ex模式下执行完命令一样回到normal模式
同理
:normal ooxx,在当前行下面创建新行并输入oxx
:normal 3sxxx,在当前光标处删除3个字符并输入xxx三个字符
也就是在normal模式下的命令前面加上norm或normal
2.安装的插件:
1)winmanager
用于在vim中开一个窗格来进行文件浏览
加入下面的taglist,nerdtree后,打开时,会多打开一个空文件,
网上搜到解决方法是在winmanager.vim中加入一行
- function! <SID>ToggleWindowsManager()
- if IsWinManagerVisible()
- call s:CloseWindowsManager()
- else
- call s:StartWindowsManager()
- exe 'q' //加入这一行
- end
- endfunction
2)taglist
用于浏览代码文件中的变量,函数,类等,程序员必备,也会在vim中开一个窗格。
需要安装ctags程序并用ctags程序生成tags文件
3)cscope
用于查找代码中的函数调用关系。
也需要生成cscope相关文件
4)NERDTree
用于替代winmanager中的fileexplorer,能够彩色显示不同文件类型。
5)lookupfile
用于查找文件,先生成文件列表能够大幅提升搜索速度。
6)minibufexplorer
编辑多文件时非常有用,用于在多个文件间切换。
7)supertab
用于在插入模式下按tab键来补全输入。
8)fencview
用于自动检测文件编码
地址:http://www.vim.org/scripts/script.php?script_id=1708
附:
我的vimrc下载链接:http://download.csdn.net/detail/topgun38/4596887
为lookupfiles插件生成文件索引的脚本,我做了些修改,使不索引.svn目录下的文件,下载链接:http://download.csdn.net/detail/topgun38/4598203
为taglist和cscope插件生成必要文件的脚本,在使用cscope时,首先需要输入命令:cs add cscope.out来建立连接,才可以操作,脚本下载链接:http://download.csdn.net/detail/topgun38/4598215
用gvim的效果图:
说明:
左上角是NERTree文件浏览窗格
左下是taglist窗格
最上一横条是minibufexplorer窗格
粉色区域显示的是lookupfiles的匹配列表,匹配列表上面就是输入文字vimrc了。
右下角最大面积的就是文件内容了
在我的~/.gvimrc中只有一句话,用于字体设置:set guifont=文泉驿等宽正黑\ Medium\ 14