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

今天看 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,然后按下 返回到了 normal 模式,又去删除了 UNIX,结果如下:


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


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

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

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

vim 之中 U 命令的浅析的更多相关文章

  1. vim在编译器 . 命令(点命令)

    时间:2014.06.28 地点:基地 -------------------------------------------------------------------------------- ...

  2. vi/vim 光标移动命令(转载)

    转载至:https://www.cnblogs.com/Jacklovely/p/6015037.html vi/vim 光标移动命令 移动光标上:k nk:向上移动n行 9999k或gg可以移到第一 ...

  3. vi/vim 光标移动命令

    vi/vim 光标移动命令 移动光标上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行下:j nj:向下移动n行左:h nh:向左移动n列右:l nl:向右移动n列 w:光标以 ...

  4. vi和vim区别及命令详解

    vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本.vi使用于文本编辑,但是vim更适用于coding.     现将vim的命令行收集于下: vi有3个模式:插入模 ...

  5. vim显示历史命令

    [vim显示历史命令] q: 进入命令历史编辑.类似的还有 q/ 可以进入搜索历史编辑.注意 q 后面如果跟随其它字母,是进入命令记录. 可以像编辑缓冲区一样编辑某个命令,然后回车执行.也可以用 ct ...

  6. Vim保存文件命令 ":wq" 与 ":x" 的区别

    CSDN转载 [1] Vim是Unix/Linux系统最常用的编辑器之一,在保存文件时,我通常选择":wq",因为最开始学习vim的时候,就只记住了几个常用的命令:也没有细究命令的 ...

  7. Linux下Vim工具常用命令

    原文地址: http://www.cnblogs.com/lizhenghn/p/3675011.html 在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚 ...

  8. vim经常使用命令总结

    vim 选择文本,删除,复制,粘贴   文本的选择,对于编辑器来说,是非常主要的东西,也常常被用到,总结例如以下: v    从光标当前位置開始,光标所经过的地方会被选中,再按一下v结束. V     ...

  9. 再探vim经常使用命令

     最開始学习过vim,见 http://blog.csdn.net/u011848617/article/details/12837873 之后以前不了了之,当再次学习后,发现经常使用命令的掌握还 ...

  10. vim全局替换命令

    vim全局替换命令   语法为 :[addr]s/源字符串/目的字符串/[option]全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行.如:“1,20” ...

随机推荐

  1. maui BlazorWebView+本地html (vue、uniapp等都可以) 接入支付宝sdk 进行支付宝支付 开发 Android app

    首先添加支付宝sdk的绑定库 nuget 包:Chi.MauiBinding.Android.AliPay 项目地址:https://github.com/realZhangChi/MauiBindi ...

  2. Nacos 实现 AP+CP原理[Raft 算法 NO]

    来源于网络 一.什么是 Raft算法 Raft 适用于一个管理日志一致性的协议,相比于 Paxos 协议 Raft 更易于理解和去实现它.为了提高理解性,Raft 将一致性算法分为了几个部分,包括领导 ...

  3. 如何用浏览器读取本地文件(兼容IE8),new bing能帮我吗?

    浏览器读写文件? 有一份老旧而精巧的代码(2006或更早),带js的html,可以只用浏览器来处理一些二进制存档数据. 文件的读写怎么办?通过变动的方法来完成. 利用十六进制编辑软件如WinHEX,直 ...

  4. NoSQL之 Redis配置与优化

    目录 一.缓存概念 1.1 系统缓存 1.1.1buffer与cache 1.2 缓存保存位置及分层结构 1.2.1 DNS缓存 1.2.2 应用层缓存 1.2.3数据层缓存 1.2.4 硬件缓存 二 ...

  5. python中文文档

    这是在线中文文档 https://docs.python.org/zh-cn/3.7/library/winreg.html

  6. [JavaScript]使页面内目标关键字高亮

    1 源码 function keywordHighlighten(querySelector, key, bgColor){//文本关键字高亮 var doms = document.querySel ...

  7. [Linux]U盘启动盘安装CentOS7系统(LiveGNOME版)

    1 准备:工具 U盘 容量:视CentOS具体版本需要而定.推荐4G+ UltraISO(软碟通) ISO制作工具 / U盘启动盘刻录工具 2 制作:U盘启动盘 step1 下载CentOS镜像 Ce ...

  8. 浅析Nordic nRF5 SDK例程架构

    很多刚接触Nordic nRF5 SDK的初学者出于对新平台的不熟悉,会觉得这个SDK很难,本文讲浅析nRF5 SDK中例程的架构,让初学者能够快速上手SDK. 在开始之前,先推荐阅读观看下面这些文章 ...

  9. Ubuntu系统Flameshot使用问题

    Ubuntu系统Flameshot使用问题 系统:Ubuntu22.04 问题:使用Flameshot,每次都会先截取整个屏幕,提示需要先分享,再使用Flameshot的功能 安装Flameshot ...

  10. DG:switchover切换操作

    问题描述:我们配置DG的目的就是为了在主库出现故障时,备库能够提供服务,保证业务的正常运行,switchover是用户有计划的进行停机切换,能够保证不丢失数据,我记录一下我进行switchover中的 ...