Vi 操作多文件的N 中解决方法
By guipei 2005-3-21
学习linux,总是少不了学习vi编辑器的使用。vi 的作用如果同视窗系统作对比的话,我觉得实现的功能应该和记事本一样。但是作为linux的特殊性,vi 的复杂程度却远远高于记事本的操作。
最近,学习了一些vi操作多个文件的操作方法,再这里总结一下,因为以前看过很多书,或者资料,大都是泛泛的介绍一下vi的基本功能,没有深入将下去,本文基本参考了两本书:Linux in a Nutshell以及O'Reilly - Learning The Vi Editor ,也算是对vi操作多文件的一个总结。
先提一个问题,为什么要进行多文件操作?很多linux的配置文件都是以属性文件保存在/etc目录或者软件的目录里面,这样,我们修改配置前,大多都会copy一个备份出来,如果发现问题,我们可以还原老的配置,或者依据老的配置,修改新的配置。这样,很多情况下面我们是需要操作多个文件。当然还有等等其他情况。
以前老的办法:
1、 使用X系统,打开多个控制台。
2、 使用远程操作,例如 ssh、或者telnet 多个登陆,打开多个控制台。
这些情况虽然可以容易的解决这个问题,但是在一些特殊情况下面,例如单用户模式下面,这些方式就显得无能为力了,即使在多用户模式下,打开多个控制台,也不可以在多个vi中进行复制、拷贝等操作。我只好打开旧文件,拿一只笔,记录下来文件内容,然后,关闭文件,打开需要修改的文件,编辑上去。
这真是一个痛苦的经历,如果你不想重蹈我的覆辙,看看有什么方法可以使用单个vi来操作多个文件,在他们之间互相操作,复制、粘贴等。
好了,我们先准备两个文件:
File fstab:
------------------------------------------------------------------------------------------------------------------
LABEL=/ / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none
/proc proc defaults 0 0
none /sys sysfs defaults 0 0
LABEL=SWAP-hda4 swap swap defaults 0 0
/dev/fd0 /media/floppy auto pamconsole,exec,noauto,managed 0 0
File fstab.bak:
------------------------------------------------------------------------------------------------------------------
/dev/hdd /media/cdrom auto pamconsole,ro,exec,noauto,managed 0 0
文件fstab是linux系统的标准分区加载配置文件,这里我们要操作的是把 fstab.bak 文件加入到文件 fstab中,让我们采用几种方法来加以处理:
方法一: 多文件打开方法:
我们可以使用命令:vi fstab fstab.bak, vi本身支持打开多个文件。
使用vi 命令 :buffers 列出当前打开的文件,以及编号,
使用:buffer I 来切换当前文件,可以使用 yy 和pp 来复制文件了。
操作顺序:
1、 输入命令,我们可以看到输出一下结果:
:buffers
1 %a + "fstab" line 12
2 # = "fstab.bak" line 1
2、 切换到第二个附近,复制其中的内容:
:buffer 2
"fstab.bak" [readonly] 2L, 95C
3、 复制文件中的第一行内容:
yy
4、 切换回第一个文件:
:buffer 2
"fstab" 12L, 808C
5、 粘贴复制内容,在插入点录入 y复制命令:
p
我们可以看到已经完成了操作。
方法二: 多窗口方法:
Vi本身也是支持多窗口操作,你知道么,看我们如何操作:
操作顺序:
1、 打开第一个文件 fstab:
vi fstab
2、 在vi里面打开第二个文件:
:new fstab.bak
是否看到vi把窗口切分为上下两个编辑窗?
3、 复制 fstab.bak中的内容,目前活动窗口为fstab.bak,我们输入命令 yy 复制当前行。
yy
4、 切换到fstab窗口,这个需要使用符合命令:
Ctrl + w j
命令的操作方法是同时按下 ctrl 控制键 和 w 键,松手后再按下 j键,是否已经看到光标移动到了下面的窗口。
5、 粘贴所选内容:
p
Ok,如何,文件复制完成了吧?
方法三:插入方法:
使用word,我们大多都使用过插入一个文件的方法,vi 也很cool,同样存在这个方法。
操作顺序:
1、 打开第一个文件 fstab:
vi fstab
2、 把光标放置到插入点,录入命令:
:r fstab.bak
3、 已经可以看到fstab.bak中的内容已经插入到了fstab。
Vi 的功能是否没有你想的那么简单,关于多文件的操作,更详细的操作可以参考上面提到的两本书。多掌握一些vi的操作,会让你在linux的管理上面更加方便。