Emacs 說, 我只要一個編輯器,你卻給了我一個作業系統。 它是屬於駭客的編輯器。我沒能力將Emacs 折騰成一個作業系統,那就要一個純粹的編輯器吧。
以下是 VIM 編輯器的常用命令:
插入模式: 就是文本插入, 即最為熟悉的那種可見即可得的編輯狀態。 按下 i, a , o, shift+o 均可進入插入模式。 因為這個最易於接受,故將其放在最先。如果你對命令比較生疏,可以先用插入模式適應下,再學習各種命令逐步增強編輯能力。
“正常”模式 : 按下ESC鍵後進入“正常”模式,其實一點都不“正常”,更準確地說,應該是“命令控制模式” ,因為在這個模式下你輸入命令,然後編輯器作出恰當反應,就像按下 組合修飾鍵一樣。 VIM 啟動進入時預設是該模式。 以下命令均必須在該模式下才會生效。 鍵入命令時, VIM 會在編輯器的最下面一行顯示你所鍵入的命令。
num-cmd-object : VIM命令模式, 表示對對象object 執行命令 cmd 有 num 次。 比如 3j 表示向下移三行。 非常強大!
j 移至下一行 ; k 移至上一行; h 前一個字元位置 ; l 後一個字元位置。
x 刪除游標所在位置的單個字母 ; dw 刪除游標所在位置的單個單詞; d$ 刪除從游標所在位置到該行末的全部字元; dd 刪除游標所在的整行。
p 插入上一次刪除的內容。 與 dd 連用, 通常可起到 剪下/粘貼 的作用; u 撤銷上次操作;
r 替換模式,按下r 之後輸入的字元將替換游標所在位置的單個字母 ; Shift+r : 按下 shift+r 之後輸入的字元將直接覆蓋游標所在的字元,可連續替換。
cw: 先刪除單詞,然後進入插入模式。
ctrl+g 在編輯器最下面顯示光線標所在的行資訊; num + shift+g 跳轉至指定行 num 。 【定位】
搜尋字串: /要搜尋的字串; 要繼續搜尋按 n , 反方向搜尋按 shift+n 【搜尋/替換】
替換字串: :s/oldstr/newstr 替換第一個匹配; :s/oldstr/newstr/ 替換所有匹配;
:#1,#2s/old/new/g 替換行#1與#2之間的所有匹配 ; :%s 在文本內進行替換
在括弧(),[],{} 處按 % 可跳轉至配對的括弧, 按兩次回到原括弧;
:q 編輯檔案時不儲存就退出,會有警告資訊; :w 將內容寫入檔案,相當於儲存。 :wq 儲存檔案內容並退出。 【檔案操作】
:w filename 將檔案內容寫入檔案 filename ,相當於另存新檔; :#1,#2 w filename 將正在編輯的檔案的行#1與#2之間的內容寫入檔案 filename 中;
:r filename 在游標處插入 filename 的內容 ; :open filename 開啟指定檔案 filename
:!外部命令名 : 調用外部命令, 比如 :!ls ;
o : 在游標所在行的下面插入一行,並進入插入模式; shift+o : 在游標所在行的上面插入一行並進入插入模式。
a : 在游標所在出的下一個位置進入插入模式; A : 在游標所在行的行末進入插入模式。
:set ic 尋找/替換忽略大小寫; :set hls is 高亮顯示尋找結果; :set xxx 設定 xxx 選項。
快速移動:
num + [jklh] : 比如 10j 向下移動10行; 0 : 移動至行首 ; $ : 移動至行末;
num + f + 字元: 向後移動到第 num 個指定字元處; 比如游標在行首,要移動到本行最後一個m 處, 只需要鍵入 4fm 即可。
num + F + 字元: 向前移動到第 num 個指定字元處。 比如游標在行末,要移動到行首的 m 處,只需要鍵入 4Fm 即可。
w : 移到下一單詞首; b 回到上一單詞首; e 移到下一單詞尾; ge 移到上一單詞尾。
代碼塊縮排:
ESC [進入普通模式] -> shift + v [進入可視模式] -> j,k 移動游標選擇代碼區塊範圍 -> > 右縮排, < 左縮排
可視模式: 用途之一,就是選擇大量文字區塊,可用於複製/粘貼功能中。
文本內剪貼/粘貼: ESC ---> shift+v ---> j,k 移動游標選擇文字區塊 ---> d (完成剪下功能) --> 游標移動到要插入的位置(不可有其它刪除操作) --- > p
文本外剪下/粘貼: ESC ---> shift+v ---> j,k 移動游標選擇文字區塊 ---> w tmp (寫入檔案 tmp) ---> 轉到要插入的檔案的位置 ---> :r tmp
VIM 設定: 修改Vim根目錄下的設定檔 Vim/_vimrc
# 代碼編寫
set number
set nobackup
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set showmatch
set ruler
## 解決中文亂碼
set encoding=utf-8
set incsearchg=utf-8
set termencoding=utf-8
set fileencoding=chinese
set fileencodings=ucs-bom,utf-8,chinese
set langmenu=zh_CN.utf-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_cn.utf-8
language messages zh_cn.utf-8
小結:
VIM 編輯器的強大之處,在於其豐富的命令,可以控制編輯器作出各種反應。當然,需要對命令非常熟悉並且能靈活組合運用。 其實也並不像傳說中那麼困難。如果預設啟動模式是插入模式,也許會更易於接受。繼續學習中……