相信Vi是什麼就不用我多介紹了,這個工具從Unix誕生以來一直是終端下的標準編輯器。幾乎每一個Unix或類Unix操做系統都提供了Vi。Vim是Vi Improved的縮寫,功能比起Vi來講有了很大的擴展。這裏用的是Vi iMproved 6.3。編輯器
在Vi 中移動光標
k 上h l 左 右 j 下^ 移動到該行第一個非空格的字符處w 向前移動一個單詞,將符號或標點看成單詞處理W 向前移動一個單詞,不把符號或標點看成單詞處理b 向後移動一個單詞,把符號或標點看成單詞處理B 向後移動一個單詞,不把符號或標點看成單詞處理( 光標移至句首) 光標移至句尾{ 光標移至段落開頭} 光標移至段落結尾H 光標移至屏幕頂行M 光標移至屏幕中間行L 光標移至屏幕最後行 0 到行首$ 到行尾gg 到頁首G 到頁末行號+G 跳轉到指定行n+ 光標下移n行n- 光標上移n行 Ctrl+g 查詢當前行信息和當前文件信息fx 向右跳到本行字符x處(x能夠是任何字符)Fx 向左跳到本行字符x處(x能夠是任何字符)tx 和fx相同,區別是跳到字符x前Tx 和Fx相同,區別是跳到字符x後C-b 向上滾動一屏C-f 向下滾動一屏C-u 向上滾動半屏C-d 向下滾動半屏C-y 向上滾動一行C-e 向下滾動一行nz 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。進入和退出Vi命令
vi filename 打開或新建文件,並將光標置於第一行首vi +n filename 打開文件,並將光標置於第n行首vi + filename 打開文件,並將光標置於最後一行首vi +/pattern filename 打開文件,並將光標置於第一個與pattern匹配的串處vi -r filename 在上次正用vi編輯時發生系統崩潰,恢復filenamevi filename ... filename 打開多個文件,依次進行編輯 ZZ 退出vi並保存:q! 退出vi,不保存:wq 退出vi並保存重複操做
. 重複上一次操做自動補齊
C-n 匹配下一個關鍵字C-p 匹配上一個關鍵字插入
o 在光標下方新開一行並將光標置於新行行首,進入插入模式。O 同上,在光標上方。a 在光標以後進入插入模式。A 同上,在光標以前。R 進入替換模式,直到按下Escset xxx 設置XXX選項。行合併
J 把下面一行合併到本行後面Vi中查找及替換命令
/pattern 從光標開始處向文件尾搜索pattern?pattern 從光標開始處向文件首搜索patternn 在同一方向重複上一次搜索命令N 在反方向上重複上一次搜索命令% 查找配對的括號:s/p1/p2/g 將當前行中全部p1均用p2替代,若要每一個替換都向用戶詢問則應該用gc選項:n1,n2s/p1/p2/g 將第n1至n2行中全部p1均用p2替代:g/p1/s//p2/g 將文件中全部p1均用p2替換.*[]^%~$ 在Vi中具備特殊含義,若須要查找則應該加上轉義字符"\"查找的一些選項
設置高亮
:set hlsearch 設置高亮:set nohlsearch 關閉高亮:nohlsearch 關閉當前已經設置的高亮增量查找
:set incsearch 設置增量查找:set noincsearch 關閉增量查找在Vi中刪除
x 刪除當前光標下的字符dw 刪除光標以後的單詞剩餘部分。d$ 刪除光標以後的該行剩餘部分。dd 刪除當前行。c 功能和d相同,區別在於完成刪除操做後進入INSERT MODEcc 也是刪除當前行,而後進入INSERT MODE更改字符
rx 將當前光標下的字符更改成x(x爲任意字符) ~ 更改當前光標下的字符的大小寫 鍵盤宏操做
qcharacter 開始錄製宏,character爲a到z的任意字符q 終止錄製宏@character 調用先前錄製的宏恢復誤操做
u 撤銷最後執行的命令U 修正以前對該行的操做Ctrl+R Redo在Vi中操做Frame
c-w c-n 增長framec-w c-c 減小framec-w c-w 切換framec-w c-r 交換兩個frameVIM中的塊操做
Vim支持多達26個剪貼板工具
選塊 先用v,C-v,V選擇一塊,而後用y複製,再用p粘貼。 yy 複製當前整行 nyy 複製當前行開始的n行內容 ?nyy 將光標當前行及其下n行的內容保存到寄存器?中,其中?爲一個字母,n爲一個數字 ?nyw 將光標當前行及其下n個詞保存到寄存器?中,其中?爲一個字母,n爲一個數字 ?nyl 將光標當前行及其下n個字符保存到寄存器?中,其中?爲一個字母,n爲一個數字 ?p 將寄存器?中的內容粘貼到光標位置以後。若是?是用yy複製的完整行, 則粘貼在光標所在行下面。這裏?能夠是一個字母,也能夠是一個數字 ?P 將寄存器a中的內容粘貼到光標位置以前。若是?是用yy複製的完整行, 則粘貼在光標所在行上面。這裏?能夠是一個字母,也能夠是一個數字 ay[motion] ay$ 複製光標位置到行末並保存在寄存器a中 ayft 複製光標位置到當前行第一個字母t並保存在寄存器a中以上指令皆可去掉a工做,則y,p對未命名寄存器工做(全部d,c,x,y的對象都被保存在這裏)。spa
剪切/複製/粘貼
全部刪除的內容自動被保存,能夠用p鍵粘貼操作系統
Vi的選項設置
all 列出全部選項設置狀況term 設置終端類型ignorance 在搜索中忽略大小寫list 顯示製表位(Ctrl+I)和行尾標誌($)number 顯示行號report 顯示由面向行的命令修改過的數目terse 顯示簡短的警告信息warn 在轉到別的文件時若沒保存當前文件則顯示NO write信息nomagic 容許在搜索模式中,使用前面不帶「\」的特殊字符nowrapscan 禁止vi在搜索到達文件兩端時,又從另外一端開始mesg 容許vi顯示其餘用戶用write寫到本身終端上的信息tips
對代碼自動格式化 gg=G.net