Vim 刪除和修改文本篇


建立時間: 2024年9月16日 08:27
更新時間: 2024年10月21日 08:34

說明

本篇主要分享刪除和修改文字的命令。

刪除文本

["x]x

刪除 [count] 個遊標之下和之後的字元 [到暫存器 x 裡]。和 dl 相同。


["x]X

刪除 [count] 個遊標之前的字元 [到暫存器 x 裡]。和 dh 相同。


["x]d{motion}

刪除 {motion} 動作跨越的文字 [到暫存器 x 裡]。


["x]dd

刪除 [count] 行 [到暫存器 x 裡]。


["x]D

刪除遊標所在的字元到行尾及其後的 [count]-1 行 [到暫存器 x 裡]。

d$ 同義。


J

連接 [count] 行,但至少包含兩行。

刪除縮進,插入不多於兩個的空格。

在緩衝區末行此操作會失敗。

[count] 如果過多,會自行縮減至餘下可用的行。


{Visual}J

連接高亮行,但至少包含兩行。刪除縮進,插入不多於兩個的空格。


gJ

連接 [count] 行,但至少包含兩行。不插入或刪除任何空格。


{Visual}gJ

連接高亮行,但至少包含兩行。不插入或刪除任何空格。


:[range]j[oin][!] [flags]

連接 [range] 範圍的行。和 J 相同,但如有 [!] 時,連接不會插入或刪除任何空格。

如果 [range] 包括相同的開始和結束行,則該指令不做任何事。

預設行為是連接當前行與下一行。


刪除並插入

R

進入替換模式: 每個輸入的字元替代一個現有的字元,從遊標所在的位置開始。重複替換輸入的文字 [count] - 1 次。


["x]c{motion}

{motion} 跨過的文字刪除 [到暫存器 x 裡] 並開始插入。


["x]cc

刪除 [count] 行 [到暫存器 x 裡] 並開始插入。


["x]C

從目前遊標位置刪除到行尾,再刪除 [count]-1 行 [到暫存器 x 裡],並開始插入。和 c$ 等價。


["x]s

刪除 [count] 個字元 [到暫存器 x 裡],並開始插入。


["x]S

刪除 [count] 行 [到暫存器 x 裡] 並開始插入。和 cc 等價。


備註

  • 你可以用 <Esc> 退出插入和替換模式。
  • {motion} 可以參考 Vim 移動篇

簡單修改

r{char}

把遊標下的字元換成 {char}


~

切換遊標下字元的大小寫,並把遊標向右移。如果給出 [count],應用在那麼多數目的字元上。


g~{motion}

切換 {motion} 跨越的文字的大小寫。


g~g~
g~~

切換目前行的大小寫。


gU{motion}

使 {motion} 跨越的文字成為大寫。


gUgU
gUU

使得當前行成為大寫。


gu{motion}

使 {motion} 跨越的文字成為小寫。


gugu
guu

使得當前行成為小寫。


複雜修改

!{motion}{filter}

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


!!{filter}

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


{Visual}!{filter}

用外部程序 {filter} 過濾高亮行。


:{range}![!]{filter} [!][arg]

用外部程序 {filter} 過濾 {range} 指定的多行。

Vim 把可選的驚嘆號替換成最後一次使用的命令,並附加上可選的參數 [arg]


遞增與遞減

CTRL-A

把目前遊標之上或之後的數值或字母加上 [count]


CTRL-X

把目前遊標之上或之後的數值或字母減去 [count]


將文本左移或右移

<{motion}

{motion} 跨越的多行左移 shiftwidth 列。


<<

[count] 行左移 shiftwidth 列。


{Visual}[count]<

將高亮行左移 [count]shiftwidth 列。


>{motion}

{motion} 跨越的多行右移 shiftwidth 列。


>>

[count] 行右移 shiftwidth 列。


{Visual}[count]>

將高亮行右移 [count]shiftwidth 列。


複製並移動文本

["x]y{motion}

抽出 {motion} 跨越的文本 [到暫存器 x]。


["x]yy

抽出 [count] 行 [到暫存器 x]。


["x]Y

抽出 [count] 行 [到暫存器 x] (同 yy)。


["x]p

[從暫存器 x] 放置文字在遊標之後 [count] 次。


["x]P

[從暫存器 x] 放置文字在遊標之前 [count] 次。


["x]gp

如同 p,但遊標停留在新文字之後,類似 pl


["x]gP

如同 P,但遊標停留在新文字之後,類似 Pl


["x]]p
["x]]<MiddleMouse>

類似 p,但調整目前行的縮排。


["x][P
["x]]P
["x][p
["x][<MiddleMouse>

類似 P,但調整目前行的縮排。


備註

  1. 抽出類似於複製,放置類似於貼上。

文本排版

gq{motion}

{motion} 動作跨越的行進行排版。


gqgq
gqq

排版目前行。如帶計數排版對應多行。


觀看次數: 91
changedeletevim刪除修改
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

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

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