第 5 章 文字編輯工具 內容: Vi Vim
vi 與 vim文字編輯器 在 Linux 的系統中使用文字編輯器來編輯您 的 Linux 參數設定檔 在 Linux 底下有哪些文書編輯器呢? 可多了~例如 vi, emacs, xemacs, joe, e3, xedit, kedit, pico .... 多的很~ 各家處理器各有其優缺點 建議使用 vi 較新的 distributions 上,您也可以使用較新較先進的 vim 這個文書處理器 vim 可以看做是 vi 的進階軟體,他可以具有顏色顯示,很方便程式開發人員在進行程式的撰寫
vi 與 vim文字編輯器 vim 則可以說是程式開發者很好用的工具
vi 的使用 共分為三種模式,分別是『一般模式』、 『編輯模式』與『指令列命令模式』三種 一般模式 共分為三種模式,分別是『一般模式』、 『編輯模式』與『指令列命令模式』三種 一般模式 以 vi 處理一個檔案的時後,一進入該檔案就是一般模式了。 在這個模式中, 你可以使用『上下左右』按鍵來移動游標,您可以使用『刪除字元』或『刪除整行』來處理檔案內容, 也可以使用『複製、貼上』來處理您的文件資料
vi 的使用 編輯模式 在一般模式中可以處理刪除、複製、貼上等等的動作,但是卻無法編輯的! 要等到您按下『i, I, o, O, a, A, r, R』等字母之後才會進入編輯模式 通常在 Linux 中,按下上述的字母時,在畫面的左下方會出現『 INSERT 或 REPLACE 』的字樣,才可以輸入任何字來輸入到您的檔案中 而如果要回到一般模式時, 則必須要按下『Esc』這個按鍵即可退出編輯模式
vi 的使用 指令列命令模式 在一般模式當中,輸入『 : 或 / 或 ? 』就可以將游標移動到最底下那一行
Vi三個模式
使用 vi 建立一個檔案 使用 vi 建立一個檔名為 test.txt 的資料 使用 vi 進入一般模式 左下角還會顯示這個檔案目前的狀態! 如果是新建檔案會顯示 [New File] 如果是已存在的檔案,則會顯示目前的檔名、行數與字元數
使用 vi 建立一個檔案
按 i 進入編輯模式,編輯文字
按 i 進入編輯模式,編輯文字 一般模式之中,只要按下 I, o, a 等字元,就 可以進入編輯模式了 發現在左下角會出現 –INSERT- 的畫面,那就是可以輸入任意字元的提示囉 這個時候,鍵盤上除了 [Esc] 這個按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕了,所以您可以進行任何的編輯囉 vi 裡面, [tab] 這個按鈕所得到的結果與空白字元所得到的結果是不一樣的
退出編輯模式 按下 [ESC] 按鈕回到一般模式 (退出) 按下 [Esc] 這個按鈕即可!馬上你就會發現畫面左下角的 – INSERT – 不見了
離開 vi 一般模式中按下 :wq 儲存後離開 vi 按下 『:』該游標就會移動到最底下一行去
離開 vi 如果您的檔案權限不對,例如為 -r--r--r-- 時 ,那麼可能會無法寫入 那麼就可以使用『強制寫入』的方式! 使用『:wq!』 多加一個驚嘆號即可強制寫入!
命令列內容說明 所謂的命令列或命令模式 就是在最下面一行沒有顯示 『--INSERT--』或者『--REPLACE--』 字樣的時候
檔案儲存與離開
vi 中的數字 在 vi 中,『數字』是很有意義的 數字通常代表重複做幾次的意思 也有可能是代表去到第幾個什麼什麼的意思 舉例來說,要刪除 50 行,則是用 『50dd』數字加在動作之前 那我要向下移動 20 行,就是『20j』或者是『20↓』即可
練習 請建立一個名為 vitest 的目錄 進入 vitest 這個目錄當中,將 /etc/man.config 拷貝到本目錄底下 使用 vi 開啟本目錄下的 man.config 這個檔案 在 vi 中設定一下行號 (:set nu) 移動到第 58 行,向右移動 40 個字元,請問 您看到的雙引號內是什麼目錄(58G)(40) 移動到第一行,並且向下搜尋一下『 bzip2 』 這個字串,請問他在第幾行(1G)(/bzip2)
練習 將 50 到 100 行之間的 man 改為 MAN,且 一個一個挑選是否需要修改,如何下指令 修改完後,反悔要全部復原,有哪些方法 我要複製 51 到 60 行這十行的內容,並且貼 到最後一行之後 刪除 11 到 30 行之間的 20 行 將這個檔案另存成 man.test.config 的檔名 去到第 29 行,並且刪除 15 個字元 儲存後離開吧!
答案 『cp /etc/man.config .』 『vi man.config』 『:set nu』 先按下『58G』再按下『40→』會看到『 /dir/bin/foo』這個字樣在雙引號內 先執行『1G』或『gg』後,直接輸入『 /bzip2』,則會去到第 116 行才對 直接下達『 :50,100s/man/MAN/gc 』即可
答案 (1)簡單的方法可以一直按『 u 』回復到原始狀 態,(2)使用不儲存離開『 :q! 』之後,再重新 讀取一次該檔案 『51G』 然後再『 10yy 』之後按下『 G 』到 最後一行,再給他『 p 』貼上十行 『11G』 後,再下『 20dd 』即可刪除 20 行了 :w man.test.config 『29G』 之後,再給他『 15x 』即可刪除 15 個字元 『:wq!』
檔案的回復與暫存檔 vi 是具有『可回復』功能 當我們編輯一個檔案時,假設名稱為 /tmp/passwd , 那麼在這個 /tmp 底下就會有一個暫存檔案,檔名為『 /tmp/.passwd.swp 』,這是一個隱藏檔 我們所進行的一些修改都會暫時存在這個檔案當中,萬一在檔案修改過程中, 系統掛了,那麼下次你再重新 vi /tmp/passwd 時,系統就會告訴您,是否需要回復『Recovery』成修改過程中的模樣 如果您按下 (R) ,就可以將資料回復到修改過程的樣子,而不是原始檔案囉
檔案的回復與暫存檔 若/tmp 底下,執行 ls -al 時 發現到底下有兩個檔案, 檔名分別為 passwd 與 .passwd.swp 的話 (1) 可能有人在編輯這個檔案 (2) 之前您在編輯這個檔案時,因為某些不知名的因素導致 vi 程式中斷,則該暫存檔就會存在。 您可以將該 .passwd.swp 檔案刪除,或者是,直接 vi /tmp/passwd , 在 vi 出現是否回復時,選擇回復,然後儲存更新 /tmp/passwd ,之後再將這個 /tmp/.passwd.swp 檔案刪除即可 如果不刪除的話,那麼每次編輯這個檔案,都會告知您該檔案有問題
vim 目前大部分的 distributions 都以 vim 取代 vi 的功能 如果您使用 vi 後,卻看到畫面的右下角有顯示目前游標所在的行列號碼, 那麼您的 vi 已經被 vim 所取代囉 為什麼要用 vim 呢?因為 vim 具有顏色顯示的功能,並且還支援許多的程式語法 (syntax)
vim 如果您在文字模式下,輸入 alias 時,出現 這樣的畫面 表示當您使用 vi 這個指令時,其實就是執 行 vim 啦 vim 的一般用法與 vi 完全一模一樣
vim 編輯 /etc/man.config ,則輸入『vim /etc/man.config』 最底下一行說明這個檔案的特色,包括 138 行,共 4506 字元等等 那個 1,1 代表目前游標在第一行的第一個字元上。您可以看到第一行有個游標的存在 那個 Top 則表示,這個畫面是整個檔案的最上方