2013年3月23日 星期六

vi 與 vim 的指令整理

vi 是 unix 家族下最功能強大的文字編輯器,讓用戶只要使用一個鍵盤就可以完成所有的編輯。而 vim 則是 vi 的加強版,甚至在 Windows 上也找得到 vim 的芳蹤。但 vi/vim 眾多的指令卻經常令初學者卻步,以下就是我所整理出來那些令人卻步的指令:

編輯模式

指令說明
*i在游標位置進入編輯模式
I在游標行的第一個非空白字元進入編輯模式
*a在游標位置後進入編輯模式
*A在游標行的最後一個字元進入編輯模式
*o向下新增一行,並進入編輯模式
O向上新增一行,並進入編輯模式
cc刪除游標行,並進入編輯模式
*[ESC]取消指令或退出編輯模式
游標移動
指令說明
*gg移到第一行
*G移到最後一行
*行數 → G移動到第 n 行
0移動到該行最前面
$移動到該行最後面
字數 → [Space]向右移動 n 個字元
*行數 → [Enter]向下移動 n 行

標記與複製

指令說明
*v開始字串標記
*V開始行標記
*v → [Ctrl]-V開始區塊標記
*d刪除標記的內容
*y複製標記的內容
*yy複製游標行
yG複製游標行到最後一行
y1G複製游標行到第一行
y$複製游標處到最後一個字元
y0複製游標處到第一個字元
*p在下一行貼上複製或刪除的內容
P在上一行貼上複製或刪除的內容
*[Ctrl]-R → 0在下一行貼上複製或刪除的內容,適用於編輯模式及指令行

搜尋與取代

指令說明
*/搜尋字串向下搜尋字串
**將游標移到字串上,直接按 “*” 也可以做向下搜尋
?搜尋字串向上搜尋字串
*:set ic搜尋時不分大小寫
*:set noic搜尋時要分大小寫
*n繼續下一個搜尋結果
*N繼續上一個搜尋結果
*:起始行,終止行s/搜尋字串/取代字串/gic從第 n 行到第 n 行取代字串 (後面的 g: 整行全部, i: 不分大小寫,c: 詢問)
*:1,$s/搜尋字串/取代字串/gic全部取代字串 (後面的 g: 整行全部, i: 不分大小寫,
c: 詢問)

刪除

指令說明
*dd刪除游標行
*dG刪除游標行到最後一行
d1G刪除游標行到第一行
*d$刪除游標處到最後一個字元
d0刪除游標處到第一個字元

檔案功能

指令說明
*:w存檔 (加 ! 表示強制存檔)
*:w 檔案名稱另存新檔
*:wq存檔並退出 vi
:e 檔案名稱編輯其它檔案
*:e!還原至檔案編修前的狀態
:r 檔案名稱讀入檔案內容,並加到游標行的後面
*:n切換到下一個開啟的檔案
*:N切換到上一個開啟的檔案
*:set nu顯示行號
*:set nonu取消行號顯示
*:files列出所有開啟的檔案

視窗分割

指令說明
*:new新增水平視窗
*:new 檔案名稱新增水平視窗,並在新增的視窗載入檔案
*:vnew新增垂直視窗
*:vnew 檔案名稱新增垂直視窗,並在新增的視窗載入檔案
*[Ctrl]-W → [方向鍵]切換視窗
*:only僅保留目前的視窗

其它

*指令說明
*J將游標行與下一行合併
*u還原指令
*[Ctrl]-R重做指令
*.重覆上一個指令
命令執行 linux 指令,並顯示執行結果
*:q退出 vi (加 ! 表示強制退出)

vim 的設定檔

通常我會編輯 /etc/vimrc,在檔案最後加入:
" 顯示列號
set number
" 語法高亮度顯示
syntax on
" 標記搜尋到的字串
set hlsearch
" 自動縮排
set autoindent
" 顯示說明
set ruler
" 顯示編輯狀態
set showmode
" 設定註解的顏色
highlight Comment ctermfg=cyan
" 設定搜尋到的字串顏色
highlight Search term=reverse ctermbg=4 ctermfg=7
" 設定 tab 鍵的字元數
set tabstop=4

沒有留言: