学会使用Linux的文本编辑工具vi

文章类别 in linux

什么是vi?

vi是Linux的文本编辑器,vi编辑器有两种工作方式,那就是命令模式文本模式,这两种模式都可以进行切换,在命令模式下,我们输入的字符就会被解释为vi命令,用来执行我们想要操作文本内容的方式,比如替换搜索,插入等等在接下来会讲到,当我们切换到文本模式的时候,那么我们输入的字符就是以文本本身的内容来作为文件的接收了。正是vi有了命令模式和文本模式,使vi编辑器非常强大,而且它占用的资源很小,所以vi虽然短小,但且强悍有力。不像某些人,既短小,又无力!

怎么使用vi?

内容编辑和保存

接下来我就用一个例子,把所有vi常用的使用命令都使用起来。从这个例子中看完会发现,原来vi这么牛逼,而且这么好用…

现在,我要打开或创建一个文本myViFile,因为我现在还没有myViFile这个文件,所以我就用vi来创建一个myViFile文件:

vi myViFile

当我按下回车的时候,就进入vi的命令模式里面去了:

vi myViFile

可以看到现在里面什么东西都没有,这时我来往里写点东西吧,那么就用插入命令来切换到文本模式才能往文件里面写内容了,按一下 i,就是切换到文本模式,可以看到左下角变成–INSERT–了。

然后我就输入一段文字:

vi myViFile

假设现在我输入完了,想要保存一下,这时候就可以用 Esc 切换到命令模式(当你按下Esc的时候会发现左下角的 INSERT 消失了,所以这个时候vi是属于命令模式的),然后输入 「:w」 然后按回车来保存内容。

如果这个时候想退出vi,那么我们可以输入 「:q」退出。

当然了,聪明的你肯定想着说能不能直接保存并退出了,那就用 「:wq」就可以对我们刚刚输入的内容保存起来并且退出vi了。

现在我们重新打开myViFile文件吧: vi myViFile。然后输入命令「i」进入文本模式,我们如果不小心把freestyle删掉了,想要撤回怎么办?像这样:

vi myViFile

那就按「Esc」切换到命令模式,然后输入「u」就可以撤回啦!

我们现在的文本只是一句话,我们想要另起一行继续书写,怎么办呢? 那么就键入命令「o」,光标就会跳到下一行开始让我们书写啦:

vi myViFile

接下来要说的就是我们常常会用到的复制粘贴了,这两个命令分别对应于 「yy/yw」(yy复制整行,yw复制光标所在的单词) 和 「p」,比如现在我复制最后一行,然后粘贴,那么在最后一行按Esc切换为命令模式,然后输入yy,再按p,每按一次p就粘贴一次了:

vi myViFile

yw复制单词和yy同理,这里就不演示了 - -

我们还可以对一整行删除,也可以对光标所在的单词删除,命令分别对应于「dd」和「dw」。

光标移动

好了 现在我们的文本已经有些内容了,如果我们要对文本里面的内容进行编辑操作,怎么样能高效的使用呢?那么我们对一些常用的光标移动命令要会使用。

  • 「h」「j」「k」「l」 分别是光标向左、上、下、右移动一个字符。
  • 「H」「L」分别是光标移动到最顶、末一行。
  • 「w」「b」 分别是 向右、左移动一个字。
  • 「n+」「n-」分别是向下、上移动n行数。

ok..光标移动就以上这几个就够用的了。

搜索替换

当然了,文本编辑器怎么能没有搜索替换呢?那么接下来就对搜索替换进行操作。

我们继续用刚刚创建的myViFile文件,我们复制第一行的内容到后面粘贴一些,用来演示我们的搜索替换,现在我们的文件内容是这样的:

vi myViFile

现在我们要向下搜索 freestyle这个单词,那么就可以用 「?freestyle」:

vi myViFile

然后我们按「n」就可以跳到每一个有freestyle的地方了。

接下来我们对内容显示行号「:set nu」:

vi myViFile

如果想把我们光标的当前行的freestyle改为heiheihei就可以这样「:s/freesyle/heiheihei/g」

vi myViFile

可以看到第一行的freestyle就被替换为heiheihei了。

如果我们想替换整个文本的freestyle为heiheihei的话就可以这样「:1,23s/freestyle/heiheihei/g」,表示从第1行到23行的所有freestyle都换成heiheihei。