在 Vim 中,^@ 表示 ASCII 碼中的 NULL 字符,編碼為 0x00,占用一個字節。
刪除方法
方法1,采用 <CTRL-V><CTRL-J> 或 <CTRL-2> 或 <CTRL-SHIFT-2> 按鍵輸入在 Vim 中輸入 NULL 字符(顯示為 ^@),然后將所有的 NULL 字符替換為空字符 ''。具體命令如下:
:%s/<CTRL-V><CTRL-J>//g
:%s/<CTRL-2>//g
:%s/<CTRL-SHIFT-2>//g
注,<CTRL-V> 表示按住<CTRL>鍵不放,然后按下字符 V 鍵;<CTRL-SHIFT-2> 表示按住 <CTRL> 鍵和 <SHIFT> 鍵不放,然后按下字符 2 鍵。
注意,<CTRL-V><CTRL-J>組合按鍵比較通用,按鍵 <CTRL-2> 或 <CTRL-SHIFT-2> 在某些電腦上可能失效。如果按鍵方式全部無效,可以采用方法 2。
方法2,在 Vim 替換文本命令時,采用 NULL 字符的 ASCII 編碼表示。具體命令如下:
:%s/\%x00//g
也可以采用 <CTRL-V> 按鍵,然后在 Vim 中輸入 NULL 字符的 3 位八進制 ASCII 編碼,即 000。具體命令如下:
:%s/<CTRL-V>000//g
方法3,采用 Linux 命令行工具 tr 。tr 工具用於轉換、壓縮或刪除來自標准輸入的字符,並寫到標准輸出。在 Vim 中的具體命令如下:
:%!tr -d '\000'
注, -d 為 --delete 的縮寫,表示刪除字符 '\000' 。
如果需要處理文件為 input.txt ,可在 Linux Bash 命令行中,使用如下命令:
tr -d '\000' < input.txt > output.txt
表示從文件 input.txt 讀入文本,刪除 NULL 字符(\000)后,輸出到文件 output.txt 。
參考資料
1] ^@ Symbol in vim. https://stackoverflow.com/questions/9124755/symbol-in-vim
2] How to remove this symbol with vim. https://superuser.com/questions/75130/how-to-remove-this-symbol-with-vim