用VIM查看編輯二進位檔案

來源:互聯網
上載者:User

標籤:

用VIM查看編輯二進位檔案
vim可以很方便地編輯二進位檔案,個人認為它比emacs的二進位編輯方式更好用。vim中二進位檔案的編輯是先通過外部程式xxd來把檔案dump成其二進位的文本形式,然後就可以按通常的編輯方式對檔案進行編輯,編輯完成後再用xxd 轉化為原來的形式即可。

可分如下幾步進行:

(1) 首先以二進位方式編輯這個檔案: vim -b datafile

(2) 現在用 xxd 把這個檔案轉換成十六進位: :%!xxd

文本看起來像這樣:

0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.00000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;‘1.".....i.59.

現在你可以隨心所欲地閱讀和編輯這些文本了。 Vim 把這些資訊當作普通文本來對待。修改了十六進位部分並不導致可顯示字元部分的改變,反之亦然。

(3) 最後,用下面的命令把它轉換回來: :%!xxd -r

只有十六進位部分的修改才會被採用。右邊可顯示文本部分的修改忽略不計。

xxd是linux的一個命令,vim可以通過”!”來調用外部命令,其功能就是進行十六進位的dump或者反之。

VIM 編輯二進位檔案 (vim手冊載錄)*23.4* 二進位檔案

你可以用 Vim 來編輯二進位檔案。Vim 本非為此而設計的,因而有若干局限。但你能讀取一個檔案,改動一個字元,然後把它存檔。結果是你的檔案就只有那一個字元給改了,其它的就跟原來那個一模一樣。

要保證 Vim 別把它那些聰明的竅門用錯地方,啟動 Vim 時加上 ”-b” 參數:

vim -b datafile

這個參數設定了 ‘binary‘ 選項。其作用是排除所有的意外副作用。例如,‘textwidth‘設為零,免得文本行給擅自排版了。並且,檔案一律以 Unix 檔案格式讀取。

二進位模式可以用來修改某程式的訊息報文。小心別插入或刪除任何字元,那會讓程式運行出問題。用 “R” 命令進入替換模式。

檔案裡的很多字元都是不可顯示的。用 Hex 格式來顯示它們的值:

:set display=uhex

另外,也可以用命令 “ga” 來顯示光線標下的字元值。當游標位於一個 <Esc> 字元上時,該命令的輸出看起來就像這樣:

 <^[>  27, Hex 1b,  Octal 033 

檔案中也許沒那麼多分行符號。你可以關閉 ‘wrap‘ 選項來獲得總覽的效果:

        :set nowrap
位元組位置:

要發現你在檔案中的當前位元組位置,請用這個命令:

g CTRL-G

其輸出十分冗長:

    Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 

最後兩個數字就是檔案中的當前位元組位置和檔案位元組總數。這已經考慮了 ‘fileformat‘選項導致分行符號位元組不同的影響。

要移到檔案中某個指定的位元組,請用 “go” 命令。例如,要移到位元組 2345:

2345go
使用XXD:
一個真正的二進位編輯器用兩種方式來顯示文本: 二進位和十六進位格式。你可以在 Vim裡通過轉換程式 “xxd” 來達到這效果。該程式是隨 Vim 一起發布的。

首先以二進位方式編輯這個檔案:

 vim -b datafile

現在用 xxd 把這個檔案轉換成十六進位:

        :%!xxd

文本看起來像這樣:

        0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49  ....9..;..tt.+NI         0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30  K,.`.....b..4^.0         0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9  7;‘1.".....i.59. 

現在你可以隨心所欲地閱讀和編輯這些文本了。 Vim 把這些資訊當作普通文本來對待。修改了十六進位部分並不導致可顯示字元部分的改變,反之亦然。

最後,用下面的命令把它轉換回來:

:%!xxd -r

只有十六進位部分的修改才會被採用。右邊可顯示文本部分的修改忽略不計。

用VIM查看編輯二進位檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.