vim 之中 U 命令的浅析

以下文章来源于CSDN,作者翼天使56,本文章经原作者同意后授权转载。

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

cb41badd-33c7-4e32-9257-2dcf9b6c836d.jpg

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

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

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

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

bae07588-cdb1-46a1-93d4-df76bd729cea.png

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

434dc7a8-5b93-479f-9ce7-2da0328b5d38.png

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

2311a501-35a0-41db-a0f2-a8cce7cdaee8.png

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

7e9f1ad9-163d-4b2f-b49f-67857c800e7b.png

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

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

bae07588-cdb1-46a1-93d4-df76bd729cea.png

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

4ad71789-57d8-46e6-8c8f-dc68b47a061c.png

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

589681e2-6680-453d-96da-38d890381e4f.png

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

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

b63dc44f-7dda-4393-b330-911f67f634ef.png

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

posted @ 2020-04-25 10:00  章鱼猫先生  阅读(18)  评论(0编辑  收藏  举报