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 插入日期