vim不像很多編輯器那樣一啟動便可以直接編輯文本,需要在普通模式按下i, a等鍵才會進入插入模式進行文本編輯。
如何進入插入模式
以下的命令都會讓vim從普通模式切換到插入模式,但命令執行后的字符插入位置有所不同。
| 命令 | 執行后的字符插入位置 |
| i | 當前字符之前 |
| I | 當前行首第一個非空白字符之前 |
| a | 當前字符之后 |
| A | 當前行尾 |
| s | 刪除當前字符,光標停留在下一個字符處 |
| S | 刪除當前行,光標停留在行首 |
| o | 在當前行的下方插入一個新行,光標停在新行行首 |
| O | 在當前行的上方插入一個新行,光標停在新行行首 |
常用編輯操作
上一篇文章《vim】正常模式下的一般操作》已經提到過,vim中的很多操作都可以指定數量、范圍和方向等,編輯操作也不例外。為了簡潔,下表不會和上一篇一樣根據動作范圍不同分類(如單詞操作只給出w,不給出W,e,E,b,B等),而是只給出幾個經典操作,排列組合的舉例在下一小節介紹一些,具體的多種變化還是需要自己在實際使用中嘗試和練習。
| 類型 |
命令 | 說明 |
| 復制 | yw | 復制光標后的一個單詞 |
| yy | 復制當前行 | |
| <n>yy | 復制以下n行 | |
| yG | 復制當前行到文件末尾的內容 | |
| y%、ya{ | 光標放在{上,復制{}及其內部中的內容 | |
| 剪切/刪除 | x | 剪切當前字符,相當於dl |
| X | 剪切前一個字符,相當於dh | |
| dw、cw | 剪切光標后的一個單詞,d和c的區別是c會進入插入模式,下同 | |
| D、C | 剪切到行尾,相當於d$,c$ | |
| dd、cc | 剪切當前行 | |
| <n>dd、<n>cc | 剪切以下n行 | |
| dG | 剪切當前行到文件末尾的內容 | |
| J | 在上一行中任意位置按J,將會把下一行合並到這行末尾(Join) | |
| 粘貼 | p | 將剪切板中的內容粘貼到光標后 |
| P | 將剪切板中的內容粘貼到光標前 | |
| 替換 | r | 按下后,再輸入字符將替換當前字符 |
| R | 按下后,進入替換模式,將依次替換之后字符 | |
| 撤銷 | u | |
| 重做 | <Ctrl>+r | |
| 縮進 | >> | 當前行向右縮進 |
| << | 當前行向左縮進 | |
| <n>>> | 以下n行向右縮進 | |
| <n><< | 以下n行向左縮進 | |
| == | 自動調整當前行的縮進,使之與上下文 | |
| <n>== | 自動調整以下n行的縮進 | |
| gg=G | 自動調整文件所有行的縮進 | |
| 轉換大小寫 | ~ | 轉換當前字符的大小寫 |
| guw | 將光標后的單詞全部變為小寫 | |
| gUw | 將光標后的單詞全部變為大寫 | |
| guu | 將當前行全部變為小寫 | |
| gUU | 將當前行全部變為大寫 | |
| 塊注釋* | 注釋 | 假如要將第8行到第16行的內容用//注釋掉,步驟是 |
| 取消注釋 | 假如要將第8行到第16行用//注釋的內容取消注釋,步驟是 |
*其中塊注釋用到了可視模式的操作,這本應該在后面某篇中介紹的,但這個操作很重要,所以在這里介紹一下。取消注釋第3步中定位到第16行行首和向右移動選中//兩個操作,可以互換。
組合命令示例
y3w 復制光標后3個單詞
d2$ 剪切光標到下面第2行的末尾
>} 將當前行到下一個空行之間的內容向右縮進
=% 光標放在{或}上,執行后自動縮進{}中間的內容
3gUU 將以下3行全部變為大寫
dt<c> 在當前行內,刪除從光標處到后面第1個字符<c>的內容
不常用的編輯操作
. (小數點) 可以重復上一次的命令
<n><Command> 重復某個命令n次
:r!date 插入日期
