Chinaunix首页 | 论坛 | 博客
  • 博客访问: 68172
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-29 12:33
文章分类

全部博文(31)

文章存档

2017年(1)

2015年(1)

2014年(2)

2013年(2)

2011年(1)

2010年(6)

2009年(18)

我的朋友

分类: LINUX

2013-12-06 10:27:39

本文旨在用最简短语言介绍Vim最实用的技巧。帮助Linux/Unix开发者快速掌握它。要想深入研究Vim的使用,大家可以参考Vim官方网站:
本文不断修改中,任何问题大家都可以在下面留言。

第一章:安装:

在命令行运行vim,如果找不到程序,需要自己安装。

1.1 下载

从官方网站/中选择一个版本下载,我这里使用的是vim-7.3.tar.bz2。

1.2 解压程序:

tar -xjvf vim-7.3.tar.bz2

在AIX环境中可能不支持这个命令。可以用Windows上的好压等软件解压后再传入到服务器中,这时一些程序的可执行权限可能被清除了。你需要手动添权限:

cd vim73 #进入解压后的源代码目录。
vim73>chmod –R u+x .

1.3 编译安装程序:

如果在AIX环境可以使用xlC编译器,编译前需设置环境变量如下

vim73>export CC=xlC
vim73> export CFLAGS="-q64 -DOLDXAW" #64位处理器必须加上-q64选项,-DOLDXAW为了更好的兼容性
vim73>export LDFLAGS=-q64 #64位处理器必须加上此选项
vim73>export STRIP="strip -X64" #64位处理器必须加上此选项

如果是Linux环境可以不用设置上面的环境变量。

配置编译选项:

vim73>./configure --prefix=/home/aixdev/vim/ --enable-multibyte --disable-nls

其中/home/aixdev/vim/是要安装的目录,用户自己修改,务必保证此目录又读写权限。--enable-multibye的用途是使用Vim的encoding,fileecncodings等设置。--disable-nls是Oracle的语言环境,可以不选用。

编译:

vim73>make

安装:

vim73>make install

1.4 安装ctags

如果你在AIX平台上使用Vim,系统默认的ctags功能很差,建议重新安装一个ctags工具,Linux平台用户可以跳过此节。ctags下载地址:/,我这里使用的版本是:ctags-5.8.tar.gz
安装步骤类似vim:

ctags-5.8>chmod -R u+x . #解决windows解压后可执行权限丢失的问题。
由于编译vim的时候已经设置好了环境变量,这里可以不用设置了
ctags-5.8>./configure --prefix=/home/aixdev/ctags/
ctags-5.8>make
ctags-5.8>make install

没有报错的话,在/home/aixdev/ctags/bin目录下会有ctags可执行文件。

第二章:配置

2.1 检查DISPLAY环境变量

在执行VIM前,检查DISPLAY环境变量的值,(如果你的DISPLAY变量值为空,可以跳过此步)。
当我打开VIM时,发现没响应,像是卡住了。但执行命令kill -30 后,它又立即激活。这是环境变量DISPLAY在作怪。
由于服务器还安装了ORACLE,而ORACLE的一些终端登录要用到DISPLAY变量,为了不影响其他同事使用ORACLE,可以在$PATH环境变量中找一个可以写的目录,并在这个目录中新建一个名为vim的SHELL脚本,内容如下:

#! /bin/sh  
export DISPLAY=;  
<安装路径>/bin/vim "$@"  
exit; 

把这个shell脚本的使用仅限更改为可执行:

chmod +x vim。

2.2 更新配置文件

为了使Vim能够发挥更好的使用优势,在安装完成后,建议将如下的.vimrc文件复制到HOME目录下,覆盖原来的文件。

第三章:常用技巧。

3.1 基本功能

Vim配置完成后,在任何目录输入命令“vim <文件名>”就可以使用vim编辑文件了。 打开vim后,默认的是命令模式,输入i进入编辑模式,这个时候你可以编辑文件了。
在编辑模式下按Esc键回到命令模式,在命令模式输入:q ! (:wq) 命令就可以(保存修改)退出了。

命令模式常用命令:
k:向上
j:向下
h:向左
l:向右
w:下一个单词
b:上一个单词
e:单词尾部
a:追加输入,并进入编辑模式,一般和e命令配合使用。
0:行首
$:行尾
ctrl+b:上页
ctrl+f:下页
gg:文件头部
G:文件尾部

r:替换当前字符为
R:进入替换型输入方式,按Esc退出。
cw:替换单词,进入编辑模式。
x:剪切字符
dd:剪切行
D:剪切当前位置到行尾
yy:复制一行
p:粘贴
o:回车换行,进入编辑模式。
J:将下行内容join到本行末尾
v:选择文本区域,之后可以移动光标改变选择范围,也可以使用y、x、r命令复制、删除和替换,再按一次v结束选择。
u:撤销
R:重做
提示:一般情况在命令之前加入一个数字N,表示命令重复执行N多次。(自己可以尝试)

3.2 列模式

在命令模式下,按ctrl+v命令进入列选择模式,列选择模式同v命令的选择模式一样,同时它还可以输入I命令对选择的区域每行都插入一样的内容。

3.3 查找和替换

命令模式下的查找命令:
/:查找下一个,之后可以使用n(N)命令向下(上)查找
?:查找上一个,之后可以使用n(N)命令向下(上)查找
*:查找光标所在单词下一处
查找内容可以是任何正则表达式。用点(.)匹配任意单个字符,用星*表示匹配零或多个前面的字符。如(/a*b)可以查找匹配ab、aab和b。(\+)表示前面的字符重复1次或多次。(\s)匹配空格、制表等空白字符。(\c)表示不区分大小写,特殊字符前加转义符(\)来表示符号的本意;另外(^)和($)分别表示一行的行首和行尾。

下面是介绍几个常用的情况:
/^abc:找到以abc开头的行
/efg$:查找已efg结尾的行
/\s\+:查找一个或多个空白处,

vim的替换语法为:[addr]s/源字符串/目的字符串/[option]。[addr] 表示检索范围,默认是当前行,%表示整个文件,使用 v命令选中区域后输入冒号可以实现自定义范围;源字符串可以使用通配符,和查找功能原理一样;[option]是操作类型,g 表示全局替换,c 表示进行确认。
下面是一些常用的例子:
在每行的开始插入>
:%s/^/>/g
删除空行。
:%s/^$/ /g
删除所有的[
:%s/\[//g
将That or this 换成 This or that
:%s/\(That\) or \(this\)/\u\2 or \l\1/

提示:输入/或者:命令然后再按上下方向键,可以查看历史命令

3.4 多文件操作

在使用vim命令时,后面可以加多个文件名。这时vim首先显示的是第一个文件。在命令模式下输入:n(N)命令可以切换到下(上)一个文件,使用ctrl+g可以查看当前打开的文件名,输入:qa退出所有的文件。
如果想在一个页面上看到多个文件内容,可以使用分屏,这样很方便让我们交互式操作。

在vim命令模式下输入:sp(:vsp) [文件名],可以进行水平(垂直)分屏。之后输入wk(j、h、l)命令可以上(下、左、右)切换窗口。输入:q可以关闭窗口。

3.5 资源管理器

如果我们打开的文件被其他程序修改了,可以使用:e命令来刷新文件内容。使用:e [文件名]可以关闭当前文件同时打开指定的文件。 使用:E命令可以打开当前文件所在目录。这个类似Windows的资源管理器。

当打开的是文件目录时,可以通过s命令修改文件排序方式,同时将光标移到指定文件后输入Enter键即可打开它。

对于开发者来说,希望可以看到一个程序的函数名列表,这是需要通过taglist插件来实现。
使用方法如下:
1) 先到官方网站下载插件:

2) 将下载的文件解压到$HOME/.vim目录下。

$HOME/.vim> unzip taglist_46.zip

3)设置并激活
在.vimrc文件修改下面配置:

let TlistCtagsCmd="/lincapp/aixdev/ctags/bin/ctags"

其中/lincapp/aixdev/ctags是第一步ctags安装时指定的路径。
进入HOME/.vim目录运行vim,执行命令(:helptags .)后退出。

此时就配置好了,打开一个程序文件,按F2命令,即可显示、隐藏函数定义表了。

和目录一样,选中函数名按Enter键可跳转到函数定义。

3.6 代码折叠

在查看源代码时,将光标移至括号(大、中、小括号和宏定义等)处使用%命令可以在括号头尾切换。对于代码段跳转,下面介绍更常用的命令:
]]:跳转到下一个函数处。
[[:跳转到上一个函数处。
[z:跳至当前语句块最开始处,一般是if或while等条件处。
]z:调至当前语句块最尾部。
zc:折叠当前语句块
zo:展开折叠
ctrl+o:跳转到光标的上一个位置。这个命令很强大,帮助我们在无数次跳转后回到原处。

3.7 函数定义跳转

我们阅读代码时希望能跳转到被调函数的定义处。实现这个功能需要使用第一步安装ctags工具对代码库生成tags文件,方法如下:

/home/aixdev/ctags/bin/ctags -RB -f ~/leman/tags ~/rinetd/

-f用来指定生成的tags文件名,用户可以任何自行修改。最后一个参数指定代码库的主目录(为了能在任何地方都可以跳转,这里建议写绝对路径)。
生成完tags文件后需要修改.vimrc中的tags设置:

:set tags=~/leman/tags "这里修改为你自己的tags文件名

现在就可以在vim里面使用跳转了,将光标移至函数处,输入ctrl+]命令进入函数定义,输入ctrl+t退到上一层调用。如果修改代码后导致跳转位置不准了,可以通过重建tags文件来校正。

3.8 代码自动补全

在编辑模式下,当我们输入变量名或者函数名一部分时,可以输入ctrl+p(n)实现自动补全,vim自动搜索上(下)文类似的单词,如果未找到再尝试到tags文件中找你想要的变量。如果有多个满足的内容,会显示一个列表,这时用户可以继续输入ctrl+p(n)来选择上(下)一个。

3.9 文件比较

使用vim比较文件的命令为vim -od 。参数-o表示水平分屏,默认是垂直分屏。

如上题,品红色表示本行有差异,红色部分标识了差异的地方。为了能看到全行的内容,可以输入:set wrap命令来展开,同样使用:set nowrap可以隐藏。

3.10 其他

1)调用外部命令。 如果想使用vim调用shell命令,可以在命令模式下输入:! 实现。如查看当前所在目录可使用::!pwd


2)二进制模式查看编辑。 如果vim打开的文件中含有不可见字符,而你又想查看这些不可见字符的二进制数据,这是可以通过:%!xxd -g1命令进入二进制模式查看,进入后可以编辑二进制数据,之后通过:%!xxd -g1 -r命令返回正常模式保存。

在!前加了个%表示将当前内容作为标准输入传给外部命令,执行完毕后将执行结果替换当前内容。使用u命令可以撤回操作。

结尾:

以上是vim最常用的功能,那些高级不常用功能,本文不打算介绍。想更深入了解,可以在vim命令模式下输入:help命令查看vim手册。使用vim,你还可以 如果有任何建议或疑问,欢迎如下留言。

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