vim是vi的升級版,最常見的區別是能用多種顏色顯示顯示系統檔案的一些特殊資訊。
vi: Visual Interface 文字編輯器,視覺化介面
vim:vi iMproved的縮寫,即vi的增強版
vim編輯器分為三種主要模式:
命令模式(編輯模式):預設模式,移動游標,剪下/貼上文字(介面表現:左下角顯示檔名或為空)
插入模式(輸入模式):修改文字(介面表現:左下角顯示—INSERT–)插入模式下,按ESC按鍵返回命令模式
末行模式(擴充套件模式):儲存、退出等(介面表現:左下角顯示—VISUAL–)末行模式下連續按兩次ESC按鍵返回末行模式
Esc建:退出當前模式
Esc建Esc建:總是返回到命令模式
用vim開啟檔案用法:
例如:【vim abc。txt】作用:開啟abc。txt檔案
例如:【vim +# abc。txt】作用:開啟abc。txt檔案,游標定位在abc。txt檔案的第#行
例如:【vim + abc。txt】作用:開啟abc。txt檔案,游標定位在最後一行
例如:【vim +/PATTERN abc。txt】作用:開啟abc。txt檔案,定位第一次被PATTERN(模式)匹配到的行的行首
模式之間的切換
注意:vim開啟檔案後,預設進入的模式為:命令模式:
命令模式下進入插入模式(輸入模式)輸入:【i】或者【o】或者【a】等
命令模式下進入末行模式(擴充套件模式)輸入:【:】
使用vim編輯多個檔案
【vim FILE1 FILE2 FILE3】可以同時編輯FILE1 FILE2 FILE3這三個檔案
【:next】切換至下一個檔案
【:prev】切換至前一個檔案
【:last】切換至最後一個檔案
【:first】切換至第一個檔案
vim的命令模式(編輯模式)常用快捷鍵
1) 模式轉換
a) 【i】:在當前游標所在字元的前面,轉為輸入模式
b) 【a】:在當前游標所在字元的後面,轉換為輸入模式
c) 【o】:在當前游標所在行的下方,新建一行,並轉換為輸入模式:
d) 【I】:在當前游標所在行的行首,轉換為輸入模式
e) 【A】:在當前游標所在行的行尾,轉換為輸入模式
f) 【O】:在當前游標所在行的上方,新建一行,並轉換為輸入模式;
g) 【cc】刪除當前行並輸入新內容,相當於S。擴充套件【#cc】
h) 【C】刪除當前游標到行尾,並切換成插入模式
改變命令
【c】修改後切換成插入模式
命令模式–>插入模式
【c^】刪除游標處到行首的字元,並進入插入模式
【c$】刪除游標處到行尾的字元,並進入插入模式
【c0】(c零)刪除游標處到當前行首的第一非空字元,並進入插入模式
【cb】刪除當前第一個單詞,並進入插入模式
【ce】刪除下一個單詞,並進入插入模式
【cw】刪除游標處到單詞詞尾,並進入插入模式
2) 逐字元移動
a) 【h】向左
b) 【l】向右(小寫的L)
c) 【j】向上
d) 【k】向下
e) 【#COMMAND】移動#個字元
例如: 【#h】向左移動#個字元
【#l】向右移動#個字元
【#j】向上移動#個字元(相當於向上移動#行)
【#k】向下移動#個字元(相當於向下移動#行)
3) 當前頁跳轉
a) 【H】:當前頁的頁首
b) 【M】:當前頁的中間行
c) 【L】當前頁的頁底
4) 以單詞為單位移動
a) 【w】移動至下一個單詞的詞首
b) 【e】跳至當前或下一個單詞的詞尾
c) 【b】跳至當前或前一個單詞的詞首
d) 【#COMMAND】跳到第#個單詞
例如: 【#w】跳轉到第#個單詞的詞首
【#e】向下跳轉到第#個單詞的詞尾
【#b】向上跳轉到第#個單詞的詞首
5) 行內跳轉
a) 【0】(零) :絕對行首,游標移動到當前行的行首
b) 【^】游標移動到當前行首的第一個非空白字元
c) 【&】游標移動到當前行的行尾
6) 行間跳轉(相當於上下跳轉)
a) 【G】跳轉到最後一行(整個文件的最後一行)
b) 【gg或者1G】跳轉到文件的第一行
c) 【#G】跳轉到第#行(文件最上為第一行)
注意:想要跳轉到最後一行可以輸入【0G】也是最後一行
7) 句間移動
a) 【)】下一句
b) 【(】上一句
8) 段落間移動
a) 【}】下一段
b) 【{】上一段
9) 常用快捷鍵滾動
a) 【Ctrl + e】向下滾動一行
b) 【Ctrl + y】向上滾動一行
c) 【Ctrl + d】向下滾動半屏
d) 【Ctrl + u】向上滾動半屏
e) 【Ctrl + f】向下滾動一屏
f) 【Ctrl + b】向上滾動一屏
10) 字元編輯
【x】刪除游標處的字元
【#x】刪除從游標處開始向後#個字元
【xp】游標所在處的字元和游標後面的字元對調位置
【~】轉換大小寫
【J】刪除當前行後的換行符
11) 替換命令(r,replace)
【r】替換游標所在字元
【R】切換成REPLACE模式
12) 刪除命令(剪下命令)
注意:d命令刪除的字元會預設複製到剪貼簿
a) 【d】刪除命令,可以結合游標跳轉字元,實現範圍刪除
b) 【d$】刪除到行尾
c) 【d^】刪除到非空行首
d) 【d0】刪除到行首
e) 【dd】刪除游標所在行
f) 【#dd】多行刪除
g) 【D】從當前游標位置一直刪除到行尾,留空行,等同於【d$】
h) 【de】
i) 【dw】
j) 【db】
k) 【#COMMAND】
l) 【Shift + j】刪除兩行質檢的空行,實際上是合併兩行
插入模式(輸入模式下的剪下)
正常模式(預設模式)下按v(逐字)或V(逐行)進入可視模式,然後用【j】【k】【l】【h】命令移動即可選擇某些行或字元,再按d即可剪下
13) 複製命令(y,yank)
a) 【y】複製,可以結合游標跳轉字元,實現範圍複製(行為與d有類似之處)
b) 【y$】複製到行尾
c) 【y^】複製到非空行首
d) 【y0】複製到行首
e) 【yy】複製當前行
f) 【#yy】複製多行
g) 【Y】整行復制
h) 【ye】
i) 【yw】
j) 【yb】
k) 【#COMMAND】
14) 貼上命令(p,paste)
a) 【p】緩衝區存的如果為整行,則貼上當前游標所在行的下方,否則貼上至當前游標所在處的後面
b) 【P】緩衝區存的如果為整行,則貼上當前游標所在行的上方,否則貼上至當前游標所在處的前面
15) 撤銷更改
a) 【u】撤銷最近的更改
b) 【#u】撤銷之前多次更改
c) 【U】撤銷游標落在這行後所有此行的更改
d) 【按Ctrl + r】重做最後的“撤銷”更改(相當於取消撤銷)
e) 【。】重做前一個操作
f) 【#】重複前一個操作#次
vim的末行模式(擴充套件模式)
命令模式下進入末行模式(擴充套件模式)輸入:【:】
退出命令
【:q】退出
【:x】儲存退出
【:wq】儲存並退出
【:q!】強制退出並或略所有更改
【:e!】放棄所有修改,並開啟原始檔
注意:在預設模式的退出方法
【ZZ】儲存並退出
【ZQ】不儲存退出
附加:
【:!COMMAND】執行COMMAND命令,和shell互動
【r!COMMAND】讀入命令的輸出
【r filename】讀取filename檔案內容到當前檔案中
【w filename】將當前檔案內容下入filename檔案中
地址定界(可以用於查詢和替換等)
語法:【:start_pos,end_pos】
例如:
【:#】具體第#行,例如2表示第2行
【#,#】從左側#表示起始行,到右側#表示結尾行
【#,+#】從左側#表示的起始行,加上右側#表示的行數
例如【:2,+3】表示2到5行
【。】表示當前行
【$】最後一行
【%】全文,相當於【1,$】
例如:【:。,$-1】表示當前行到倒數第二行
擴充套件命令模式:地址定界
注意:地址界定預設是從游標位置開始(即在預設模式進入命令模式時的游標位置)向下搜尋匹配(如果查到到檔案結尾,依舊沒找到,會從頭開始查詢)
【:/pat1/,/pat2/】從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
【:#,/pat/】從第#行開始,一直到第一次被pat匹配到的行結束
【:/pat/,$】從第一次被pat匹配到的行開始,一直到最後一行
地址界定後面可跟隨的編輯命令
【d】例如:【:/pat1/,/pat2/d】
表示,從游標位置開始向下匹配,第一次匹配到“pat1”的位置開始到第一次匹配到pat2結束是的末行,刪除末行。(注意:如果匹配結果是多行,只會刪除最後一行)
【y】例如:【:/pat1/,/pat2/y】
表示,從游標位置開始向下匹配,第一次匹配到“pat1”的位置到第一次匹配到“pat2”的位置直接,複製內容到剪貼簿。
【w file】將範圍內的行另存至指定檔案中。
例如:【:/pat1/,/pat2/w 。/abc。txt】
表示從游標位置開始向下匹配,第一次匹配到pat1的位置到第一次匹配到pat2的位置內容寫到當前目錄下的abc。txt檔案中。
【r file】在指定位置插入指定檔案中的所有內容。
例如:【:/pat1/,/pat2/r 。/abc。txt】
表示從游標位置開始向下匹配,第一次匹配到“pat1”的位置到第一次匹配到“pat2”的位置的行末插入abc。txt檔案內容
查詢並替換
【:/PATTERN】從當前游標所在處向檔案尾部查詢匹配“PATTERN”相同的內容。
【:?PATTERN】從當前游標所在處向檔案首部查詢匹配“PATTERN”相同內容
【n】與命令同方向
【N】與命令反方向
擴充套件命令模型:查詢並替換
【s】在擴充套件模式下完成查詢替換操作
格式:【s/要查詢的內容/替換為的內容/修飾符】
要查詢的內容:可以使用模式
替換為的內容:不能使用模式,單可以使用\1,\2等後向引用符號;還可以使用“&”引用前面查詢時查詢的整個內容
修飾符:
【i】忽略大小寫
【g】管局替換;預設情況下,每行只替換第一次出現
【gc】全域性替換,每次替換前詢問
注意:查詢替換中的分隔符【/】可用其他符號替代,例如【@】【#】等
如果需要對全文替換可以使用如下命令
【
:1,$s/^。*\(你好\)。*/\1/ig
】其中【1,$】為地址界定。
地址定界與查詢替換擴充套件模式結合使用
【:4,8s/^。*\(你好\)。*/\1/ig】這種為只替換第4行到第8行之間的內容,其中【4,8】表示4行到8行之間的內容
【:/par1/,/par2/s/^。*\(你好\)。*/\1/ig】這種為從第一次匹配到par1到第一次匹配par2之間的內容中間,
按照【s/^。*\(你好\)。*/\1/ig】命令進行匹配替換
幫助命令
【:help or F1】顯示整個幫助
【:help xxx】顯示xxx的幫助,比如:【:help I】【:help CTRL-[】即Ctrl+[的幫助
【:help ‘number’】Vim選項的幫助用單引號颳起
【:help 】特殊建的幫助用<>擴起
【:help –t】Vim啟動引數的幫助用-
【:help –i_】插入模式下Esc的幫助,某個模式下的幫助用(模式_主題)的模式
幫助檔案中位於||之間的內容是超連結,可以用Ctrl+]進入連結,Ctrl+o(Ctrl + t)返回
其他非編輯命令
【:。】重複前一次命令
【:set ruler?】檢視是否設定了ruler,在。vimrc中,使用set命令設定的選項都可以透過這個命令檢視
【:scriptnames】檢視vim指令碼檔案的位置,比如。vimrc檔案,語法檔案及plugin等
顯示非列印字元
【:set list】顯示非列印字元,比如tab,空格,行尾等。如果tab無法顯示,請確定用set lcs=tab:>-命令設定了。vimrc檔案,並確保你的檔案中的確有tab,如果開啟了expendtab,那麼tab將被擴充套件為空格。
【:set nolist】關閉非列印字元
行號:
【:set number】顯示行號或者【:set nu】
【:set nu】關閉行號顯示
大小寫
【:set ignorecase】忽略區分大小寫或者【:set ic】
【:set noignorecase】不忽略大小寫或者【:set noic】
設定自動縮排
【:set autoindent】設定自動縮排或者【:set ai】
【:set noai】取消制動縮排
查詢文字高亮顯示或取消
【:set hlsearch】設定高亮顯示
【:set nohlsearch】取消高亮顯示
語法高亮顯示
【:syntax on】開啟語法高亮顯示
【:synatx off】關閉語法高亮顯示
輔助保留格式
【:set paste】啟用複製保留格式
【:set noPaste】關閉複製保留格式
檔案格式
【:set fileforma=doc】啟用windows格式。或者【:set ff=doc】
【:set fileforma=unix】啟用unix格式。或者【:set ff=nuix】
設定文字寬度
【:set textwidth=65】啟用
【:set wrapmargin=15】禁用
設定游標所在行的標識線
【:set cursorline】或者【:set cul】啟用標識線
【:set no cursorline】或者【:set not cul】禁用標識線
【:set or】檢視set幫助或者【:set all】
vim視覺化模式
預設模式下輸入:
【v】按照字元選取,或者【ctrl + v】
【V】按矩形快選取
視覺化建可用於與移動建結合使用
【w】【)】【}】箭頭燈
突出顯示的文字可被刪除,複製,變更,過濾,搜尋,替換等
vim多視窗
語法:【vim –o|-O FILE1 FILE2 …】
【-o】水平分割顯示
【-O】垂直分割顯示
命令模式下輸入【:qa】關閉所有視窗
視窗間切換:Ctrl+w,Arrow
單檔案視窗分割:
【Ctrl+w,s】split,水平分割
【Ctrl+w,v】vertical,垂直分割
【Ctrl+w,q】取消相鄰視窗
【Ctrl+w,o】取消全部視窗
【:wqall】退出
vim配置檔案
【/etc/vimrc】vim的全域性配置檔案
【~/。vimrc】使用者的vim配置檔案
相關編輯器
文字:ASCII,Unicode
文字編輯器種類:
行編輯器:sed
全屏編輯器:nano,vi
vim-Vi Improved
其他編輯器:
gedit 一個簡單的圖形編輯器
gvim 一個Vim編輯器的圖形版本
幫助(vim ——help)
[root@gdy103 ~]# vim ——help
VIM - Vi IMproved 7。2 (2008 Aug 9, compiled Apr 5 2012 10:17:30)
用法: vim [引數] [檔案 。。] 編輯指定的檔案
或: vim [引數] - 從標準輸入(stdin)讀取文字
或: vim [引數] -t tag 編輯 tag 定義處的檔案
或: vim [引數] -q [errorfile] 編輯第一個出錯處的檔案
引數:
—— 在這以後只有檔名
-v Vi 模式 (同 “vi”)
-e Ex 模式 (同 “ex”)
-s 安靜(批處理)模式 (只能與 “ex” 一起使用)
-d Diff 模式 (同 “vimdiff”)
-y 容易模式 (同 “evim”,無模式)
-R 只讀模式 (同 “view”)
-Z 限制模式 (同 “rvim”)
-m 不可修改(寫入檔案)
-M 文字不可修改
-b 二進位制模式
-l Lisp 模式
-C 相容傳統的 Vi: ‘compatible’
-N 不完全相容傳統的 Vi: ‘nocompatible’
-V[N][fname] Be verbose [level N] [log messages to fname]
-D 除錯模式
-n 不使用交換檔案,只使用記憶體
-r 列出交換檔案並退出
-r (跟檔名) 恢復崩潰的會話
-L 同 -r
-A 以 Arabic 模式啟動
-H 以 Hebrew 模式啟動
-F 以 Farsi 模式啟動
-T
-u
——noplugin 不載入 plugin 指令碼
-P[N] 開啟 N 個標籤頁 (預設值: 每個檔案一個)
-o[N] 開啟 N 個視窗 (預設值: 每個檔案一個)
-O[N] 同 -o 但垂直分割
+ 啟動後跳到檔案末尾
+
——cmd
-c
-S
-s
-w
-W
-x 編輯加密的檔案
——startuptime
-i
-h 或 ——help 列印幫助(本資訊)並退出
——version 列印版本資訊並退出
[root@gdy103 ~]#