Linux学习第二十篇--大爱vim之高级操作

VIM的高级操作

vim操作流程分析

在上一篇,我们了解了vim的基本操作,这一篇主要叙述vim的一些高级操作.

当然,首先,我们还是要了解一下vim的运作过程(这个流程是我根据自己所学,理解整理的,不一定准确,但大致过程应该如此).

Linux学习第二十篇--大爱vim之高级操作

按照我的理解,当我们使用vi或者vim指令来编辑文件的时候.

系统会先开辟一个缓冲区用来存放文件的数据,如果指定的文件存在,那么就加在文件的内容到缓冲区,如果不存在,则不执行动作.

同时,在同级目录下生成一个[指定文件名称].swap的临时文件(该文件是隐藏文件).

当我们编辑缓冲区数据的时候,将会将操作写入[指定文件名称].swap文件.

接下来,当我们退出vi编辑器的时候,如果我们选择保存,就将[指定文件名称].swap中的数据同步到该文件中去.

如果不保存,那么则不同步.

最后删除掉[指定文件名称].swap文件.并释放掉处理该文件使用的资源.

vim意外数据恢复

在了解了vi编辑器大致流程后,我们就可以尝试分析如何恢复文件.

根据刚才分析的vim流程,我们可以明确的知道.当我们使用vim编辑器编辑文件的时候,会生成一个.swap的隐藏文件.这个文件在一开始就已经生成了.

之后我们所有的操作都会被记录在这个.swap文件中.

只有整个操作完全执行完毕,才会将该文件删除.

也就意味着 ,当我们使用vi编辑器途中,如果出现意外终止,比如宕机等突发事件,我们可以根据这个swap文件来恢复数据.
假设我们遇到了这种情况,当我们打开文件时,会出现如下提示.

Linux学习第二十篇--大爱vim之高级操作

第一行给出了报错,

第二行到第八行给出了报错文件的信息.

接下来是给出了可能隐藏该报错的原因.一种是有其他人在操作该文件,另一种是该文件操作过程中遇到过崩溃.

看一下中文版的提示.

Linux学习第二十篇--大爱vim之高级操作

这几个模式就没什么好说的了...顾名思义,你懂得.

what!?你问我,那里有恢复数据...这个,要不,你在仔细看看...研究研究...

VIM编辑器的高级操作

我们已经了解了很多vim的操作,我们也知道,vim的定位不仅仅只是一个文本编辑器,他更是一个程序员用于编写的代码的工具.

那么,很多IDE工具具有的列编辑功能,VIM有吗?

还有,如果我们想复制的数据不在同一行,又该如何.?

下面就聊一聊vim的文件选中功能.

在vim编辑器中,我们可以通过v/V/[CTRL]+[V]来进行选取数据,然后配合我们之前学的y/d/p命令,我们就可以实现其他很多额外的功能.

其中这里:

v 会将光标经过的地方反白选择.这里说的是字符.
V 将光标经过的行反白选择,这里说的是行
[CTRL]+[v] 区块选择,可以选择一个范围内的数据进行反白选择.
y 复制反白区域的数据
d 删除反白区域的数据

看一下上面这表格,我们可以通过这三个指令来灵活的选取数据.


同时,vi编辑器还提供了多文件编辑的功能.

我们先看一下vi的帮助手册

Linux学习第二十篇--大爱vim之高级操作

可以看到,vi后面可以接一个文件列表.多个文件之间使用空格分隔.

当我们打开多个文件的时候,

我们可以通过   :files指令列出当前vim开启的所有档案.

Linux学习第二十篇--大爱vim之高级操作

利用:n 查看下一个文件.

利用:N 查看上一个文件

这样多个文档之间共享剪切板,可以跟方便我们在多个文件之间复制粘贴.

同样,vi编辑器还提供了多窗口模式.

我们可以通过:sp 文件名称   来分割出一个窗口显示出指定文件的内容.

Linux学习第二十篇--大爱vim之高级操作

当我们打开多个窗口的时候,我们可以使用[ctrl]+[w]组合键,之后按下上下键来切换窗口.如何紧接着按下的是q则退出当前窗口.

补充:

我们知道在linux中一切皆文件,vim编辑器也有很多的参数,他们当然也有文件来配置其参数.比如~/.vimrc文件和~/.viminfo文件.

vi编辑的参数很多,如果需要了解的话,可以在vi编辑器中使用:set all 指令来查看.