Vim中特殊字元的讀寫詳解
一、檢視特殊字元
Vim中可見特殊字元會直接顯示,不可見特殊字元會顯示為該字元在命令列的輸入方式, 例如\r顯示為^M。通過:help digraph-table可看到所有Vim中可輸入的特殊字元, 該文件的第一頁如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
第一列為特殊字元,第二列為digraph(見下文),第三列為十六進位制表示, 第四列為十進位制表示,第五列為該字元的官方名稱。
顯示當前檔案的二進位制編碼可輸入: %!xxd
,該命令會替換檔案內容!恢復:: %!xdd -r
。
二、通過digraph輸入
Vim中顯然沒有什麼特殊字元選擇工具,但提供了兩種輸入特殊字元的方式:
1、通過兩個字元來輸入一個特殊字元(digraph)。
2、直接通過編碼值(ASCII或Unicode)輸入。
其中digraph是一種類似雙拼的方法,連續輸入兩個字元來表示一個特殊字元。 需要先按下前導鍵<Ctrl-K>,例如在編輯模式下輸入:
1 |
|
將會出現®字元,其中"Rg"是該字元的digraph(雙拼)。 所有的digraph可以通過:help digraph-table
查詢。
三、通過字元編碼輸入
除了digraph,還可直接通過字元編碼來輸入它,該字元不需要在Vim的digraph-table中。 這種方式也是在插入模式下進行的,需要先按下前導鍵<Ctrl-V>
(Windows下<Ctrl-Q
>)。
有下列5種方式:
十進位制值ASCII:^Vnnn (000 <= nnn <= 255)
八進位制值:^VOnnn 或 ^Vonnn (000 <= nnn <= 377)
十六進位制值:^VXnn or ^Vxnn (00 <= nn <= FF)
十六進位制BMP Unicode:^Vunnnn (0000 <= nnnn <= FFFF)
十六進位制任何Unicode:^VUnnnnnnnn (00000000 <= nnnnnnnn <= 7FFFFFFF)
上述操作都是在Unicode字元編碼設定下進行的。例如:
1 |
|
將會輸出A字元,65是它的ASCII編碼,而Unicode相容ASCII。
四、換行的搜尋/替換/輸入
換行在Vim中的行為很特殊也不夠一致,需要單獨討論一下。
首先區分一下\r和\n:
前者是回車(Carriage Return),在Vim中可通過<c-k>CR輸入,顯示為^M。
後者是換行(New Line),在Vim中通過<CR>(回車)鍵輸入,顯示為回車並換行;
所以對於Windows風格換行(\r\n)在Vim中會在每行結尾顯示^M。
替換
注意使用:s命令替換為換行(New Line)時,應當使用\r(相當於回車鍵)而不是\n。 例如將所有逗號替換為換行:
1 |
|
如果使用\n則目標會被替換為空字元NULL(顯示為^@)。
將DOS風格換行(\r\n)的檔案轉為Unix風格換行(\n)其實很簡單,不需要手動查詢替換:
1 2 |
|
搜尋
在搜尋模式(/)搜尋換行時仍然應當使用\n字元,因為Vim的換行(Unix風格)確實是\n而不是\r\n。例如:
1 |
|
可以匹配到所有的:
1 2 |
|
五、檢視不可見字元
除了特殊字元外,ASCII字元中還有大量的不可見字元,例如空格回車製表符等。 這些字元可以通過list變數來控制它們的顯示與否:
1 2 3 4 5 6 |
|
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能有所幫助,如果有疑問大家可以留言交流。
相關推薦
Vim中特殊字元的讀寫詳解
一、檢視特殊字元 Vim中可見特殊字元會直接顯示,不可見特殊字元會顯示為該字元在命令列的輸入方式, 例如\r顯示為^M。通過:help digraph-table可看到所有Vim中可輸入的特殊字元, 該文件的第一頁如下: ? 1 2 3
Cookie 讀寫詳解
ppi 新的 false size fcm 重復 () clipboard html4 Cookie的引文原意是“點心”,它是在客戶端訪問Web服務器時,服務器在客戶端硬盤上存放的信息,好像是服務器發送給客戶的“點心”。服務器可以根據Cookie來跟蹤客戶狀態,這對於需要區
C++文件讀寫詳解
開始 建議 add ror 輸入 屬性 打開文件 tell .net 轉自:http://blog.csdn.net/kingstar158/article/details/6859379 在看C++編程思想中,每個練習基本都是使用ofstream,ifstream,f
[Erlang]Ets併發讀寫詳解
ETS是Erlang內建的記憶體資料庫,可用於多程序共享資料,具有併發讀寫的效能,文章就這點展開探討,重點說說ets併發讀寫兩個引數的優缺點及適用場合。 比如新建一個person的ets表: ets:new(person, [set, public, named_table
C++ 檔案讀寫詳解(七)(ofstream,ifstream,fstream)
void fileRead() { using namespace std; ifstream fin; /** qwer:asdf:zxc:1234: gfd:jkl:mnb: */ //開啟檔案 fi
C++檔案讀寫詳解(ofstream,ifstream,fstream)
在看C++程式設計思想中,每個練習基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含義,在看了幾位大牛的博文後,進行整理和總結: 這裡主要是討論fstream的內容: #include <fstream> ofstrea
c++檔案讀寫詳解
引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。mode有下列幾種形態字串:r 開啟只讀檔案,該檔案必須存在。r+ 開啟可讀寫的檔案,該檔案必須存在。w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。w+ 開啟可讀寫檔案,若檔案存在則檔案長
C++ 檔案讀寫詳解(ofstream,ifstream,fstream)
文章轉自:http://blog.csdn.net/kingstar158/article/details/6859379 這裡主要是討論fstream的內容: #include <fstream> ofstream //檔案寫操作
linux下aio非同步讀寫詳解與例項
1.為什麼會有非同步I/O aio非同步讀寫是在linux核心2.6之後才正式納入其標準。之所以會增加此模組,是因為眾所周知我們計算機CPU的執行速度遠大於I/O讀寫的執行速度,如果我們用傳統的阻塞式或非阻塞式來操作I/O的話,那麼我們在同一個程式中(不用多執
C++檔案讀寫詳解(ofstream,ifstream,fstream
在看C++程式設計思想中,每個練習基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含義,在看了幾位大牛的博文後,進行整理和總結: 這裡主要是討論fstream的內容: [java] view plain copy p
C++文件讀寫詳解(ofstream,ifstream,fstream)
for ase try and line 創建 als pac 控制臺 這裏主要是討論fstream的內容:1 #include <fstream> 2 ofstream //文件寫操作 內存寫入存儲設備 3 ifstream
Javascript中的apply與call詳解
選項 this 模式 div sun fun object 面向 傳遞 JavaScript中有一個call和apply方法,其作用基本相同,但也有略微的區別。 一、方法定義 1、call 方法 語法:call([thisObj[,arg1[, arg2[
JQuery中$.ajax()方法參數詳解(轉載)
瀏覽器 object 服務器 字符串 false type: 要求為String類型的參數,請求方式(post或get)默認為get。註意其他http請求方法,例如put和 delete也可以使用,但僅部分瀏覽器支持。timeout: 要求為Number類型的參數,設置請求超時時
JavaScript中數組對象詳解
稀疏數組 nsh isa 學習過程 bnf value 明顯 global sci Array對象即數組對象用於在單個變量中存儲多個值,JS的數組是弱類型的,所以允許數組中含有不同類型的元素,數組元素甚至可以是對象或者其他數組。 創建數組的語法 1、Array構造器 1
react native 中textInput的value屬性詳解
hold eric 工作 als size 保持 chang 無奈 bsp TextInput用法就不多講了,主要記錄下遇到的一個怪問題。 背景:項目需要開發一個充值頁面,需要一個輸入框,然後幾個按鈕,輸入框是允許用戶自己輸入任意金額,按鈕是可以讓用戶快捷選擇金
在.net中序列化讀寫xml方法的總結
port 單詞 創建 padding 在一起 sys base msd 屏幕 在.net中序列化讀寫xml方法的總結 閱讀目錄 開始 最簡單的使用XML的方法 類型定義與XML結構的映射 使用 XmlElement 使用 XmlAttribute 使用 Inner
TP5中關聯模型的使用詳解
php 關聯模型 tp5 首先是model裏,舉個例子,user.php<?phpnamespace app\rbac\model;use think\Model;class User extends Model{ public function roleusers() {
Android Studio中Git和GitHub使用詳解
可能 必須 窗口 gin 擁有 說明 詳細 對話 發現 一、Git和GitHub簡述 1.Git 分布式版本控制系統,最先使用於Linux社區,是一個開源免費的版本控制系統,功能類似於SVN和CVS。Git與其他版本管理工具最大的區別點和優點就是分布式;
Django中的request對象詳解
當前 perm 請求 詳細 spa ati 用戶輸入 刪除 完整路徑 URLconf文件匹配到用戶輸入的路徑後,會調用對應的view函數,並將 HttpRequest對象 作為第一個參數傳入該函數。 下面說說HttpRequest對象: 他其實是一個實例對象,屬性有:
css中偽類/偽元素詳解
input 其他 中文 tro 網頁 單元 web link 語言 一、偽類和偽元素 偽類和偽元素都是用來修飾不在文檔樹中的部分,區別在於, 偽類用於當已有元素處於的某個狀態時,為其添加對應的樣式,這個狀態是根據用戶行為而動態變化的(如:hover/:active)。