oeasy教您玩轉(zhuǎn)vim - 79 - # 編碼格式encoding
- `help encoding-name`- 看起來(lái)就是unicode編碼- 那其實(shí)我可以把當(dāng)前文檔保存為 ? ?- utf-8 `:set fileencoding=utf-8` ? ?- gb2312 `:set fileencoding=gb2312`- 當(dāng)然反過(guò)來(lái)- 我如果打開一個(gè)文件- 可以通過(guò) ? ?- `:set encoding=utf-8`或者 ? ?- `:set encoding=gb2312` ? ?- 來(lái)設(shè)置編碼確保文件正常觀看## 總結(jié)- 這次我們了解了編碼格式 ? ?- 屏幕顯示的encoding ? ?- 文件保存的fileencoding- 不能搞亂了- 一般用什么編的就用什么解- 解鈴還須系鈴人- 打開不正確的話,就要切到正確的上面- 保存成任何自己想要的編碼方式- vim還有什么能幫助我們快速操作的方法么???- 下次再說(shuō)!?[Github地址] (https://github.com/overmind1980/oeasyvim)[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)[藍(lán)橋?qū)嶒?yàn)樓 邀請(qǐng)碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)
文件格式 fileformat
回憶
上次我們了解了文件格式
unix
dos
mac
不同文件格式對(duì)應(yīng)的換行符不同
可以修改當(dāng)前文件的文件格式
也可以用二進(jìn)制來(lái)觀察
不同文件格式下
具體換行符的樣子
為什么'6f'就對(duì)應(yīng)字母
o
?因?yàn)檫@是ascii基本的編碼設(shè)定
可中文字符又是如何編碼的呢???
插入ascii字符
我們新建一個(gè)
oeasy.txt
i進(jìn)入插入模式
輸入ctrl+v65
輸入ctrl+v66
輸入ctrl+v67
輸入ctrl+v68
esc退出
屏幕上可以見到插入了
ABCD
四個(gè)字符這就是使用ascii具體編碼來(lái)插入字符
那我能用其他的進(jìn)制
比如八進(jìn)制和十六進(jìn)制來(lái)插入ascii字符么?
:h i_ctrl-v

用其他進(jìn)制插入ascii字符
使用八進(jìn)制
輸入ctrl+vo117
輸入ctrl+vo101
輸入ctrl+vo105
輸入ctrl+vo123
輸入ctrl+vo131
使用十六進(jìn)制
輸入ctrl+vx41
能否用這個(gè)方式插入中文么?
先查一下
插入unicode字符
輸入ctrl+vu4e00
可以看到插入了中文字符
具體二進(jìn)制是如何存儲(chǔ)的呢?
:.!xxd

為什么會(huì)是這樣呢?
編碼模式
那這個(gè)東西怎么具體存儲(chǔ)和操作呢?
這個(gè)unicode編碼是0x4e00
存儲(chǔ)的時(shí)候需要避免和ascii中的前127個(gè)字符混淆
需要用utf-8的方式存儲(chǔ)
狀態(tài)欄上也可以看出此文件的編碼格式

默認(rèn)是utf-8
utf-8 編碼格式

一(4E00) 屬于第三行的范圍

所以
也就是linefeed
e4b880
對(duì)應(yīng)著一
0a
對(duì)應(yīng)著<LF>

完美對(duì)應(yīng)上了
除了utf-8之外還有別的編碼格式么?
查看當(dāng)前語(yǔ)言和編碼
:language
可以查看當(dāng)前編碼格式

修改編碼
:set encoding=unicode
設(shè)置之后再觀察變化

這個(gè)ucs-2就是utf-16
ucs-4就是utf-32
上面的編碼變成了4e00
還有什么其他編碼么?
其他編碼
:set encoding=latin1
修改之后,狀態(tài)欄的中文不認(rèn)識(shí)了
屏幕的字符也變了模樣
其實(shí)他這是用
latin1
來(lái)解釋e4b880

這個(gè)是拉丁字符的編碼
我們?cè)僭囋囍С种形牡?/p>
gb2312
:set encoding=gb2312
換成中文gb2312
文件存儲(chǔ)形式?jīng)]變
解釋方式變了
我們也無(wú)法理解

:set encoding=utf-8
改回來(lái)了
我們又可以看到
一

:set encoding=gb2312
又來(lái)
硬要說(shuō)他是
gb2312
的編碼然后就保存
以上都發(fā)生在內(nèi)存里面
保存到硬盤里面
如何控制他的編碼格式呢?
文件編碼格式

fenc
其實(shí)就是fileencoding
fileencoding
和coding
有什么不同呢?encoding
是在屏幕顯示字符時(shí)的所用編碼格式
是讀取內(nèi)容并放入內(nèi)存緩沖buffer中的編碼
fileencoding
是保存文件時(shí)在硬盤上保存二進(jìn)制文件的編碼格式
是硬盤上的編碼
我們用
utf-8
寫下了一
內(nèi)存中對(duì)應(yīng)
e4b880
:set encoding=gb2312
這是在用gb2312編碼格式解碼utf-8編碼的二進(jìn)制序列
把
e4b880
理解為涓~
并顯示在屏幕上:set fileencoding=gb2312
根據(jù)gb2312
把
涓~
在硬盤上寫成e4b880
vi oeasy.txt
根據(jù)utf-8
把
e4b880
理解為一
并顯示在屏幕上如果我就想寫一個(gè)gb2312的
一
到硬盤怎么辦呢?
使用gb2312
:set encoding=gb2312
之后在插入模式下輸入一
:set fileencoding=gb2312
注意狀態(tài)欄的變化
這是要在內(nèi)存中和硬盤上都使用gb2312編碼格式

:%!xxd
這次內(nèi)存中的
d2bb
在gb2312
格式下被理解為一
:%!xxd -r
恢復(fù)回來(lái)
:w! o2z.txt
這次把用
gb2312
編碼一
,也就是d2bb
寫到了硬盤里
打開文件
vi o2z.txt
只能看到一個(gè)
h
好多不可見
這是在用utf-8編碼格式解釋gb2312編碼后的內(nèi)容
因?yàn)槭怯?code>utf-8解碼
gb2312
編碼的文件:%!xxd
可以看到從硬盤讀到緩存的內(nèi)容為
d2bb
%!xxd -r
恢復(fù)回來(lái)
:set encoding=gb2312
這次可以看到用
gb2312
解碼d2bb
為一
那如果我們都用utf-8來(lái)編碼呢?
utf-8編碼
:set encoding=utf-8
:set fileencoding=utf-8
這樣都是utf-8編碼的內(nèi)容
其實(shí)還可以設(shè)置在內(nèi)存中
unicode
這樣更省內(nèi)存空間
但如果我我想要把文件編碼設(shè)置為ascii
并保存會(huì)如何呢?
E513

出現(xiàn)了錯(cuò)誤E513
因?yàn)閍scii每個(gè)字節(jié)首位必須是0
所以這個(gè)漢字
一
無(wú)法保存所以這個(gè)時(shí)候如果把filecoding置成空會(huì)如何呢?
修改
:set fileencoding=
:set fileencoding?
:set encoding?
這個(gè)時(shí)候
encoding
是ucs-2
這是什么意思?

編碼含義
help encoding-name

看起來(lái)就是unicode編碼
那其實(shí)我可以把當(dāng)前文檔保存為
utf-8
:set fileencoding=utf-8
gb2312
:set fileencoding=gb2312
當(dāng)然反過(guò)來(lái)
我如果打開一個(gè)文件
可以通過(guò)
:set encoding=utf-8
或者:set encoding=gb2312
來(lái)設(shè)置編碼確保文件正常觀看
總結(jié)
這次我們了解了編碼格式
屏幕顯示的encoding
文件保存的fileencoding
不能搞亂了
一般用什么編的就用什么解
解鈴還須系鈴人
打開不正確的話,就要切到正確的上面
保存成任何自己想要的編碼方式
vim還有什么能幫助我們快速操作的方法么???
下次再說(shuō)!?
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[藍(lán)橋?qū)嶒?yàn)樓 邀請(qǐng)碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)