Vim 普通模式 好用指令 筆記


建立時間: 2023年4月14日 21:14
更新時間: 2024年4月17日 08:57

說明

將我所學到好用的普通模式指令寫在這篇文章中,但有些普通模式指令會寫在其他 Vim 的文章,每篇文章都會有一個主題,有興趣的讀者可以多關注 Enjoy 軟體分享的文章。

本篇會陸續更新,敬請期待。

備註

  • [count]: 通常用來指定操作指令的次數,例如: 2dd 刪除2行,可填可不填。
  • {char}: 任意字元。
  • {motion}: 參考 Vim 移動篇 motion 說明。
  • ["x]: 可自訂暫存器,也可忽略使用默認的暫存器,關於暫存器請參考 Vim 暫存器

修改文字

指令 動作
<{motion} {motion} 跨越的行左移 shiftwidth 列。
>{motion} {motion} 跨越的行右移 shiftwidth 列。
CTRL-A 把當前游標之上或之後的數值或者字母加上 [count]
CTRL-G 顯示當前文件名、光標位置和文件狀態。
CTRL-R 重做 [count] 次被撤銷的更改。
CTRL-X 把當前游標之上或之後的數值或者字母減去 [count]
J 連接 [count] 行,但至少包含兩行。
U 撤銷最近對特定行所作的一系列更改,也就是最近作改變的那行。
["x]D 刪除游標下的字元到行尾及其後的 [count]-1 行 [到暫存器 x 裡]。
["x]P 貼上複製的內容 [從暫存器 x] 在游標之前 [count] 次。
["x]X 刪除 [count] 個游標之前的字元 [到暫存器 x 裡]。
["x]Y 抽出 [count] 行 [到暫存器 x] (同 yy 動作)。
["x]d{motion} 刪除 {motion},儲存 [到暫存器 x 裡]。
["x]p 貼上複製的內容 [從暫存器 x] 在游標之後 [count] 次。
["x]x 刪除 [count] 個游標之下的字元 [到暫存器 x 裡]。
["x]y{motion} 抽出 {motion} 跨越的文本 [到暫存器 x]。
gU{motion} 使 {motion} 跨越的文字成為大寫。
gi 在當前緩衝區最近一次插入模式停止的位置繼續插入文本。
gq{motion} {motion} 動作跨越的行進行排版。
r{char} 把游標下的字元換成 {char}
u 撤銷 [count] 次更改。
~ 切換大小寫。

!{motion}{filter}
用外部程式 {filter} 過濾 {motion} 跨越的多行。

範例:

!)sort
從游標處到下一個段落進行排序。

查看幫助文件 :help !


!!{filter}
用外部程式 {filter} 過濾 [count] 行。

範例:

5!!sort
從游標處開始算起5行進行排序,同 :.,.+4!sort

查看幫助文件 :help !!


動作和運算子

動作命令出現在運算子之後,從而使運算子作用於被該動作所跨越的文字之上。也就是,在動作之前和之後的遊標位置之間的文字。一般的運算子用來刪除或改變文字。

下面列出所有的運算子:

命令 說明
c 修改 (change)
d 刪除 (delete)
y 抽出 (yank) 到暫存器 (不改變文字)
~ 變換大小寫 (只有當 tildeop 置位時有效)
g~ 變換大小寫
gu 變成小寫
gU 變成大寫
! 透過外部程序過濾
= 透過 equalprg (若為空,C-indenting) 過濾
gq 文字排版
gw 文字排版,不移動遊標
g? ROT13 編碼
> 右移
< 左移
zf 定義折疊
g@ 呼叫 operatorfunc 選項定義的函數

動作次數相乘

如果動作包含一個次數而運算子之前也有一個的話,兩者相乘。因此,2d3w 刪除六個單字。

其他

指令 動作
CTRL-L 刷新本地或遠程目錄列表。
ZQ 退出,不檢查是否發生了修改 (同:q!)。
ZZ 儲存並退出
觀看次數: 609
commandmodenormalvim普通普通模式模式指令

相關文章:

按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!