在編程領域中, 編輯器之戰的兩位主角 Vi 和 Emacs 經歷幾十年的歲月後, 直到現在依然擁有許多信徒; 而隨著時間的過去, Vi (Visual,Bill Joy 於 1976 年發表 ) 的功能不斷地被增強, 最後演化出目前受歡迎的 Vim; Vim 不管是可擴展性或高效的編輯速度, 都讓一般的編輯器難以望其項背, 也因此有了編輯器之神的封號! 不過 GNU 計劃的創始人 RMS 說它比較像魔鬼的編輯器 (因為 vi-vi-vi 是獸名數目 XD )
關於 Vim 的詳細使用方法請查詢官方文件, 這裡只介紹我自己常用的一些操作。
環境設定
- ~/.vimrc 環境設定檔
- ~/.vim Vim 專屬的資料夾
符號定義
為方便之後的說明,先在此定義兩個按鍵符號
C表示 CtrlM表示 Alt
常用模式
- command mode 按
Esc - insert mode 在 command mode 中,按
i或a - plain visual mode 在 command mode 中,按
v - block visual mode 在 command mode 中,按
C+v - command line 在 command mode 中,按
:
存取檔案
vi file_name開啟檔案:w存檔:q離開:q!強制離開(不須先存檔):e file_name編輯其它檔案
字元操作
i在游標所在處開始輸入a從下個字元開始輸入x刪除一個字元o插入空白行並開始輸入
字元操作
dw刪除一個單字dW刪除一個單字(忽略特殊字元)
拷貝和貼上
yy拷貝游標所在的那一行3yy拷貝連續三行dd剪下游標所在的那一行3dd剪下連續三行y將標記區域 yank 到剪貼簿p將剪貼簿的資料貼上
段落操作
J連接下一行d$從游標所在刪除到本行結尾d^從游標所在刪除到本行開頭D從游標所在刪除到本行結尾
暫存區操作
ma"cy'a將選擇區段拷貝到 register c"cp將 register c 的資料貼上ma"+y'a選擇區塊並拷貝到系統的剪貼板3"+yy將連續三行 yank 到系統的剪貼板:%y+將檔案內容 yank 到剪貼板
移動游標
gg第一行開頭G最後一行的開頭^移到游標所在行的開頭$移到游標所在行的結尾C+f下一頁C+b上一頁M+f往後移到一個單字M+b往前移到一個單字M+F往後移到一個單字並且標記M+b往前移到一個單字並且標記
切換目錄
:cd %:h將工作目錄改變到編輯的檔案下:lcd %:h僅將目前視窗的工作目錄改變到編輯的檔案下autocmd BufEnter * silent! lcd %:p:h自動改變工作目錄到編輯的檔案下
切換檔案
gf跳到關聯檔 ( goto file )C+^回到上一個檔案
分頁操作
:tab_new新分頁:tabprevious上一個分頁:tabnext下一個分頁:ab tn tab_new將 tab_new 縮寫為 tn
視窗操作
:vs垂直分割:sp水平分割C+wv垂直分割-
C+ws水平分割 -
C+wleft[right] arrow左[右]切換視窗 C+wup[down] arrow上[下]切換視窗C+wh[l]左[右]切換視窗C+wk[j]上[下]切換視窗
其他操作
u: 回到上一步-
C+r: 回到下一步 -
:set nu顯示行數 :set nonu不顯示行數:syntax enable語法顏色-
:set ai自動縮行 -
:!外部命令執行外部命令,例如:!ls -
C+r%在 insert mode 下貼上檔案路徑
自定按鍵
map <C-k> :tabprevious <CR>用C+k映射:tabpreviewmap <C-j> :tabnext <CR>用C+j映射:tabnext
好用的 plugins
rails.vim: Rails 套件(語法顏色,快速切換檔案... 等)
-
:Rcd 目錄切換目錄(從專案目錄出發) -
:Rmodel 檔案編輯 model 檔案 -
:Rview 檔案編輯 view 檔案 -
:Rcontroller 檔案編輯 controller 檔案
snipMate: 加入程式片段
Tab加入程式片段
ctrp: 模糊搜尋
C+p啟動模糊搜尋
fencview.vim: 自動偵測多國編碼
:FencAutoDetect啟動偵測
nerdtree.vim: 檔案瀏覽器
:e .瀏覽工作目錄
supertab.vmb: 補全程式碼
Tab補全程式碼
雖然 Vim 對初學者而言需要投入多一些的時間來熟悉, 但只要上手後, 就會大幅提升你的編程效率。
comments powered by Disqus