Linux學習筆記22——vim 的額外功能、其他vim注意事項
目錄
5,vim 環境設定與記錄: ~/.vimrc, ~/.viminfo
一、vim 的額外功能
其實,目前大部分的 distributions 都以 vim 取代 vi 的功能了!如果你使用 vi 後,卻看到畫面的右下角有顯示目前游標所在的行列號碼,那麼你的 vi 已經被 vim 所取代囉~為什麼要用vim 呢?因為 vim 具有顏色顯示的功能,並且還支援許多的程式語法 (syntax), 因此,當你使用 vim 編輯程式時 (不論是 C 語言,還是 shell script ),我們的 vim 將可幫你直接進行“程式除錯 (debug)”的功能!真的很不賴吧!^_^
如果你在文字模式下,輸入 alias 時,出現這樣的畫面:
[[email protected] ~]$ alias
....其他省略....
alias vi='vim' <==重點在這列啊!
這表示當你使用 vi 這個指令時,其實就是執行 vim 啦!如果你沒有這一列,那麼你就必須要使用 vim filename 來啟動 vim 囉!基本上, vim 的一般用法與 vi 完全一模一樣~沒有不同啦!那麼我們就來看看 vim 的畫面是怎樣囉!假設我想要編輯 /etc/services ,則輸入“vi /etc/services”看看吧:
上面是 vim 的畫面示意圖,在這個畫面中有幾點特色要說明喔:
1. 由於 /etc/services 是系統規劃的配置檔案,因此 vim 會進行語法檢驗,所以你會看到畫面中內部主要為深藍色, 且深藍色那一列是以註解符號 (#) 為開頭;
2. 畫面中的最下面一列,在左邊顯示該檔案的屬性,包括只讀檔案、內容共有 11176 列與670293 個字元;
3. 最下面一列的右邊出現的 1,1 表示游標所在為第一列, 第一個字元位置之意(請看上圖中的游標所在);
1,區塊選擇(Visual Block)
剛剛我們提到的簡單的 vi 操作過程中,幾乎提到的都是以列為單位的操作。那麼如果我想要搞定的是一個區塊範圍呢? 舉例來說,像下面這種格式的檔案:
192.168.1.1 host1.class.net
192.168.1.2 host2.class.net
192.168.1.3 host3.class.net
192.168.1.4 host4.class.net
.....中間省略
這個檔案我將他放置到 http://linux.vbird.org/linux_basic/0310vi/hosts ,你可以自行下載來看一看這個檔案啊!現在我們來玩一玩這個檔案吧!假設我想要將 host1, host2... 等等複製起來, 並且加到每一列的後面,亦即每一列的結果要是“ 192.168.1.2 host2.class.net host2 ”這樣的情況時, 在傳統或現代的視窗型編輯器似乎不容易達到這個需求,但是咱們的 vim 是辦的到的喔!那就使用區塊選擇 (Visual Block) 吧!當我們按下 v 或者 V 或者 [Ctrl]+v 時,這個時候游標移動過的地方就會開始反白,這三個按鍵的意義分別是:
區塊選擇的按鍵意義 |
|
v |
字元選擇,會將游標經過的地方反白選擇! |
V |
列選擇,會將游標經過的列反白選擇! |
[Ctrl]+v |
區塊選擇,可以用長方形的方式選擇資料 |
y |
將反白的地方複製起來 |
d |
將反白的地方刪除掉 |
p |
將剛剛複製的區塊,在游標所在處貼上! |
2,多檔案編輯
假設一個例子,你想要將剛剛我們的 hosts 內的 IP 複製到你的 /etc/hosts 這個檔案去, 那麼該如何編輯?我們知道在 vi 內可以使用 :r filename 來讀入某個檔案的內容, 不過,這樣畢竟是將整個檔案讀入啊!如果我只是想要部分內容呢?呵呵!這個時候多檔案同時編輯就很有用了。 我們可以使用 vim 後面同時接好幾個檔案來同時開啟喔!相關的按鍵有:
多檔案編輯的按鍵 |
|
:n |
編輯下一個檔案 |
:N |
編輯上一個檔案 |
:files |
列出目前這個 vim 的開啟的所有檔案 |
在過去,鳥哥想要將 A 檔案內的十條訊息“移動”到 B 檔案去,通常要開兩個 vim 視窗來複制, 偏偏每個 vim 都是獨立的,因此並沒有辦法在 A 檔案下達“ nyy ”再跑到 B 檔案去“ p”啦! 在這種情況下最常用的方法就是通過滑鼠圈選, 複製後貼上。不過這樣一來還是有問題,因為鳥哥超級喜歡使用 [Tab] 按鍵進行編排對齊動作, 通過滑鼠卻會將 [Tab] 轉成空白鍵,這樣內容就不一樣了!此時這個多檔案編輯就派上用場了!
現在你可以做一下練習看看說!假設你要將剛剛鳥哥提供的 hosts 內的前四列 IP 資料複製到你的 /etc/hosts 檔案內,那可以怎麼進行呢?可以這樣啊:
1. 通過“ vim hosts /etc/hosts ”指令來使用一個 vim 開啟兩個檔案;
2. 在 vim 中先使用“ :files ”察看一下編輯的檔案資料有啥?結果如下所示。 至於下圖的最後一列顯示的是“按下任意鍵”就會回到 vim 的一般指令模式中!
圖9.3.6、vim 的多檔案編輯中,檢視同時編輯的檔案資料
3. 在第一列輸入“ 4yy ”複製四列;
4. 在 vim 的環境下輸入“ :n ”會來到第二個編輯的檔案,亦即 /etc/hosts 內;
5. 在 /etc/hosts 下按“ G ”到最後一列,再輸入“ p ”貼上;
6. 按下多次的“ u ”來還原原本的檔案資料;
7. 最終按下“ :q ”來離開 vim 的多檔案編輯吧!
看到了吧?利用多檔案編輯的功能,可以讓你很快速的就將需要的資料複製到正確的檔案內。 當然囉,這個功能也可以利用視窗介面來達到,那就是下面要提到的多視窗功能。
3,多視窗功能
在開始這個小節前,先來想像兩個情況:
當我有一個檔案非常的大,我查閱到後面的資料時,想要“對照”前面的資料, 是否需要使用 [ctrl]+f 與 [ctrl]+b (或 pageup, pagedown 功能鍵) 來跑前跑後查閱?
我有兩個需要對照著看的檔案,不想使用前一小節提到的多檔案編輯功能;
在一般視窗介面下的編輯軟體大多有“分割槽視窗”或者是“凍結視窗”的功能來將一個檔案分割槽成多個視窗的展現, 那麼 vim 能不能達到這個功能啊?可以啊!但是如何分割槽視窗並放入檔案呢? 很簡單啊!在命令列介面輸入“:sp {filename}”即可!那個 filename 可有可無, 如果想要在新視窗啟動另一個檔案,就加入檔名,否則僅輸入 :sp 時, 出現的則是同一個檔案在兩個視窗間!
讓我們來測試一下,你先使用“ vim /etc/man_db.conf ”開啟這個檔案,然後“ 1G ”去到第一列,之後輸入“ :sp ” 再次的開啟這個檔案一次,然後再輸入“ G ”,結果會變成下面這樣喔:
萬一你再輸入“ :sp /etc/hosts ”時,就會變成下圖這樣喔:
怎樣?帥吧!兩個檔案同時在一個螢幕上面顯示,你還可以利用“[ctrl]+w+↑”及“[ctrl]+w+↓” 在兩個視窗之間移動呢!這樣的話,複製啊、查閱啊等等的,就變的很簡單囉~ 分割槽視窗的相關指令功能有很多,不過你只要記得這幾個就好了:
多視窗情況下的按鍵功能 |
|
:sp[filename] |
開啟一個新視窗,如果有加 filename, 表示在新視窗開啟一個新檔案,否則表示兩個視窗為同一個檔案內容(同步顯示)。 |
[ctrl]+w+ j [ctrl]+w+↓ |
|
[ctrl]+w+ k [ctrl]+w+↑ |
同上,不過游標移動到上面的視窗。 |
[ctrl]+w+q |
其實就是 :q 結束離開啦! 舉例來說,如果我想要結束下方的視窗,那麼利用 [ctrl]+w+↓ 移動到下方視窗後,按下 :q 即可離開, 也可以按下[ctrl]+w+q 啊! |
鳥哥第一次玩 vim 的分割槽視窗時,真是很高興啊!竟然有這種功能!太棒了! ^_^
4,vim 的挑字補全功能
我們知道 bash 的環境下面可以按下 [tab] 按鈕來達成指令/引數/檔名的補全功能,而我們也知道很多的程式編輯器,例如鳥哥用來在 windows 系統上面教網頁設計、java script 等很好用的 notepad++ (https://notepad-plus-plus.org/) 這種類的程式編輯器,都會有 (1)可以進行語法檢驗及 (2)可以根據副檔名來挑字的功能!這兩個功能對於程式設計者來說, 是很有幫助的!畢竟偶爾某些特定的關鍵字老是背不起來...
在語法檢驗方面,vim 已經使用顏色來達成了!這部份不用傷腦筋的!比較傷腦筋的應該是在挑字補全上面!就是上面談到的可以根據語法來挑選可能的關鍵字, 包括程式語言的語法以及特定的語法關鍵字等等。既然 notepad ++ 都有支援了,沒道理 vim 不支援吧?呵呵!沒錯! 是有支援的~只是你可能要多背兩個組合按鈕就是了!
鳥哥建議可以記憶的主要 vim 補齊功能,大致有下面幾個:
組合按鈕 |
補齊的內容 |
[ctrl]+x -> [ctrl]+n |
通過目前正在編輯的這個“檔案的內容文字”作為關鍵字,予以補齊 |
[ctrl]+x -> [ctrl]+f |
以當前目錄內的“檔名”作為關鍵字,予以補齊 |
[ctrl]+x -> [ctrl]+o |
以副檔名作為語法補充,以 vim 內建的關鍵字,予以補齊 |
在鳥哥的認知中,比較有用的是第1, 3 這兩個組合鍵,第一個組合按鍵中,你可能會在同一個檔案裡面重複出現許多相同的關鍵字, 那麼就能夠通過這個補全的功能來處理。如果你是想要使用 vim 內建的語法檢驗功能來處理取得關鍵字的補全,那麼第三個專案就很有用了。不過要注意,如果你想要使用第三個功能,就得要注意你編輯的檔案的副檔名。我們下面來做個簡單測試好了。
假設你想要編寫網頁,正要使用到 CSS 的美化功能時,突然想到有個背景的東西要處理,但是突然忘記掉背景的 CSS 關鍵語法,那可以使用如下的模樣來處置! 請注意,一定要使用.html 或 .php 的副檔名,否則 vim 不會呼叫正確的語法檢驗功能喔!因此下面我們建立的檔名為 html.html 囉!
由於網頁通常會支援 CSS 的語法,而 CSS 的美化語法使用的是 style 這個關鍵字,這個關鍵字後面接的就是 CSS 的元素與元素值。 若想要取得可能的元素有哪些,例如背景(background) 的語法中,想要了解有哪些跟它有關的內建元素,如上圖, 直接輸入 b 然後按下 [crtl]+x 再按下 [crtl]+o 就會出現如上的相關字詞可以選擇,此時你就能夠使用上下按鈕來挑選所需要的關鍵元素! 這樣使用上當然方便很多啊!只是要注意,一定要使用正確的副檔名,否則會無法出現任何關鍵字詞喔!
5,vim 環境設定與記錄: ~/.vimrc, ~/.viminfo
有沒有發現,如果我們以 vim 軟體來搜尋一個檔案內部的某個字串時,這個字串會被反白,而下次我們再次以 vim 編輯這個檔案時,該搜尋的字串反白情況還是存在呢!甚至於在編輯其他檔案時, 如果其他檔案內也存在這個字串,哇!竟然還是主動反白耶!真神奇! 另外,當我們重複編輯同一個檔案時,當第二次進入該檔案時, 游標竟然就在上次離開的那一列上頭呢!真是好方便啊~但是,怎麼會這樣呢?
這是因為我們的 vim 會主動的將你曾經做過的行為登入下來,好讓你下次可以輕鬆的作業啊! 那個記錄動作的檔案就是: ~/.viminfo !如果你曾經使用過 vim, 那你的主資料夾應該會存在這個檔案才對。這個檔案是自動產生的, 你不必自行建立。而你在 vim 裡頭所做過的動作,就可以在這個檔案內部查詢到囉~ ^_^
此外,每個 distributions 對 vim 的預設環境都不太相同,舉例來說,某些版本在搜尋到關鍵字時並不會高亮度反白, 有些版本則會主動的幫你進行縮排的行為。但這些其實都可以自行設定的,那就是 vim 的環境設定囉~ vim 的環境設定引數有很多,如果你想要知道目前的設定值,可以在一般指令模式時輸入“ :set all ” 來查閱,不過.....設定專案實在太多了~所以,鳥哥在這裡僅列出一些平時比較常用的一些簡單的設定值, 提供給你參考啊。
Tips 所謂的縮排,就是當你按下 Enter 編輯新的一列時,游標不會在行首,而是在與上一列的第一個非空白字元處對齊!
vim 的環境設定引數 |
|
:set nu :set nonu |
就是設定與取消行號啊! |
:set hlsearch :setnohlsearch |
hlsearch 就是 high light search(高亮度搜尋)。 這個就是設定是否將搜尋的字串反白的設定值。預設值是 hlsearch |
:set autoindent :setnoautoindent |
是否自動縮排?autoindent 就是自動縮排。 |
:set backup |
是否自動儲存備份檔案?一般是 nobackup 的, 如果設定backup 的話,那麼當你更動任何一個檔案時,則原始檔案會被另存成一個檔名為 filename~ 的檔案。 舉例來說,我們編輯hosts ,設定 :set backup ,那麼當更動 hosts 時,在同目錄下,就會產生 hosts~ 檔名的檔案,記錄原始的 hosts 檔案內容 |
:set ruler |
還記得我們提到的右下角的一些狀態列說明嗎? 這個 ruler 就是在顯示或不顯示該設定值的啦! |
:set showmode |
這個則是,是否要顯示 --INSERT-- 之類的字眼在左下角的狀態列。 |
:setbackspace=(012) |
一般來說, 如果我們按下 i 進入編輯模式後,可以利用倒退鍵(backspace) 來刪除任意字元的。 但是,某些 distribution 則不許如此。此時,我們就可以通過 backspace 來設定囉~ 當backspace 為 2 時,就是可以刪除任意值;0 或 1 時,僅可刪除剛剛輸入的字元, 而無法刪除原本就已經存在的文字了! |
:set all |
顯示目前所有的環境引數設定值。 |
:set |
顯示與系統預設值不同的設定引數, 一般來說就是你有自行變動過的設定引數啦! |
:syntax on :syntax off |
是否依據程式相關語法顯示不同顏色? 舉例來說,在編輯一個純文字檔案時,如果開頭是以 # 開始,那麼該列就會變成藍色。 如果你懂得寫程式,那麼這個 :syntax on 還會主動的幫你除錯呢!但是, 如果你僅是編寫純文字,要避免顏色對你的螢幕產生的干擾,則可以取消這個設定 。 |
:set bg=dark :set bg=light |
可用以顯示不同的顏色色調,預設是“ light ”。如果你常常發現註解的字型深藍色實在很不容易看, 那麼這裡可以設定為 dark喔!試看看,會有不同的樣式呢! |
總之,這些設定值很有用處的啦!但是......我是否每次使用 vim 都要重新設定一次各個引數值? 這不太合理吧?沒錯啊!所以,我們可以通過配置檔案來直接規定我們習慣的 vim 操作環境呢! 整體 vim 的設定值一般是放置在 /etc/vimrc 這個檔案,不過,不建議你修改他! 你可以修改 ~/.vimrc 這個檔案 (預設不存在,請你自行手動建立!),將你所希望的設定值寫入! 舉例來說,可以是這樣的一個檔案:
[[email protected] ~]$ vim ~/.vimrc
"這個檔案的雙引號 (") 是註解
set hlsearch "高亮度反白
set backspace=2 "可隨時用倒退鍵刪除
set autoindent "自動縮排
set ruler "可顯示最後一列的狀態
set showmode "左下角那一列的狀態
set nu "可以在每一列的最前面顯示行號啦!
set bg=dark "顯示不同的底色色調
syntax on "進行語法檢驗,顏色顯示。
在這個檔案中,使用“ set hlsearch ”或“ :set hlsearch ”,亦即最前面有沒有冒號“ : ”效果都是一樣的! 至於雙引號則是註解符號!不要用錯註解符號,否則每次使用 vim 時都會發生警告訊息喔! 建立好這個檔案後,當你下次重新以 vim 編輯某個檔案時,該檔案的預設環境設定就是上頭寫的囉~ 這樣,是否很方便你的操作啊!多多利用 vim 的環境設定功能呢!^^
6,vim 常用指令示意圖
為了方便大家查詢在不同的模式下可以使用的 vim 指令,鳥哥查詢了一些 vim 與 Linux 教育訓練手冊, 發現下面這張圖非常值得大家參考!可以更快速有效的查詢到需要的功能喔!看看吧!
二、其他 vim 使用注意事項
vim 其實不是那麼好學,雖然他的功能確實非常強大!所以下面我們還有一些需要注意的地方要來跟大家分享喔!
1,中文編碼的問題
很多朋友常常哀嚎,說他們的 vim 裡面怎麼無法顯示正常的中文啊?其實這很有可能是因為編碼的問題! 因為中文編碼有 big5 與 utf8 兩種,如果你的檔案是使用 big5 編碼製作的,但在 vim 的終端介面中你使用的是萬國碼(utf8), 由於編碼的不同,你的中文檔案內容當然就是一堆亂碼了!怎麼辦?這時你得要考慮許多東西啦!有這些:
1. 你的 Linux 系統預設支援的語系資料:這與 /etc/locale.conf 有關;
2. 你的終端介面 (bash) 的語系: 這與 LANG, LC_ALL 這幾個變數有關;
3. 你的檔案原本的編碼;
4. 開啟終端機的軟體,例如在 GNOME 下面的視窗介面。
事實上最重要的是上頭的第三與第四點,只要這兩點的編碼一致,你就能夠正確的看到與編輯你的中文檔案。 否則就會看到一堆亂碼啦!
一般來說,中文編碼使用 big5 時(國人用的是GB),在寫入某些資料庫系統中,在“許、蓋、功”這些字型上面會發生錯誤! 所以近期以來大多希望大家能夠使用萬國碼 utf8 來進行中文編碼!但是在中文Windows 上的軟體常常預設使用 big5 的編碼 (不一定是 windows 系統的問題,有時候是某些中文軟體的預設值之故), 包括鳥哥由於沿用以前的檔案資料檔案,也大多使用 big5 的編碼。此時就得要注意上述的這些咚咚囉。
在 Linux 本機前的 tty1~tty6 原本預設就不支援中文編碼,所以不用考慮這個問題!因為你一定會看到亂碼!呵呵! 現在鳥哥假設俺的檔案檔案內編碼為 big5 時,而且我的環境是使用Linux 的 GNOME ,啟動的終端介面為 GNOME-terminal 軟體, 那鳥哥通常是這樣來修正語系編碼的行為:
[[email protected] ~]$ LANG=zh_TW.big5 # 記得是GBK之類的
[[email protected] ~]$ export LC_ALL=zh_TW.big5
然後在終端介面工具列的“終端機”-->“設定字元編碼” -->“中文 (正體) (BIG5)”專案點選一下, 如果一切都沒有問題了,再用 vim 去開啟那個 big5 編碼的檔案,就沒有問題了!以上!報告完畢!
2,DOS 與 Linux 的斷行字元
我們在第六章裡面談到 cat 這個指令時,曾經提到過 DOS 與 Linux 斷行字元的不同。 而我們也可以利用 cat -A 來觀察以 DOS (Windows 系統) 建立的檔案的特殊格式, 也可以發現在DOS 使用的斷行字元為 ^M$ ,我們稱為 CR 與 LF 兩個符號。 而在 Linux 下面,則是僅有LF ($) 這個斷行符號。這個斷行符號對於 Linux 的影響很大喔! 為什麼呢?
我們說過,在 Linux 下面的指令在開始執行時,他的判斷依據是 “Enter”,而 Linux 的 Enter為 LF 符號, 不過,由於 DOS 的斷行符號是 CRLF ,也就是多了一個 ^M 的符號出來, 在這樣的情況下,如果是一個 shell script 的程式檔案,呵呵~將可能造成“程式無法執行”的狀態~ 因為他會誤判程式所下達的指令內容啊!這很傷腦筋吧!
那怎麼辦啊?很簡單啊,將格式轉換成為 Linux 即可啊!“廢話”,這當然大家都知道,但是,要以 vi 進入該檔案,然後一個一個刪除每一列的 CR 嗎?當然沒有這麼沒人性啦! 我們可以通過簡單的指令來進行格式的轉換啊。
不過,由於我們要操作的指令預設並沒有安裝,鳥哥也無法預期你有沒有網路,因此假設你沒有網路的狀況下, 請拿出你的原版光碟,放到光碟機裡頭去,然後使用下面的方式來安裝我們所需要的這個軟體喔!
[[email protected] ~]$ su - # 安裝軟體一定要是 root 的許可權才行!
[[email protected] ~]# mount /dev/sr0 /mnt
[[email protected] ~]# rpm -ivh /mnt/Packages/dos2unix-*
warning: /mnt/Packages/dos2unix-6.0.3-4.el7.x86_64.rpm: Header V3 RSA/SHA256 ....
Preparing... ################################# [100%]
Updating / installing...
1:dos2unix-6.0.3-4.el7 ################################# [100%]
[[email protected] ~]# umount /mnt
[[email protected] ~]# exit
那就開始來玩一玩這個字元轉換吧!
[[email protected] ~]$ dos2unix [-kn] file [newfile]
[[email protected] ~]$ unix2dos [-kn] file [newfile]
選項與引數:
-k :保留該檔案原本的 mtime 時間格式 (不更新檔案上次內容經過修訂的時間)
-n :保留原本的舊檔案,將轉換後的內容輸出到新檔案,如: dos2unix -n old new
範例一:將 /etc/man_db.conf 重新複製到 /tmp/vitest/ 下面,並將其修改成為 dos 斷行
[[email protected] ~]# cd /tmp/vitest
[[email protected] vitest]$ cp -a /etc/man_db.conf .
[[email protected] vitest]$ ll man_db.conf
-rw-r--r--. 1 root root 5171 Jun 10 2014 man_db.conf
[[email protected] vitest]$ unix2dos -k man_db.conf
unix2dos: converting file man_db.conf to DOS format ...
# 螢幕會顯示上述的訊息,說明斷行轉為 DOS 格式了!
[[email protected] vitest]$ ll man_db.conf
-rw-r--r--. 1 dmtsai dmtsai 5302 Jun 10 2014 man_db.conf
# 斷行字元多了 ^M ,所以容量增加了!
範例二:將上述的 man_db.conf 轉成 Linux 斷行字元,並保留舊檔案,新檔案放於 man_db.conf.linux
[[email protected] vitest]$ dos2unix -k -n man_db.conf man_db.conf.linux
dos2unix: converting file man_db.conf to file man_db.conf.linux in Unix format ...
[[email protected] vitest]$ ll man_db.conf*
-rw-r--r--. 1 dmtsai dmtsai 5302 Jun 10 2014 man_db.conf
-rw-r--r--. 1 dmtsai dmtsai 5171 Jun 10 2014 man_db.conf.linux
[[email protected] vitest]$ file man_db.conf*
man_db.conf: ASCII text, with CRLF line terminators # 很清楚說明是 CRLF 斷行!
man_db.conf.linux: ASCII text
因為斷行字元以及 DOS 與 Linux 作業系統下面一些字元的定義不同,因此, 不建議你在Windows 系統當中將檔案編輯好之後,才上傳到 Linux 系統,會容易發生錯誤問題。 而且,如果你在不同的系統之間複製一些純文字時,千萬記得要使用 unix2dos 或 dos2unix 來轉換一下斷行格式啊!
3,語系編碼轉換
很多朋友都會有的問題,就是想要將語系編碼進行轉換啦!舉例來說,想要將 big5 編碼轉成utf8 。 這個時候怎麼辦?難不成要每個檔案開啟會轉存成 utf8 嗎?不需要這樣做啦!使用iconv 這個指令即可! 鳥哥將之前的 vi 章節做成 big5 編碼的檔案,你可以照下面的連結來下載先:
http://linux.vbird.org/linux_basic/0310vi/vi.big5
在終端機的環境下你可以使用“ wget 網址”來下載上述的檔案喔!鳥哥將他下載在 /tmp/vitest目錄下。 接下來讓我們來使用 iconv 這個指令來玩一玩編碼轉換吧!
[[email protected] ~]$ iconv --list
[[email protected] ~]$ iconv -f 原本編碼 -t 新編碼 filename [-o newfile]
選項與引數:
--list :列出 iconv 支援的語系資料
-f :from ,亦即來源之意,後接原本的編碼格式;
-t :to ,亦即後來的新編碼要是什麼格式;
-o file:如果要保留原本的檔案,那麼使用 -o 新檔名,可以建立新編碼檔案。
範例一:將 /tmp/vitest/vi.big5 轉成 utf8 編碼吧!
[[email protected] ~]$ cd /tmp/vitest
[[email protected] vitest]$ iconv -f big5 -t utf8 vi.big5 -o vi.utf8
[[email protected] vitest]$ file vi*
vi.big5: ISO-8859 text, with CRLF line terminators
vi.utf8: UTF-8 Unicode text, with CRLF line terminators
# 是吧!有明顯的不同吧! ^_^
這指令支援的語系非常之多,除了正體中文的 big5, utf8 編碼之外,也支援簡體中文的gb2312 , 所以對岸的朋友可以簡單的將鳥站的網頁資料下載後,利用這個指令來轉成簡體,就能夠輕鬆的讀取檔案資料囉! 不過,不要將轉成簡體的檔案又上傳成為您自己的網頁啊!這明明是鳥哥寫的不是嗎? ^_^
不過如果是要將正體中文的 utf8 轉成簡體中文的 utf8 編碼時,那就得費些功夫了! 舉例來說,如果要將剛剛那個 vi.utf8 轉成簡體的 utf8 時,可以這樣做:
[[email protected] vitest]$ iconv -f utf8 -t big5 vi.utf8 | \
> iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8