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源创计划”,欢迎正在阅读的你也加入,一起分享。
vim 之中 U 命令的浅析的更多相关文章
- vim在编译器 . 命令(点命令)
时间:2014.06.28 地点:基地 -------------------------------------------------------------------------------- ...
- vi/vim 光标移动命令(转载)
转载至:https://www.cnblogs.com/Jacklovely/p/6015037.html vi/vim 光标移动命令 移动光标上:k nk:向上移动n行 9999k或gg可以移到第一 ...
- vi/vim 光标移动命令
vi/vim 光标移动命令 移动光标上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行下:j nj:向下移动n行左:h nh:向左移动n列右:l nl:向右移动n列 w:光标以 ...
- vi和vim区别及命令详解
vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本.vi使用于文本编辑,但是vim更适用于coding. 现将vim的命令行收集于下: vi有3个模式:插入模 ...
- vim显示历史命令
[vim显示历史命令] q: 进入命令历史编辑.类似的还有 q/ 可以进入搜索历史编辑.注意 q 后面如果跟随其它字母,是进入命令记录. 可以像编辑缓冲区一样编辑某个命令,然后回车执行.也可以用 ct ...
- Vim保存文件命令 ":wq" 与 ":x" 的区别
CSDN转载 [1] Vim是Unix/Linux系统最常用的编辑器之一,在保存文件时,我通常选择":wq",因为最开始学习vim的时候,就只记住了几个常用的命令:也没有细究命令的 ...
- Linux下Vim工具常用命令
原文地址: http://www.cnblogs.com/lizhenghn/p/3675011.html 在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚 ...
- vim经常使用命令总结
vim 选择文本,删除,复制,粘贴 文本的选择,对于编辑器来说,是非常主要的东西,也常常被用到,总结例如以下: v 从光标当前位置開始,光标所经过的地方会被选中,再按一下v结束. V ...
- 再探vim经常使用命令
最開始学习过vim,见 http://blog.csdn.net/u011848617/article/details/12837873 之后以前不了了之,当再次学习后,发现经常使用命令的掌握还 ...
- vim全局替换命令
vim全局替换命令 语法为 :[addr]s/源字符串/目的字符串/[option]全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行.如:“1,20” ...
随机推荐
- java 企业级开发中常见的注入方式
1.Spring 注入有四种方式: ・set 注入 这是最简单的注入方式,假设有一个 SpringAction,类中需要实例化一个 SpringDao 对象,那么就可以定义一个 private 的 S ...
- 跨域解决方案CORS
这里说的 js 跨域是指通过 js 在不同的域之间进行数据传输或通信,例如通过 ajax 向一个不同的域请求数据,或者通过 js 获取页面中不同域中(iframe)的数据.只要协议.域名.端口有任何一 ...
- 小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我
开发php,还是找个专业的Ide较好,vscode毕竟在php上不专业,需要下载各种插件才行,还不支持多线程调试,因此小编下载了phpstorm,打算以后用phpstorm来开发php项目,断点调试代 ...
- ASP.NET Core - 选项系统之源码介绍
.NET Core 选项系统的主要实现在 Microsoft.Extensions.Options 和 Microsoft.Extensions.Options.ConfigurationExtens ...
- ArcGIS Pro处理发布并在前端调用bim数据全过程-rvt转slpk
记录ArcGIS处理三维bim模型全纪录,从原始的rvt格式开始,到最后web前端js api调用的整个过程,并记录部分中间操作过程中出现的问题和解决办法. 本文示例使用: 软件:ArcGIS Pro ...
- day07-OpenFeign-服务调用
SpringCloud OpenFeign-服务调用 1.OpenFeign介绍 https://github.com/spring-cloud/spring-cloud-openfeign Open ...
- 2023成都.NET线下技术沙龙圆满结束
2023年4月15日周六,由MASA技术团队和成都.NET俱乐部共同主办的2023年成都.NET线下技术沙龙活动在成都市世纪城新会展中心知域空间举行,共计报名人数90多人,实际到场60多人,13:30 ...
- 关于Java中值传递和址传递
参数传递在Java中有两种类型 值和址 其实本质都是一份拷贝 在调用函数的时候 进行压栈 传进来的参数会被开辟一份新的空间 传基本类型是把值传过去 传引用数据类型是实例指向实参 void m(int ...
- CopyOnWriteArrayList的使用和优缺点
CopyOnWriteArrayList允许并发读,读操作无锁,性能较高: 而写操作(含删除),比如向容器中添加/删除一个元素,则首先将当前容器复制一份,然后在新副本上执行写操作,结束之后再将原容器的 ...
- MQTT-主题基础
MQTT主题 MQTT的主题是一个utf-8编码的字符串,最大长度65535字节,严格区分大小写 MQTT主题支持分层结构,主题分隔符用'/'表示,主题的层级长度可以为0 # 将主题划分为3个层级 ' ...