VIM的初步認識
不是很瞭解VIM的可以先去看看這篇文章Linux字符界面與VI編輯器
你會發現VIM和VI只差了一個M字,是否它們兩者有什麼關係?對的你們有猜錯,它對 Vi 作了 許多 增強: 多層撤銷, 多窗口, 多緩衝區(buffer), 高亮度語法顯示, 命令行編輯, 文件名匹配, 在線幫助, 可視選定, 等等. 用 “:help vi_diff.txt” 看 Vim 和 Vi 的差別 的 摘要(以上這句話摘自CentOS7 VIM幫助文檔,查看這個文檔可以在終端界面下輸入$ man vim進行查看,要是不知道終端是什麼,請查看上面那篇文章)。
VIM的四種模式與VI的三種模式
實際上VIM的模式與VI的模式是一樣的,不過VIM比VI多了一種可視模式。不過我個人覺得VI的三種模式比VIM的四種模式在命名更形象一些,所以接下來的文章使用了VI的模式名稱。
- VI的三種模式
- 指令模式:輸入指令以及移動光標時使用
- 文本輸入模式:對文本內容進行編輯
- 末行模式 :文字編輯輔助功能,比如字符串修改,替代,保存文件等。
- VIM的四種模式
- 正常模式:等價於VI的指令模式
- 文本輸入模式:等價於VI的文本輸入模式
- 命令模式:等價於VI的末行模式
- 可視模式:這是VIM比VI多出來的一種模式,正常模式下輸入v進入可視模式,然後移動光標,光標選中的區域會高亮,最後用操作命令對選中的區域進行操作。
VIM常用指令(新手推薦在字符界面下使用$ vimtutor指令,該指令是VIM文本編輯器的教程,幫助快速上手VIM。)
注意:本文編寫時沒有注意中英文的切換,可能存在中文字母、字符,不建議Ctrl C,Ctrl V。)
- VIM進入和退出
- vim(字符界面):打開VIM文本編輯器
- vim 文件名(字符界面):若存在該文件,則打開該文件,若不存在,則創建該文件(注意,創建的文件是先保存在緩存中,編輯完成後輸入保存指令,纔會保存在磁盤中)
- :q!:不保存文本,強制退出VIM程序
- :wq:保存修改並退出
- :wq a.txt:保存文件,文件名爲a.txt
- :w 文件名:文件另存爲
- 移動指令
- h:光標左移一位
- l:光標右移一位
- j:光標向下移動一行
- k:光標向上移動一行
- w:從當前光標當前位置直到下一個單詞起始處,不包括它的第一個字符
- e:從當前光標當前位置直到單詞末尾,包括最後一個字符
- 0:光標返回行首
- Page Up:向上翻頁
- Page Down:向下翻頁
- ctrl f : 向下翻頁
- ctrl b : 向上翻頁
文本編輯指令
- 文本插入指令
- i:在光標前插入文本,指令模式下輸入i會進入文本輸入模式
- I:與i一樣
- A:在光標所在行的末尾插入內容,指令模式下輸入A會進入文本輸入模式
- a:在光標後插入文本,指令模式下輸入a會進入文本輸入模式
- o:在光標所在行的下方插入一行,指令模式下輸入o會進入文本輸入模式
- O:在光標所在行的上方插入一行,指令模式下輸入O會進入文本輸入模式
- 文本刪除指令
- x:刪除光標位置的字符
- d motion:刪除操作符d,需要配合動作(motion)一起使用,下面試動作,使用方法例如:dw、de
- w:從當前光標當前位置直到下一個單詞起始處,不包括它的第一個字符
- e:從當前光標當前位置直到單詞末尾,包括最後一個字符
- $:從當前光標當前位置直到當前行末
- dd:刪除整行
- 撤銷類指令
- u:撤銷上一次的操作
- U:撤銷對整行的操作
- Ctrl+R :撤銷掉撤銷命令
- 置換類指令
- p:將最後一次刪除的內容置入光標之後
- r+字符:將光標當前位置的字符,用新輸入的字符去替換
- R :指令模式下輸入R,進入替換模式,可以連續替換多個字符,直到ESC退出該模式
- 更改類指令c(與刪除類操作符d一樣,語法c motion(動作))
- cw:從光標開始,改變文本直到一個單詞的末尾(我練習的時候體會不出cw和ce的區別,望知道的朋友告知一下)
- ce:從光標開始,改變文本直到一個單詞的末尾
- c$:從光標開始,改變文本直到該行末尾
- 替換指令(末行模式)
- :s/old/new:替換所在行第一個匹配串,第一個old被new替換
- :s/old/new/g:替換全行的匹配串,全行的old被new替換
- :#,#s/old/new:其中 #,# 代表的是替換操作的若干行中首尾兩行的行號。
- :%s/old/new/g:替換整個文件中所有匹配串
- :%s/old/new/gc:找到全文所有的匹配串,並逐一詢問是否替換
- 使用計數指定動作(所有動作指令前都可指定數字,表示該動作執行的次數)
- 簡單的例如h、l、j、k操作前加數字。2h-光標左移兩位。2j-光標下移兩行
- d number motion:如d2e,刪除從光標開始到單詞末尾,該操作執行兩次
- c number motion:如c2e,更改從光標開始到單詞末尾,該操作執行兩次
- 定位及文件狀態
- Ctrl+g:顯示文件名以及光標的位置
- G:光標跳轉到文件最後一行
- gg:光標跳轉到文件第一行
- 行數 + G:光標跳轉到輸入的行數
- 搜索類命令
- /(命令模式下) +需要搜索的字符:如/error,正向搜索error字符
- ?+需要搜索的字符:逆向搜索字符
- n:下一個相同的字符
- N:上一個相同的字符
- :set ic(Ingore Case):設置搜索時忽略大小寫選項
- :set noic:設置搜索時禁用忽略大小寫選項
- :set hls(hlsearch):設置所有匹配項高亮選項
- :set nohls:關閉所有匹配項高亮
- :set is(incsearch):輸入/指令後,輸入字符直接匹配內容(邊輸字符邊查找)
- :set nois:輸入/指令,並且輸入字符按下回車鍵後才匹配字符(輸入完畢後再查找)
- Ctrl+o:光標回退到之前的位置
- Ctrl+i:光標跳轉到較新的位置
- %:用來查找相配對的括號,需要將光標停留在括號上,例如光標在(上,輸入%,光標會自動跳到與之相對應的)上
- 在VIM內調用外部命令的方法(末行模式下)
- :!+外部命令:例如:! ls,列舉當前目錄
- 提取和合並文件
- :r 文件名:例如r a.txt,在當前文本光標後插入a.txt文本的內容
- :r ! 外部命令:例如 :r ! ls,在光標後插入外部命令返回的結果
- 可視模式的命令(指令模式下輸入v進入可視模式)
- 截取部分內容保存到另一個文件中
- 按 v 鍵進入可視模式,移動光標。您會注意到光標之間的文本被高亮了。
- 然後按 : 字符。您將看到屏幕底部會出現 :’<,’> 。
- 現在請輸入 w TEST,其中 TEST 是一個未被使用的文件名。確認您看到了:’<,’>w TEST 之後按 <回車> 鍵。
- 這時 Vim 會把選中的行寫入到以 TEST 命名的文件中去。使用 :!dir 或 :!ls確認文件被正確保存。
- 複製粘貼文本
- 指令模式下輸入v進入可視模式
- 移動光標,使得需要複製的內容高亮
- 輸入y,複製選中內容
- 移動光標到需要粘貼的位置,輸入p粘貼
- 截取部分內容保存到另一個文件中
啓用VIM特性
Vim 的功能特性要比 Vi 多得多,但其中大部分都沒有缺省啓用。爲了使用更多的
特性,您得創建一個 vimrc 文件。- 開始編輯 vimrc 文件,具體命令取決於您所使用的操作系統:
:edit ~/.vimrc 這是 Unix 系統所使用的命令
:edit $VIM/_vimrc 這是 MS-Windows 系統所使用的命令 - 接着讀取 vimrc 示例文件的內容:
:r $VIMRUNTIME/vimrc_example.vim - 保存文件,命令爲:
:write
下次您啓動 Vim 時,編輯器就會有了語法高亮的功能。
您可以把您喜歡的各種設置添加到這個 vimrc 文件中。
要了解更多信息請輸入 :help vimrc-intro- 開始編輯 vimrc 文件,具體命令取決於您所使用的操作系統:
- VIM補全功能
- 指令模式下輸入:e(不要按回車)
- Ctrl+d,顯示所有以e開頭的選項
- Tab切換選項
- VIM幫助
- :help:幫助命令
- F1:幫助