Vim中特殊字元的讀寫詳解

2021-08-21 18:52:36 字數 3202 閱讀 2582

一、檢視特殊字元

vim中可見特殊字元會直接顯示,不可見特殊字元會顯示為該字元在命令列的輸入方式, 例如\r顯示為^m。通過:help digraph-table可看到所有vim中可輸入的特殊字元, 該文件的第一頁如下:?

char digraph hex  dec  official name

^@   nu   0x00  0  null  (nul)

^a   sh   0x01  1  start of heading (soh)

^b   sx   0x02  2  start of text (stx)

^c   ex   0x03  3  end of text (etx)

^d   et   0x04  4  end of transmission (eot)

^e   eq   0x05  5  enquiry (enq)

^f   ak   0x06  6  acknowledge (ack)

^g   bl   0x07  7  bell (bel)

^h   bs   0x08  8  backspace (bs)

^i   ht   0x09  9  character tabulation (ht)

^@   lf   0x0a  10  line feed (lf)

^k   vt   0x0b  11  line tabulation (vt)

^l   ff   0x0c  12  form feed (ff)

^m   cr   0x0d  13  carriage return (cr)

第一列為特殊字元,第二列為digraph(見下文),第三列為十六進製制表示, 第四列為十進位制表示,第五列為該字元的官方名稱。

顯示當前檔案的二進位制編碼可輸入:%!xxd,該命令會替換檔案內容!恢復::%!xdd -r

二、通過digraph輸入

vim中顯然沒有什麼特殊字元選擇工具,但提供了兩種輸入特殊字元的方式:

1、通過兩個字元來輸入乙個特殊字元(digraph)。

2、直接通過編碼值(ascii或unicode)輸入。?

rg

將會出現®字元,其中"rg"是該字元的digraph(雙拼)。 所有的digraph可以通過:help digraph-table查詢。

三、通過字元編碼輸入

除了digraph,還可直接通過字元編碼來輸入它,該字元不需要在vim的digraph-table中。 這種方式也是在插入模式下進行的,需要先按下前導鍵(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字元編碼設定下進行的。例如:?

065

將會輸出a字元,65是它的ascii編碼,而unicode相容ascii。

四、換行的搜尋/替換/輸入

換行在vim中的行為很特殊也不夠一致,需要單獨討論一下。

首先區分一下\r和\n:

前者是回車(carriage return),在vim中可通過cr輸入,顯示為^m。

後者是換行(new line),在vim中通過(回車)鍵輸入,顯示為回車並換行;

所以對於windows風格換行(\r\n)在vim中會在每行結尾顯示^m。

替換

注意使用:s命令替換為換行(new line)時,應當使用\r(相當於回車鍵)而不是\n。 例如將所有逗號替換為換行:?

:%s/,/\r/g

如果使用\n則目標會被替換為空字元null(顯示為^@)。

將dos風格換行(\r\n)的檔案轉為unix風格換行(\n)其實很簡單,不需要手動查詢替換:?

:setfileformat=unix

:w

搜尋

在搜尋模式(/)搜尋換行時仍然應當使用\n字元,因為vim的換行(unix風格)確實是\n而不是\r\n。例如:?

/foo\nbar

可以匹配到所有的:?

foo

bar

五、檢視不可見字元

除了特殊字元外,ascii字元中還有大量的不可見字元,例如空格回車製表符等。 這些字元可以通過list變數來控制它們的顯示與否:?

" 顯示隱藏字元

:setlist

" 不顯示隱藏字元

:setnolist

" 設定顯示哪些隱藏字元

:setlistchars=eol:$,tab:>-,trail:~,extends:>,precedes:<

總結

命令中的特殊字元

小知識 表示乙個命令的結束 另乙個命令的開始 在windows中通常將一些正規表示式的基本字元稱為萬用字元,而在linux作業系統中人們則將這些基本字元稱為元字元。使用多個元字元組成的查詢表示式稱為匹配模式,使用匹配模式查詢的過程稱為 模式 匹配 字串引用符雙引號和單引號 雙引號和單引號的主要作用是...

Bash中的特殊字元

行首以 開頭 除 之外 的是注釋。是用於指定當前指令碼的直譯器,我們這裡為bash,且應該指明完整路徑,所以為 bin bash 當然,在echo中轉義的 是不能作為注釋的 vim test.sh輸入如下 並儲存。中文為注釋,無需要輸入 bin bash echo the here dose not...

C 中的特殊字元

特殊字元 c c 語言規範 2.4.4.4 字元 字元表示單個字元,通常由置於引號中的乙個字元組成,如 a character literal 字元 character 字元 character 字元 single character 單字元 escape sequence 簡單轉義序列 hexad...