分类: LINUX
2008-03-27 12:00:07
Vim 是一个功能强大的编辑器,是一个非常好用的vi的后续版本。 记得有人说过在UNIX世界就编辑器的使用而言有两种人,一种是 用emacs的,另一种就是用vi的。Vi编辑器奉行的是经典的UNIX哲学 "Do one thing and do it well",通过程序的配合使用 来获得强大的功能。
想象一下下面这个编辑任务,看用你现在使用的编辑器你应如何
完成它。你要编辑一个网页,网页中要引用一段大约有20行的代码,
为了使用这个标签来格式化代码,你需要在每行代码
的末尾加入一个
标签。
我想对于大多数的编辑器而言都不会有什么方便的方法来完成 它,但对于vi而言这却是小菜一碟。vi具有调用其他的程序来对 正在编辑的文件的指定区域进行处理的能力,这是典型的UNIX哲学 的具体化。
对于上面的任务在vi中可以通过如下的步骤来实现:
ma
来区域起始点,并将光标移到区域末尾
:'a,.!sed -e "s/$/
/"
vim可以很方便地编辑二进制文件,个人认为它比emacs的二进制 编辑方式更好用。vim中二进制文件的编辑是先通过外部程序xxd来把 文件dump成其二进制的文本形式,然后就可以按通常的编辑方式对文件 进行编辑,编辑完成后再用xxd转化为原来的形式即可。
可分如下几步进行:
首先,以二进制方式打开文件,命令为
vi -b filename然后,在Ex模式下执行下面的命令将其dump
:%!xxd待编辑工作完成后,执行下面的命令即可将其转换回去
%!xxd -r
xxd程序是vim软件包自带的一个程序,其功能就是进行十六进制的dump 或者反之。这部分内容可以在vim自带的文档的usr_23.txt文件中找到。
vim有一套灵活而又复杂的初始化机制,详情见:help initialization。 我在这里只谈一下一个容易出错的地方,那就是通过-u foo.rc来指定初始化 文件的问题。
vim规定一旦使用了-u foo.rc来指定了初始化文件,那么vim就不会执行系统 的初始化文件。在linux系统上默认情况下这个系统的初始化文件是 /etc/vim/vimrc。这就带来了问题,因为在大多数的情况下我们仍旧希望执行这 个系统初始化文件。解决的方法是在你的定制的初始化文件foo.rc中加入下面的 内容:
source /etc/vim/vimrc
系统的初始化文件做了许多事情,其中之一就是设置backspace键的行为。下 面内容摘自/etc/vim/vimrc文件:
set bs=2 " Allow backspacing over everything in insert mode这句话的意思是让backspace能在插入模式下删除任何东西。
vim有一个功能就是对最后一个search pattern进行高亮显示,默认情况下这 个功能是在系统配置文件/etc/vim/vimrc中打开,其相应的选项如下:
set hlsearch "hilight the last search pattern如果你想关闭这个功能,你可以在你的~/.vimrc中文件中加入下面的内容来实现:
set nohlsearch
顺便说一句,系统的配置文件/etc/vim/vimrc中含有许多有用的配置选项,很 可能你要改的东西就在其中。
有时你会遇到想把某个命令的执行输出包含在文件中的情况,这是使用vim的 r!命令就可以很方便地做到。下面的命令将ls /home/的输出包含到文件中的当 前位置:
:r!ls /home
使用Ex命令cd来改变当前的工作目录,用pwd来查看工作目录。这些命令和 linux的shell命令类似。
:cd work/web/html
这些命令在使用gvim时十分有用。
以前,我在vi中要关闭一个文件,我会使用命令q来进行。但是,在使用gvim 的过程中我遇到了问题:那就是如果对最后一个打开的文件使用了q命令来关闭 ,那么 gvim也就退出了,这可不是我想要的结果。
在vi中有file、buffer、window的概念,实际上我想要的只是关闭buffer或 者是window即可。
:bd 关闭buffer
:bw 彻底关闭buffer
:buffers 查看buffer列表
:close 关闭窗口
这样通过使用:bd命令,我就可以实现即关闭了文件又不退出gvim。