vim 批量替換字串 你真的會使用Vim?

2021-10-11 23:58:58 字數 4685 閱讀 5076

正常模式:

四種模式:

i插入模式

v可視模式

n正常模式

c命令模式

插入模式 i a o i a o

i進入插入模式

i進去插入模式並且游標到當前行開頭

a進去插入模式並且游標到當前游標的下一位

a進去插入模式並且游標到當前行的末尾

o進去插入模式並且游標到當前游標的下一行產生空行

o進入插入模式並且游標到當前行的上一行產生空行

r, r

進入取代模式(replace mode):

r 只會取代游標所在的那乙個字元一次;r會一直取代游標所在的文字,直到按下 esc 為止;

:表示末行模式

正常模式下,四個方向hjkl

h 左l 右

j 下k 上

如果你將右手放在鍵盤上的話,你會發現 hjkl 是排列在一起的,因此可以使用這四個按鈕來移動游標。 如果想要進行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵, 亦即加上想要進行的次數(數字)後,按下動作即可!

正常模式下,複製,貼上

yy 複製單行 p 貼上單行 3p 貼上3行

3yy 複製3行(當前行往下三行,包括當前行)

單行無提示,多行有提示

y$ 複製當前游標位置到這一行的結尾字元

dd 剪下一整行(5dd、dd、2dd分別為復剪下5行、當前行和2行)

d$ 剪下當前位置到這一行的結尾

x, x

在一行字當中,x 為向後刪除乙個字元 (相當於 [del] 按鍵), x 為向前刪除乙個字元(相當於 [backspace] 亦即是退格鍵) (常用)

nxn 為數字,連續向後刪除 n 個字元。舉例來說,我要連續刪除 10 個字元, 『10x』。

dd刪除游標所在的那一整行(常用)

nddn 為數字。刪除游標所在的向下 n 行,例如 20dd 則是刪除 20 行 (常用)

d1g刪除游標所在到第一行的所有資料

dg刪除游標所在到最後一行的所有資料

d$刪除游標所在處,到該行的最後乙個字元

d0那個是數字的 0 ,刪除游標所在處,到該行的最前面乙個字元

yy複製游標所在的那一行(常用)

nyyn 為數字。複製游標所在的向下 n 行,例如 20yy 則是複製 20 行(常用)

y1g複製游標所在行到第一行的所有資料

yg複製游標所在行到最後一行的所有資料

y0複製游標所在的那個字元到該行行首的所有資料

y$複製游標所在的那個字元到該行行尾的所有資料

p, p

p 為將已複製的資料在游標下一行貼上,p 則為貼在游標上一行! 舉例來說,我目前游標在第 20 行,且已經複製了 10 行資料。則按下 p 後, 那 10 行資料會貼在原本的 20 行之後,亦即由 21 行開始貼。但如果是按下 p 呢? 那麼原本的第 20 行會被推到變成 30 行。 (常用)

u 普通模式下,撤銷 ,多次u多次撤銷

ctrl +r 重做,返回上一次撤銷,相當於win的ctrl+y

j將游標所在行與下一行的資料結合成同一行

c重複刪除多個資料,例如向下刪除 10 行,[ 10cj ]

x 刪除指定字元,游標選中,按x

r+新字元 字元替換,游標選中按r 在輸入新字元

貼上到游標位置處之後小p 之前是大p

[ctrl] + [f]

螢幕『向下』移動一頁,相當於 [page down]按鍵 (常用)

[ctrl] + [b]

螢幕『向上』移動一頁,相當於 [page up] 按鍵 (常用)

[ctrl] + [d]

螢幕『向下』移動半頁

[ctrl] + [u]

螢幕『向上』移動半頁

+游標移動到非空格符的下一行

-游標移動到非空格符的上一行

n那個 n 表示『數字』,例如 20 。按下數字後再按空格鍵,游標會向右移動這一行的 n 個字元。例如 20 則游標會向後面移動 20 個字元距離。

nn 為數字。游標向下移動 n 行(常用)

g 移動到指定行

:set nu 檢視當前行

11g 移動到第11行

g 移動到第一行

g移動到最後一行

h游標移動到這個螢幕的最上方那一行的第乙個字元

m游標移動到這個螢幕的**那一行的第乙個字元

l游標移動到這個螢幕的最下方那一行的第乙個字元

^ 或0 或功能鍵[home]    這是數字『 0 』:移動到這一行的最前面字元處  

$ 或功能鍵[end]    移動到這一行的最後面字元處(常用)    

插入模式:

文字內容的輸入

命令模式命令:/末行模式

:主要進行檔案儲存、退出、查詢和替換

:w +檔名 儲存到指定檔名中,不接檔名表示儲存到原始檔案當中

:q 退出

:q! 強制退出

:wq! 強制寫入退出

zz這是大寫的 z 喔!如果修改過,儲存當前檔案,然後退出!效果等同於(儲存並退出)

zq不儲存,強制退出。效果等同於 :q!。

:w [filename]

將編輯的資料儲存成另乙個檔案(類似另存新檔)

:r [filename]

在編輯的資料中,讀入另乙個檔案的資料。亦即將 『filename』 這個檔案內容加到游標所在行後面

:n1,n2 w [filename]

將 n1 到 n2 的內容儲存成 filename 這個檔案。

:! +功能命令 如:! ipconfig ,表示臨時檢視命令 回車回到vim編輯模式

/word

向游標之下尋找乙個名稱為 word 的字串。例如要在檔案內搜尋 vbird 這個字元

串,就輸入 /vbird 即可! (常用)

?word

向游標之上尋找乙個字串名稱為 word 的字串。

n這個 n 是英文按鍵。代表重複前乙個搜尋的動作。舉例來說, 如果剛剛我們執行 /vbird 去向下搜尋 vbird 這個字串,則按下 n 後,會向下繼續搜尋下乙個名稱為 vbird 的字串。如果是執行 ?vbird 的話,那麼按下 n 則會向上繼續搜尋名稱為 vbird 的字串!

n這個 n 是英文按鍵。與 n 剛好相反,為『反向』進行前乙個搜尋動作。 例如 /vbird 後,按下 n 則表示『向上』搜尋 vbird 。

:s/old/new 替換字元,預設表示所在行範圍進行替換,整個檔案範圍替換使用:%s/old/new/g(g 表示全域性)

在指定範圍替換使用 :起始行,結束行s/old/new/g(多次替換加/g,單次則不需要)

:n1,n2s/word1/word2/g

n1 與 n2 為數字。在第 n1 與 n2 行之間尋找 word1 這個字串,並將該字串取代為 word2 !舉例來說,在 100 到 200 行之間搜尋 vbird 並取代為 vbird 則:

『:100,200s/vbird/vbird/g』。(常用)

:1,$s/word1/word2/g 或 :%s/word1/word2/g

從第一行到最後一行尋找 word1 字串,並將該字串取代為 word2 !(常用)

:1,$s/word1/word2/gc 或 :%s/word1/word2/gc

從第一行到最後一行尋找 word1 字串,並將該字串取代為 word2 !且在取代前顯示提示字元給使用者確認 (confirm) 是否需要取代!(常用)

如果替換的是"/" 可以將原有的替換分隔符號更換為其他符號,例如 原有的替換符號為 :s/old/new/g 替換為 

:s@/@//@g ,即 將"/" 改為 "@" 

批量注釋。

使用下面命令在指定的行首新增注釋。

使用名命令格式: :起始行號,結束行號s/^/注釋符/g(注意冒號)。

取消注釋:

使用名命令格式: :起始行號,結束行號s/^注釋符//g(注意冒號)。

例子:1、在 10 - 20 行新增//注釋

:10,20s#^#//#g
2、在 10 - 20 行刪除//注釋

:10,20s#^//##g
3、在 10 - 20 行新增#注釋

:10,20s/^/#/g
4、在10 - 20行刪除 # 注釋

:10,20s/#//g
:set +命令 表示單次修改設定生效,如 nu , nonu,nohlsearch(去掉高亮)設定永久生效則需要去配置檔案(/etc/vimrc)中新增 set nu的配置

可視模式

主要是用於對檔案的重複的大量操作可以一次性執行完成的一種功能

v 表示字元可視模式,以字元為單位選擇

v 表示行可視模式,以行為單位選擇

塊可視模式,用途最廣,ctrl+v 進入可視模式,游標選中多行後按大寫i,然後輸入內容,再按兩次esc。塊刪除同理,ctrl+v 進入可視模式,游標選中多行,按d進行刪除

VIM 字串替換

vi vim 中可以使用 s 命令來替換字串。以前只會使用一種格式來全文替換,今天發現該命令有很多種寫法 vi 真是強大啊,還有很多需要學習 記錄幾種在此,方便以後查詢。s vivian sky 替換當前行第乙個 vivian 為 sky s vivian sky g 替換當前行所有 vivian ...

vim字串替換

vi vim 中可以使用 s 命令來替換字串。1.s vivian sky 替換當前行第乙個 vivian 為 sky s vivian sky g 替換當前行所有 vivian 為 sky 2.n,s vivian sky 替換第 n 行開始到最後一行中每一行的第乙個 vivian 為 sky n...

vim 字串替換

vi vim 中可以使用 s 命令來替換字串。以前只會使用一種格式來全文替換,今天發現該命令有很多種寫法 vi 真是強大啊,還有很多需要學習 記錄幾種在此,方便以後查詢。s vivian sky 替換當前行第乙個 vivian 為 sky s vivian sky g 替換當前行所有 vivian ...