vim之中U命令的浅析

来源:互联网 发布:ipad1如何下载软件 编辑:程序博客网 时间:2024/06/07 16:26

    今天看vim帮助文档的user-manual的第二章,发现了还有U(大写)这个命令,于是反复实验,略微搞懂了一点它的用处,特地拿来和大家分享一下!

首先说个人理解吧,个人认为命令U之后有一个缓存,这个缓存每次只保存一行的内容。那么这个缓存什么时候更新呢?两种情况:

    1. 开始编辑某一行之后(注意是之后),这个编辑的概念就是对某一行作出了改变,并且再去编辑其他行之前。那么这个缓存就会保存这一行最开始的内容!如果此时再改变这一行,U的缓存是不会更新的!

    2.按下U键之后,按下U键之后,U把缓存中的内容还原出来,并且把当前内容存到缓存里面!

举个例子,首先说每次只针对一行,比如说我有一个文件如下(这个句子到底要表达个啥,我也不明白,vim的user-manual就是给出了个这句子!):

然后,我用v+d键首先删除第二行的Found,然后再删除第一行的A young。这时文本内容变成了这个样子:

此时,如果我按一下U键,那么还原的将是第一行的内容,如下:

    因为U键每回只保存一行的缓存,我编辑完第二行之后,保存的是第二行的缓存,然后我又去编辑第一行,编辑完第一行之后,保存的又是第一行的缓存。编辑完之后,我按下U键,自然就是还原第一行的缓存了!如果我此时再按下U键,又会发生什么情况呢?如下:

    为什么会变成这样呢?这是因为我编辑完第一行之后,保存的缓存是“A young intellingent turtle”(第一点,每次编辑完第一行之后,更新缓存),所以第一次按U第一行会还原成"A yong intellingent turtle",就在还原的同时,U的缓存自动更新,更新成了"intellingent turtle",所以在我第二次按下U之后,又把第一行还原成了"intellingent turtle"。(第二点,按下U键之后更新缓存!)

   

    对于第一点我再举个例子,还是刚刚那个文件,如下:

    如果我先删除了第一行的Found,然后按下<ESC>返回到了normal模式,又去删除了UNIX,结果如下:

   此时,我按下U,那么还原的结果将会是这个样子的,如下:

    这就是我在第一点说的,缓存中保存的是(开始编辑)某一行(前)最开始的样子!


     Ok,这就是我对于vim中U键的理解,由于本人才疏学浅,若有缪误之处,还请多多指出!

0 0