学习vi和vim编辑器(5):越过基础的藩篱

本章将对以前学习的编辑命令如" c "。" d "。“ y ”等命令进行总结,并学习一些新的知识:其它进入vi的方法,利用缓冲区来存储拖曳或删除的文本以及怎样在文件里作标记。编辑器

不少其它命令的组合:post

以前已经不止一次讲过,对于" c ", " d "," y "等命令具备"command""TextObject"的使用形式,即这些编辑命令可以与光标移动命令进行组合使用。经过光标移动命令来表示编辑命令将会影响的文本范围。现在将这些组合命令进行简单的总结,也是对以前学习知识的回想:学习

更改 删除 复制 从光标位置到......spa

cH     dH   yH     当前屏幕顶端命令行

cM  dM   yM        当前屏幕中间编译器

cL      dL      yL           当前屏幕底端it

c+    d+     y+          下一行编译

c5|   d5|    y5|          本行第五列class

c2)  d2)   y2)       往下第二个句子(文件结束方向)file

c{     d{       y{           往前一个段落(文件開始方向)

c/pattern  d/pattern  y/pattern  往下pattern第一次出现的地方

cn     dn    yn        下一个模式

cG    dG    yG        到文件结尾

c9G d9G  y9G  到文件第九行

打开vi的选项:

以前已经讲过 "vi filename"这样的简单的方法来使用vi编辑器打开文件。还有很是多好用的vi命令打开选项。前进到特定位置:可以在命令行中指定打开文件后光标第一次移动的方式。好比依据行号或搜索结果移动。

vi +n file:在第n行打开文件;

vi + file:在最后一行打开file;

vi +/pattern file:在第一个出现pattern的地方打开file;

这些命令中可以使用" + "。也可以使用" - ",通常来讲,两种方法都能接受。但实际測试时。发现用" - "会出现错误,例如如下图所看到的,是否是书上又讲错了?临时先记录下来吧。


这些vi编辑器的打开选项对程序猿来讲很实用。

好比当编译一个源文件时出错时,编译器都会把编译出错的相关行号信息显示出来。所以咱们可以直接在打开文件时就定位当对应的行上。例如如下图所看到的:


而且,当咱们在编辑文件的时候。假设正好编辑到一半而不得不临时离开时,可以在当前位置用某个模式标记起来,如"HERE",当咱们回来时,仅仅需要"vi  +/HERE  file"就能够。

仅仅读模式:可以以仅仅读模式打开一个文件,这样就没必要操心不经意间改动文件了:

vi -R filename;

view filename;

view命令也像vi命令,事实上view仅仅是vi的连接:

假设在仅仅读模式中想要改动文件并保存改动,则需要使用" :w! "。感叹号就表明覆盖掉仅仅读模式。

恢复缓冲区:当编辑文件时,假设系统发生了错误。此时自从上一次存档以来所作的文件修改都会消失,可以使用-r选项恢复系统死机时的编辑缓冲区。

vi -r 或者 ex -r:获得系统保存下来的所有文件列表;

vi -r filename:可以恢复文件名称相应的编辑缓冲区。

:pre:强制系统即便在没有死机时也保存缓冲区;

善加利用缓冲区:

以前已经提过,对于最后一次删除或拖曳的内容(删除和拖曳操做共享一样的缓冲区)会被保存到缓冲区中,可以使用放置命令将这些文本放回到文件里。

同一时候,vi编辑器会将最后九次删除操做保存到有编号的缓冲区中,可以恢复这些缓冲区中的不论什么一个。

但是仅仅有以行为单位的删除本文才会被保存到编号缓冲区中,对于删除一行中的一部分,或者单词的一部分等,都不会被保存到编号缓冲区中。此时仅仅能在删除操做发生以后立刻用p命令进行恢复。

在这些编号缓冲区中,最后一次删除的内容保存在缓冲区1,倒数第二次删除的内容保存到缓冲区2,依此类推。假设要恢复某个编号缓冲区内容,首先输入 "(双引號),再指定缓冲区编号,再使用放置命令,好比 "1p。

假设不肯定哪一个缓冲区中存放了要恢复的内容,不需要不停的输入 "np进行尝试。相反,因为在p命令以后使用反复命令" . "时。会本身主动添加缓冲区的编号,再结合撤销命令(u)。就能够按编号逐步查看每个缓冲区的内容,从而进行正确的恢复。命令形式例如如下:"1pu.u.u.u. 依此类推。

同一时候。vi可以将拖曳或删除的文本放在以字母为标号的命名缓冲区中,这些文本可以保存到26个缓冲区(a-z)中,并且可以在编辑会话的不论何时使用放置命令来恢复这些文本。假设某个命名缓冲区中已经存放了文本,此时继续向该缓冲区中放置文本,则新的文本会覆盖该缓冲区中已经存在的文本,即以前的文本会消失。

要将文本保存到命名缓冲区中,需要在拖曳或删除命令以前加上双引號(")以及缓冲区的名字(a-z)。好比:"add即将删除的该行内容保存到命名为a的缓冲区中。恢复时,仅仅需要输入双引號,加上缓冲区的名字(a-z)。以及放置命令p,就能够恢复某个命名缓冲区的内容,如"ap。

当使用大写字母指定缓冲区时。拖曳或删除的文本会附加到对应的缓冲区中。

对一处作标记:

可以在文本的某处作一个看不见的书签。而后在别处编辑时,可以依据相关的命令回到对应的书签位置。需要注意的是,标记仅仅在当前编辑会话中有效。并不会存储在文件里。

mx:将当前位置标记为x(x可以是不论什么字符);

'x:(单引號)将光标移动到标记x所在行的第一个字符。

`x:(反引號)将光标移动到以x标记的字符处;

``:(两个反引號)在移动位置以后,回到上一个标记;

'':(两个单引號)回到上一个标记所在行的开头;


本章vi编辑器命令总结:

vi +n,vi +,vi +/pattern。vi -R,view。 vi -r,:pre,"1p,"ayy。"ap,mx。'x,`x,``,''。

相关文章
相关标签/搜索