390 likes | 505 Views
VI 文字編輯器. VI 編輯器簡介. 多數 Linux 系統中預設的文字編輯器 大量的快速鍵指令 簡單的程式語法除錯機制. 三種模式切換. 指令模式. 編輯模式. 一般模式 - 移動游標. 刪除複製與貼上. vim 文書編輯軟體. vim 是 Linux 中功能相當強的編輯工具 , 其前身是 Unix 系統下元老級的文書編輯程式 vi , 也是目前 Linux 預設的編輯軟體。. 3 種主要的模式.
E N D
VI編輯器簡介 • 多數Linux系統中預設的文字編輯器 • 大量的快速鍵指令 • 簡單的程式語法除錯機制
vim 文書編輯軟體 • vim 是 Linux 中功能相當強的編輯工具, 其前身是 Unix 系統下元老級的文書編輯程式 vi , 也是目前 Linux 預設的編輯軟體。
3 種主要的模式 • normal mode:我們一開始進入 vim 時, 預設的模式就是 normal mode。在此模式下, 我們無法輸入任何文字, 不過可以利用按鍵指令來執行許多操作命令, 例如移動游標位置、複製、刪除...。 • insert mode:進入 vim 之後, 按 [a]、[i] 或 [o] 鍵, 即可進入 insert mode, 在此模式下, 我們才可以輸入文字內容。
3 種主要的模式 • command-line mode:在 normal mode 中按 [:] 即會進入 command-line mode, 在此模式下, 我們可以做一些與輸入文字無關的事, 例如搜尋字串、儲存檔案或結束編輯等。
由於 vim 的功能繁多, 首先我們來看看 vim 的編輯環境, 以及如何結束 vim。 • 請在文字模式視窗或虛擬主控台中執行 vim 指令, 或是執行 vim 檔案名稱指定要編輯的檔案(由於在虛擬主控台中開啟 vim, 因中文字都會變成亂碼, 所以請先執行LANG=C 指令, 改以英文顯示, 再執行 vim指令):
用 vi 與 vim 指令編輯文件的差異 • vi 原本是 Unix 的文書編輯器, 後來 Linux 也延用了此傳統的編輯器, 因此許多人習慣以vi 檔案名稱指令來編輯文件。 • vim 編輯器會將註解、變數等文字加上顏色, 讓使用者可以方便地編輯設定檔、程式碼等檔案。
用 vi 與 vim 指令編輯文件的差異 • 不過在 Fedora Core 下面執行 vi 指令時, 只會啟動一個精簡版本的 vim, 因此編輯檔案時不會有顏色, 必須使用 vim 編輯檔案才會有顏色。所以習慣以 vi 檔案名稱指令來編輯文件的人, 可以建立下面連結:
用 vim 編寫文件 • 進入 vim 時預設的模式是 normal mode, 無法輸入文字, 現在我們要開始編寫一個文字檔, 請按 [i] 鍵切換到 insert mode:
用 vim 編寫文件 • 其實要切換到 insert mode, 除了按 [i] 鍵外, 還可以按 [a] 或 [o] 鍵進入 insert mode, 筆者將三者的差別整理如下: • 按 [i] 鍵:從目前游標所在位置的下一個字元開始輸入。 • 按 [a] 鍵:從游標所在位置插入新輸入的字元。 • 按 [o] 鍵:新增加一行, 並將游標移到下一行的開頭。
儲存檔案、離開 vim • 編寫好文件之後, 接下來便要存檔及離開 vim, 請按 [Esc] 鍵回到 normal mode, 然後按 [:] 鍵進入 command-line mode, 輸入 "w 檔案的路徑及名稱":
進入 vim 後, 如何開啟既有文字檔? • 如果您在進入 vim 之後, 想要開啟既有的檔案 (例如要開啟 /tmp 目錄中的 text.txt), 可以按 [:] 鍵進入 command-line mode, 然後輸入 "e 檔案的路徑及名稱":
vim 的操作指令 • 移動游標位置 • 複製文字 • 刪除文字 • 尋找及取代文字
移動游標位置 • 無論在 normal mode 或 insert mode, 都可以使用方向鍵來移動游標所在的位置, 但在方向鍵不能使用的時候, 則必須切換到 normal mode 再配合下列幾組按鍵命令來移動游標 (以下按鍵命令前的 “^”, 表示先按住 [Ctrl] 鍵, 再按其他的英文字母)。
移動游標的基本操作 • h:將游標向左移動一格。 • l:將游標向右移動一格。 • j:將游標向下移動一行。 • k:將游標向上移動一行。 • ^b:將游標向前面捲動一頁, 相當於按 [Page Up] 鍵。 • ^f:將游標向文章後面移動一頁, 相當於按 [Page Down] 鍵。
移動游標的進階操作 • 0 (數目字 0):將游標移到該行的最前面。 • $ (請按 [Shift] + [4] 鍵):將游標移到該行的最後面。 • G:將游標移到最後一行的開頭。 • w 或 W:將游標移到下一個字。 • e 或 E:將游標移到本單字的最後一個字元;如果游標所在位置為本單字的最後一個字元, 則跳到下一個單字的最後一個字元。
移動游標的進階操作 • b:將游標移到本單字的第一個字元;如果游標所在位置為本單字的第一個字元 , 則跳到上一個單字的第一個字元。 • [[:在編輯 C/C++/PHP 等程式時, 連按兩次 [ [ ] 鍵可將游標移至函式開頭的 “{” 處, 再連按兩次則會將游標移至上一個函式開頭的 “{” 處。 • ]]:在編輯 C/C++/PHP 等程式時, 連按兩次 [ ] ] 鍵可將游標移至下一個函式開頭的 "{" 處。
移動游標的進階操作 當要捲動螢幕內容的時候, 可以使用 [Page Up] 與 [Page Down] 鍵換頁。但在這 2 個鍵不能使用的時候, 除了第 13-16 頁介紹的^b 及^f 外,還可以用下列幾個組合鍵: • ^u:將游標向前移動半頁。 • ^d:將游標向後移動半頁。 • ^e:螢幕向下捲動一行, 也可以說檔案內容和游標向上捲動一行。 • ^y:螢幕向上捲動一行, 也可以說檔案內容和游標向下捲動一行。
複製文字 複製文字可以省下重複輸入的時間, vim 也提供了以下的操作按鍵: • yy:連續按 [y] 鍵, 可將游標目前所在位置的整行複製, 複製時並不會將文字反白顯示。 • nyy:其中 n 為數字鍵, 表示要複製的行數。若按 [3] [y] [y] 鍵, 則將連同游標所在位置的一行, 與下面 2 行 (共 3 行) 一起複製。
複製文字 • yw:按 [y] [w] 鍵可複製游標所在位置到此單字結束的字元。 • nyw:若按 [3] [y] [w] 鍵, 則會將目前游標所在位置到單字結束, 以及後面的2 個單字 (共 3 個單字) 一起複製 (n 表示要複製的單字數目)。 • p:可將複製的字貼在目前游標所在的位置。若複製的是整行文字, 則會將整行內容貼在游標所在位置的下一行。
刪除文字 要刪除文字時, 可以一次刪除一個字元, 也可以一次刪除好幾個字元或是整行文字: • d:先按 [d] 鍵放開後, 然後按 [←] 鍵, 可將游標位置前一個字元刪除。按 [→] 鍵, 則會將游標位置的字元刪除。按 [↑] 鍵, 可將目前游標所在的行與前一行一併刪除。按 [↓] 鍵, 可將目前游標所在的行與下一行刪除。 • D:可刪除一行中, 游標所在位置之後的所有字元。
刪除文字 • dd:連按 2 次 [d] 鍵可刪除游標所在那一行。所以千萬不要按著 鍵不放 , 因為會連著刪除好幾行。 • dw:將游標停在某個字的第一個字元, 按 [d] [w] 鍵時, 會將此單字整個刪除。若將游標置於某個字中間的字元上, 則會將此單字中, 游標後面的字元刪除。
刪除文字 • nd:n 為數字, 若按 [3] [d] 表示標示游標位置的上或下方 3 行。再按下 [↑] 鍵, 則刪除游標上方 3 行, 再包括本身 1 行, 共刪除 4 行。若按下 [↓] 鍵 , 則刪除游標下方 3 行, 再包括本身 1 行, 共刪除 4 行。 • ndd:若按 [3] [d] [d] 鍵, 表示刪除目前游標位置的 1 行與下面的 2 行。 • x:刪除游標所在位置的字元, 用法與鍵盤上的 [Detele] 鍵相同。
刪除文字 • X:刪除游標位置前面一個字元, 與 [d] + [←] 鍵一樣。 • nx:按 [4] [x] 鍵, 表示刪除游標位置後的 3 個字元, 與游標本身所在的字元。 • nX:按 [4] [X] 鍵, 表示刪除游標位置之前的 4 個字元 (不包括游標的字元)。
尋找及取代文字 • / 或 ?:當要搜尋文章中的某一個字串時, 可輸入 “/” 或 “?”, 然後再輸入要尋找的字串。例如輸入 “/gz” 或 “?gz”, 然後按 [Enter] 鍵, vim 就會把所有的 gz 字串標記起來, 並自動將游標移到第一個找到的字串上。 • n:將游標移到下一個找到的字串上。 • N:將游標移到上一個找到的字串上。
尋找及取代文字 • r:取代游標所在位置的字元。修改內容不一定要進入 insert mode, 在 normal mode 中, 只要將游標移到要更改的字元上, 然後按 [r] 鍵, 就可以輸入要替換的字元了。 • cc:按 [c] [c] 鍵可取代游標所在的那一行。 • 替換字串:當我們要將文章中的某一個字串全部替換時 (例如將所有的 temp 換成 tmp), 使用 ":g/temp/s//tmp/g" 或是 ":%s/temp/tmp/g" 命令, 可以立刻將所有 "temp" 字串換成 "tmp" 字串。
尋找及取代文字 • 如果不是所有的 "temp" 字串都要替換時, 可用 ":g/temp/s//tmp/gc" 或 ": %s/temp/tmp/gc" 命令。則找到每一個 "temp" 字串時, 都會將整行顯示在螢幕下方, 您可輸入 "y" 或 "n" 決定是否要替換。
顯示游標所在行數、移到指定行數 當我們在寫程式的時候, 常常會需要跳到某一行去修改, 因此每一行的號碼就相當重要。vim 也為此提供了幾個按鍵組合: • ^g、^G:按此組合鍵, 則會在最下方處顯示游標所在位置(以百分比表示), 以及文章的總行數。 • nG:n 為數字, 若按下 [2] [0] [g], 則可將游標移到第 20 行。
復原上一個動作 • u:按此鍵就是在執行 undo 指令, 可取消前一次的動作。在 vim 中, undo 並沒有次數上的限制, 也就是您可以無限制的執行 undo。 • ^r:按此鍵就是在執行 redo 指令。可以回復剛才 undo 的動作。
一個操作 vim 不可不知的指令: 英文的句點, 可以讓您重複編輯動作