VIM于换行EOL的思考
\n LF 0A 将当前光标切换到下一行(不一定行首)
\r CR OD 将当前光标置于行首
在windows与unix系统中,unix将\n代表换行并置于行首,而windows保持原意。
即unix:\n为换行,windows:\r\n为换行.
在ASCII码中,00-1F为不可显示字符。而40为@,41-5A为A-Z.
于是出现了用CTRL+字母键 实现其相应功能键的用法.
比如在linux的bash中,<c-h>退格,<c-j>换行,等等。
同样在VIM中,用^M来显示\r,^J来显示回车,^[显示ESC,
以及将这些键映射到了对应按键( <c-[>ESC,<c-j>回车 ),方便输入。而对于退格BS显示为<80>kb而不是^H,这就不清楚了...
===========================================================================================
当我们用VIM /"\n"搜索时,结果往往匹配不到,说明此时buffer中,并没有\n,亦即 0A,这个编码。
也就是说VIM在load buffer时已经删除了。
而注意到 当我们敲回车输入时,显示的是^J,,那么我推测vim中^J不是OA,
导致这个结论还有一个因素:
INSERT模式下,<c-v>可用于通过编码输入字符,或输入功能键的编码,但是!我按<c-v><c-j>时,
却显示的不是^J,而是^@,^@代表NUL,即插入编码00,而非0A.
发现了什么?vim将我们输入的\n给替换了!!
因而vim中,^J只是代表了一个回车,但他并没有插入编码其OA,
换句话说,当我们按回车时,vim只是插入了一个标记<eol>代表换行。而vim将这个标记<eol>显示为^J!
直至写入文件时才用相应的编码进行替换。且!vim不允许输入\n,哪怕你用substitute替换的\n它都会给
你换成^@,这应该是本身的一种保护机制把
--------------------------------------------------------------------------------------
其实上面的这些猜测在' fileformat '里已有说明:
This gives the <EOL> of the current buffer, which is used for
reading/writing the buffer from/to a file:
dos <CR> <NL>
unix <NL>
mac <CR
This option is set automatically when starting to edit a file and
'fileformats' is not empty and 'binary' is off.
而根据ffs设置ff 的策略 手册上有详细说明
VIM于换行EOL的思考的更多相关文章
- vim 处理换行符
1. 设置文件格式 :set fileformats=unix,dos 2. 查询当前文件格式 :set fileformat? 3. 转换文件格式 :set fileformat=dos 4. 设置 ...
- 关于Vim/Neovim/SpaceVim的一些思考
1 前言 最近看到了Neovim以及SpaceVim,于是上手试了一下. 2 Neovim与SpaceVim Neovim是Vim的一个分支,具有更加现代的GUI.嵌入式以及脚本化的终端.异步工作控制 ...
- vim使用札记
最近开始用vim编辑器了,从最开始的配置到现在慢慢使用,我在这儿会贴出一些我的使用上遇到过的问题和如何解决的方案,留给自己和一些会用到的人看看 1.vim怎么使汇编语法高亮 开始不知道,然后把文件的后 ...
- vim粘贴缩进问题
vim不支持直接从其他应用复制内容粘贴过来,而是模拟用户键盘输入来实现的,一般设置vim在换行时自动以上一行的的缩进为初始位置,这样就会导致复制过来的内容出现缩进错乱. set paste 解决粘贴乱 ...
- linux 删除换行符
今天需要删除文件里面的换行符,比如有一个文件a.txt: 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1.使用vim删除换行 ...
- linux和普通文本的换行问题
情景一: 普通文本 vim操作换行 :%s#xxx#\n#g 情景二: linux环境换行 vim :%s#xxx#\r#g
- vim 知识点小结
vim用法可以学习:vim用法 Vim修改tab为4个空格 vi /etc/vim/vimrc 添加:set ts=4 vim中翻页的快捷键:向上翻页 ctrl+b,向下翻页 ctrl+f vim替换 ...
- 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)
第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...
- C++ code:for loop designs
1 用for循环编出系列图形 该图形一共10行,每一行增加一个字符,所以应循环10次,每次输出一行.其循环模式为: :i<=;++i) { 输出第i行 换行 } 我们注意到,每一行长度的变化正 ...
随机推荐
- 分页查询不知你是否真正的懂和PHP的正则的应用和一些性能优化
一.不废话太多 直接进入例子. 1 问题: 有一张收藏表,里面存储的是用户和图书ID.数据量为1亿.现在要求分页获取所有用户ID(不重复),写下你的sql语句. 表结构大致如下: ...
- 由String的构造方法引申出来的java字符编码
在String类的constructors中,有一个constructor是将int数组类型转化为字符串: int[] num = {48,49,50,51,52}; String numStr = ...
- iOS四种多线程(swift和oc)
在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使用 Swift 和 ...
- Hadoop(九)Hadoop IO之Compression和Codecs
前言 前面一篇介绍了Java怎么去查看数据块的相关信息和怎么去查看文件系统.我们只要知道怎么去查看就行了!接下来我分享的是Hadoop的I/O操作. 在Hadoop中为什么要去使用压缩(Compres ...
- Go 单例模式[个人翻译]
原文地址:http://marcio.io/2015/07/singleton-pattern-in-go/ 最近几年go语言的增长速度非常惊人,吸引着各界人士切换到Go语言.最近有很多关于使用Rub ...
- 张高兴的 Windows 10 IoT 开发笔记:BH1750FVI 光照度传感器
BH1750FVI 是一款 IIC 接口的数字型光强度传感器集成电路.下面介绍一下其在 Windows 10 IoT Core 环境下的用法. 项目运行在 Raspberry Pi 2/3 上,使用 ...
- JavaScript命令模式
第一,命令模式: (1)用于消除调用者和接收者之间直接的耦合的模式,并且可以对(调用这个过程进行留痕操作) (2)真的不要乱用这个模式,以为他使你简单调用写法变得非常的复杂和有些难以理解. (3)你的 ...
- java 入门之八大内置基本类型
本文采用eclipse 工具演示,如果您对eclipse 工具不了解,请先学习下 eclipse 工具的使用,这个里面只是简单的介绍下输出和注释: 安装完成eclipse 以后,双击进入 后一次点击 ...
- myeclipse10破解失败,正解
此文图借用他人的,很是经典 第一步:输入任意用户名 第二步:点击Systemid... 按钮,自动生成本机器的systemid.ps:确定本机的systemid,如果和破解器生成不一致,需要copy本 ...
- ../../../../.. 太low了
痛点 如果我们有这个目录: ├── webpack.config.js ├── src │ ├── view │ │ ├── index.js │ │── router │ │ ├── index.j ...