vi编辑器进阶功能
       在linux下有三个主要的编辑器:vi、vim 、emacs。这三个都可以用来编辑文件,今天就和大家一起来共同学习一下vi的用法。
          用vi可以打开一个已经存在的文件,而且如果文件不存在则创建此文件并打开一个空的新的文件,可以在里边进行编辑。
        vi有三种模式:
               1、命令模式(command mode) 在命令模式下可以进行光标的移动,    
 
                                                                              删除字符和整行删除,以及复制操作。
                                                                               下面是一些在命令行下的一些用法:
                                                                              G:用vi打开一个文件后,在键盘摁下大写的G后,光标可以直接进入最后一行。1G:同样的,在键盘上摁下1G后光标可以跳到文件的第一行。
ctrl-d:光标能跳到屏幕的中间,ctrl-u光标也能跳返回到刚才切换回来的位置;
在命令模式下快速切换光标的位置:
H(HIGH)可以快速切换到屏幕的顶部,
M(Middle)可以快速切换到屏幕的中间,
L(Low)可以快速切换到屏幕的底部。
在屏幕上输入小写的z然后按enter可以使光标所在的行换到文件的第一行,
在屏幕上输入小写的z然后在摁 -  可以使光标所在的行切换到文件的最后。
在命令模式下可以把命令的输入插入到正在编辑的文件中,也可以把文件里的资料当做输入来使用,以下是几个范例:比如正在vi编辑一个新的文件myfilevi编辑器进阶功能(一)_职场
编辑过程中想要把root的输入插入到这个文件中,可以用!!ls -l命令把root下的内容插入到myfile文件中vi编辑器进阶功能(一)_休闲_02
在输入两个!!后会变成是:,!这是正常的,不要惊讶,接着输入ls -l就可以把root里边的内容输入到myfile里边了。如上图所示。
第二个例子是!!date命令,假如想把想要把正在编辑的myfile文件加上一个时间戳记,那么就有!!date,如下图所示:vi编辑器进阶功能(一)_休闲_03
这样就把现在编辑的时间插入到这个文件里边了。
下边在来看一个例子!}sort,看下边的图片:vi编辑器进阶功能(一)_休闲_04
输入完!}之后又会看到一些乱七八槽的符号,不要管它,然后接着输入sort可以看到文件被重新排列了,这就是将输入的文件做排列,如下图所示:vi编辑器进阶功能(一)_职场_05
接着看最后一个例子:!}fmt -w60 .先输入!},会出现下图那样一些奇怪的符号,先不用考虑:vi编辑器进阶功能(一)_休闲_06然后再接着输入fmt -w60(这个命令的方式是将段落的宽度限定在60个字,超过60个自动换行)会显示如下画面:vi编辑器进阶功能(一)_休闲_07超过60个字的行都自动换了行。
在执行模式下(excutable mode)可以进行插入,修改文件内容的操作,下边学习一下查找替代关键字的操作。sed命令可以进行查找和替换。例如从新打开并编辑一个文件testvi打开,里边有30行的内容,可以用:s/This/That把光标所在行的This变成That。vi编辑器进阶功能(一)_休闲_08vi编辑器进阶功能(一)_休闲_09
可以看到This已经变成了That了,不过本行的第二个This还是没有改变,没有关系,可以用这个命令可以把整行的关键字进行替换:s/This/That/g ,看下这个命令的效果哈:vi编辑器进阶功能(一)_职场_10
整行的This已经用That代替了。
接着看下边的例子:如果想要把第一行到某行的某个关键字都改变了怎么办呢?哈哈,咱就用1,10(比如说到第十行,也可以到20行,30行都可以)逗号是区间的意思。1,10s/This/That/g这个命令:vi编辑器进阶功能(一)_职场_11
下边是这个命令的效果哈:
vi编辑器进阶功能(一)_休闲_12
 
那么如果想要对整个文件作搜寻和替代呢,那么就有1,$或者是%都可以,接着后面输入要替代的内容。比如先用1,$s/This/That/g,其中','表示间隔的范围,$表示是文件的最后面:
vi编辑器进阶功能(一)_休闲_13
按下enter看看效果:
vi编辑器进阶功能(一)_休闲_14
上面出现提示30行,60个关键字被替换。
顺便看看%的作用哦
vi编辑器进阶功能(一)_休闲_15
 
输入%s/This/That/g后,然后摁下回车键看看效果哈:
vi编辑器进阶功能(一)_职场_16
看到了和1,$s/This/That/g一样的效果。
 
接着看看一个比较灵活的查询和替代的方法:.,.+n,点(.)表示是光标所在的行,点加n表示是光标所在的行及以下的n行,比如说我们现在在第4行,想要改变4到7行的内容就可以用 .,.+3s/This/That/g
vi编辑器进阶功能(一)_休闲_17
按下enter看下效果:
vi编辑器进阶功能(一)_职场_18
看到4到7行的内容已经改变了吧,那么我们可以想到有减号也可以逆向改变,在这里就不做示例了。