320 likes | 442 Views
第 5 章 文字編輯工具. 內容: Vi Vim. vi 與 vim 文字編輯器. 在 Linux 的系統中使用文字編輯器來編輯您的 Linux 參數設定檔 在 Linux 底下有哪些文書編輯器呢? 可多了~例如 vi, emacs, xemacs, joe, e3, xedit, kedit, pico .... 多的很~ 各家處理器各有其優缺點 建議使用 vi 較新的 distributions 上,您也可以使用較新較先進的 vim 這個文書處理器
E N D
第 5 章 文字編輯工具 內容: Vi Vim
vi 與 vim文字編輯器 • 在 Linux 的系統中使用文字編輯器來編輯您的 Linux 參數設定檔 • 在 Linux 底下有哪些文書編輯器呢? 可多了~例如 vi, emacs, xemacs, joe, e3, xedit, kedit, pico .... 多的很~ 各家處理器各有其優缺點 • 建議使用 vi • 較新的 distributions 上,您也可以使用較新較先進的 vim 這個文書處理器 • vim 可以看做是 vi 的進階軟體,他可以具有顏色顯示,很方便程式開發人員在進行程式的撰寫
vi 與 vim文字編輯器 • vim 則可以說是程式開發者很好用的工具 • 連 vim 的官方網站 (http://www.vim.org) 也說 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] • 如果是已存在的檔案,則會顯示目前的檔名、行數與字元數
按 i 進入編輯模式,編輯文字 • 一般模式之中,只要按下 I, o, a 等字元,就可以進入編輯模式了 • 發現在左下角會出現 –INSERT- 的畫面,那就是可以輸入任意字元的提示囉 • 這個時候,鍵盤上除了 [Esc] 這個按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕了,所以您可以進行任何的編輯囉 • vi 裡面, [tab] 這個按鈕所得到的結果與空白字元所得到的結果是不一樣的
退出編輯模式 • 按下 [ESC] 按鈕回到一般模式 (退出) • 按下 [Esc] 這個按鈕即可!馬上你就會發現畫面左下角的 – INSERT – 不見了
離開 vi • 一般模式中按下 :wq 儲存後離開 vi • 按下 『:』該游標就會移動到最底下一行去 • 存檔並離開的指令很簡單,輸入『:wq』即可存檔離開
離開 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 則表示,這個畫面是整個檔案的最上方