vim 寄存器中的 ^@,^M,^J

首先,ASCII 码表示的字符不都是可打印字符(可显示字符),意味着,其中的控制字符本不是对应某个字形的,所以本没有办法看到他们。那么如果万一某个文件中出现了这些怎么办捏??这里我们需要再了解下啥叫“纯文本文件”。这个概念我们经常见,但其实现在已经被各种滥用。通俗讲,应该是主要由可见字符组成的文件,比如纯 ASCII 可见字符、Unicode 非控制字符等……这个概念针对的是“二进制文件”,即任何二进制序列的字节都可能存在的文件。然后“纯文本编辑器”就是用来对付纯文本文件的编辑器,由于字符大多可见,只需要按字符对应的字形显示出来,大家就知道它是谁了。那如果万一有个文件,里面的某个编码位置在字体中没有字形咋办?这个问题,取决于编辑器的作者决定怎么办,——比如,跳过去不管,比如显示个问号或者别的啥,又比如想办法把编码显示出来。Vim 选择了一种很帅气的解决方案:ASCII 0-31 部分的所有字符,将编码加上 64 之后对应的全部为可打印字符,于是将 0-31 位置的字符,用 ^ 跟转换之后对应的那个字符绑在一起当作一个字符显示出来,既简洁又实用,——是为“脱字符表示法”。例如,0x00 对应 ^@ (0+64),0x0D(回车)对应 ^M (13+64)……

BTW,脱字符表示法还刚好对应了 Vim 的另几个霸气的功能:i_Ctrl-V 之后将插入键的“本意”。比如 i_Ctrl-V 之后按回车,你将得到 ASCII 字符 0x0D,既显示为 ^M 的那个东东。再来一个,i_Ctrl-V 之后 Ctrl-@,你将得到 ASCII 字符 NUL。所以作为一个霸气侧漏的文本编辑器,Vim 可以让你有机会显示、输入非打印字符(see :h i_Ctrl-V, :h i_Ctrl-V_digit, :h i_Ctrl-K),是不是很爽?最后,关于那个 reg 文件。Windows 下有个很蛋疼的编码叫 Unicode 16,就是每两个字节表示一个字符。这个编码之所以蛋疼就是,如果只有 ASCII 字符,文件会比本该的大小大一倍;更蛋疼的是,这个格式不好做编码检测,很多文本编辑器对这个的支持不好。如果你用记事本打开,或者直接在 cmd 里面 type,都能轻松看懂里面是啥;可是文件里面明明应该是 0x41 的字符,却成了 0x0041 或者 0x4100,我们 Vim 就只好把多出来的那个字节 0x00 显示成 ^@

输入 i_Ctrl-V 之后按回车,你将得到 ASCII 字符 0x0D,也就是回车符号,在字面上显示为 ^M

是指你在普通命令模式下,输入 i 切换到插入模式,然后按下组合键 Ctrl + v,在光标处会出现符号 ^,此时按下“回车键”,就在光标处插入 ^M 这样的字符了。

查看 i_Ctrl-V 的在线说明文档,则是在底行命令模式下输入 h i_Ctrl-V

就是切换到底行命令模式下后,输入 h 再输入 i,再输入下划线 _,再输入单词 ctrl,再输入连字符-,再输入字符 v,大小写都可以,输完后按下“回车键”,就可以打开在线说明文档,如下图所示:
在这里插入图片描述

输入 i_Ctrl-V 之后,再输入Ctrl-@ 可以在文档中插入空字符 NUL

在普通命令模式下输入 i,切换到插入模式后,按下 Ctrl 键不放,再按下字母 v 键,然后同时放开,就会在光标处出现 ^,接着输入组合键 <Ctrl-@>,就是先按下 Ctrl 不放,然后再去按 @,然后同时放开,就可以插入 ^@,代表空字符。

ASCII 码表在线查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019怎么保存低版本_CAD发给客户没字体怎么办?快速打包外部参照、字体、打印样式...

CAD发给客户没字体怎么办&#xff1f;快速打包DWG外部参照、字体、图片、打印样式&#xff01;有没有遇见过这样的情况&#xff1a;图纸发给客户&#xff0c;外部参照的文件没有一起打包发出去&#xff0c;被老板和客户臭骂一顿。图纸发给审图&#xff0c;没有字体&#xff0c;…

Python正则表达式笔记

正则表达式作用函数函数参数查找函数re.findall()re.search()re.match()re.finditer()re.compile()函数替换函数re.sub(pattern,repl,string,count0,flags0)re.subn()分割函数re.split()模式串字符字符类别表达(匹配单个字符)\d\D\s\S\w\W[a-z][^a-z].多次匹配字符*&#xff1f…

CentOS Linux 下的 vim 无法使用系统剪贴板,怎么解决呢?

文章目录查看系统当前的 vim 是否支持剪贴板安装 gvim 来支持系统剪贴板gvim 和 vim 的区别SSH 连接远程主机遇到的问题查看系统当前的 vim 是否支持剪贴板 首先查看下系统的 vim 是否支持系统剪贴板&#xff0c;在命令终端输入如下命令&#xff1a; [roothtlwk0001host test…

jwt令牌_jwt-cli:用于解码JSON Web令牌(JWT令牌)的Shell库

jwt令牌当我开始经常需要解码JSON Web令牌时&#xff0c;我感到迫切需要编写允许我快速进行操作的程序。 有很多不错的选项&#xff0c;例如jwt.io &#xff0c;但是一旦您需要执行此操作&#xff0c;它通常就会变得笨拙。 并且&#xff0c;如果您需要处理多个令牌或进一步处理…

日历对象导哪个包_java.util的的Date类和Calendar类

Datejava.util.Date类的对象用来表示时间和日期&#xff0c;用得最多的是获取系统当前日期和时间&#xff0c;精确到毫秒。Java中有两个Date类&#xff0c;还有一个是java.sql.Date&#xff0c;这个类一般不用&#xff0c;即使在数据库中也不推荐使用。写代码时注意导入的包一定…

Debian Linux 的 vim 如何使用系统剪贴板

以 ubuntu 为例&#xff0c;ubuntu 默认是没有 vim 的&#xff0c;需要自己安装一下&#xff1a; 更新源&#xff1a; apt-get update安装 vim &#xff1a; apt-get install vim此时&#xff0c;系统不支持剪切板&#xff0c;我们使用命令 vim --version|grep clipboard 查…

Python中replace()函数

replace()函数 功能&#xff1a;类似正则表达式的sub()函数&#xff0c;使用新的字符串替换主串中的内容。 函数需要通过字符串来调用,replace(old, new, max)函数参数依次为&#xff1a; old表示主串中要被替换的字符串。new表示新的字符串。max表示替换次数&#xff0c;默…

lombok和maven_Lombok,AutoValue和Immutables,或如何编写更少,更好的代码返回

lombok和maven在上一篇有关Lombok库的文章中 &#xff0c;我描述了一个库&#xff0c;该库有助于处理Java中的样板代码&#xff08; 是的&#xff0c;我知道这些问题已经在Kotlin中解决了 &#xff0c;但这是现实生活&#xff0c;我们不能一味地坐下来&#xff0c;一旦出现较新…

上传文件显示进度条_文件上传带进度条进阶-断点续传

说明 1. 把文件按大小1M分割成N份 2. 每次上传时&#xff0c;告诉后台大文件的md5、当前第几份&#xff08;从0开始&#xff09;、总共几份 3. 并行上传&#xff0c;前端同时开启5个请求进行传输增加速度 4. 上传失败或出错后&#xff0c;继续上传下一份&#xff0c;把出错的份…

Unix 下的 vim 如何使用系统剪贴板

在 Unix 环境下&#xff0c;" 寄存器需要 xterm-clipboard feature 的 VIM 软件才能使用&#xff0c;具有这个 feature 的 VIM 可以安装 vim-gtk&#xff08;包含gvim和vim&#xff09;&#xff0c;使用 gvim 可以正常调用 " 寄存器。

python中关键字global的简单理解

python用global关键字来标识函数里或类里的全局变量&#xff0c;下面以例子来看看global关键字的作用。 未使用global关键字 a10 #全局变量 def sum(x):a2 #局部变量xa*xreturn x xsum(3) print("a:",a) #10 输出的是全局变量a10 print("x:",x) #6使用…

apache kafka_2018年机器学习趋势与Apache Kafka生态系统相结合

apache kafka在慕尼黑举行的OOP 2018大会上&#xff0c;我介绍了有关使用Apache Kafka生态系统和诸如TensorFlow&#xff0c;DeepLearning4J或H2O之类的深度学习框架构建可扩展&#xff0c;关键任务微服务的演讲的更新版本。 我想分享更新后的幻灯片&#xff0c;并讨论一些有关…

cookies丢失 同域名_后端设置Cookie前端跨域获取丢失问题(基于springboot实现)

1.跨域问题说明&#xff1a;后端域名为A.abc.com&#xff0c;前端域名为B.abc.com。2.后端设置一个cookie发送给前台&#xff0c;domain应该是setDomain(“abc.com”)&#xff0c;而不是setDomain(“B.abc.com”)3.另外&#xff0c;还要实现WebMvcConfigurerr配置加入Cors的跨域…

shell脚本--使用for循环逐行访问txt文件

方法1 export text_pathdata/1.txt for line in $(cat $text_path) doecho $line done方法2 export text_pathdata/1.txt for line in cat $text_path doecho $line done

vertx rest 跨域_Vertx编程风格:您的React式Web Companion REST API解释了

vertx rest 跨域Vertx提供了许多在轻量级环境中进行编程的选项&#xff0c;例如node.js。 但是&#xff0c;对于新用户来说&#xff0c;选择采用哪种方法来创建REST API几乎不会造成混淆。 在vertx中进行编程时&#xff0c;可以采用不同的模型。 下面通过易于理解的图表进行说…

输出节点位移_绝对值信号的编码器有哪些信号输出(一、二)

绝对值信号的编码器有哪些信号输出&#xff08;一、二&#xff09;之前介绍过很多次拉线位移传感器输出是有两大类的&#xff0c;数字信号输出和模拟量信号输出&#xff0c;而数字信号输出还分为增量型脉冲信号输出和绝对值信号输出&#xff0c;今天就系统的介绍一下绝对值信号…

vim 中的 quickfix 指令

用 quickfix 可以快速修改编译错误。 运行了 make 命令编译之后&#xff0c;如果有编译错误 Vim 会以列表形式把编译错误列出&#xff0c;并使用 quickfix 工具快速帮你定位出错的行。 指令说明cc显示编译错误的详细信息,这些信息显示在状态行里cn下一个编译错误cp前一个编译…

Python第三方库的安装,升级以及版本查看

方法&#xff1a;通过电脑的cmd命令行来进行python第三方库的安装&#xff0c;升级以及版本查看 安装和升级pip 安装pip方法1 在cmd命令行输入以下命令&#xff1a; python -m ensurepip #当提示不存在pip时使用这行代码进行安装安装pip方法2 在终端输入以下命令&#xf…

混合多云架构_混合多云每个人都应避免的3个陷阱(第1部分)

混合多云架构每天都在肆意宣传云&#xff0c;但每个人都应避免三个陷阱。 从云&#xff0c;混合云到混合多云&#xff0c;您都被告知这是确保业务数字化未来的一种方式。 您必须做出的这些选择不会排除提高客户体验和敏捷交付这些应用程序的日常工作。 让我们开始一段旅程&am…

vim 下的 ex 指令(底行命令模式下)

文章目录 (一)复制(二)文档光标移动(三)删除(四)粘贴(五)保存/退出(六)另存为文件/选取内容另存文件(七)查找/搜索字符(八)搜索指令 vimgrep(九)使用搜索指令 grep(十)文本行移动(十一)匹配模式替换(十二)显示行号(十三)normal 命令(十四)文件信息…