vim 之中 U 命令的浅析
以下文章来源于CSDN,作者黑翼天使56,本文章经原作者同意后授权转载。
今天看 vim
帮助文档的 user-manual 的第二章,发现了还有U
(大写)这个命令,于是反复实验,略微搞懂了一点它的用处,特地拿来和大家分享一下!
首先说个人理解吧,个人认为命令U
之后有一个缓存,这个缓存每次只保存一行的内容。那么这个缓存什么时候更新呢?两种情况:
开始编辑某一行之后(注意是之后),这个编辑的概念就是对某一行作出了改变,并且再去编辑其他行之前。那么这个缓存就会保存这一行最开始的内容!如果此时再改变这一行,
U
的缓存是不会更新的!按下
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,然后按下 返回到了 normal 模式,又去删除了 UNIX,结果如下:
此时,我按下U
,那么还原的结果将会是这个样子的,如下:
这就是我在第一点说的,缓存中保存的是(开始编辑)某一行(前)最开始的样子!
Ok,以上就是我对于vim
中U
键的理解,由于本人才疏学浅,若有缪误之处,还请多多指出!
本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。