vim 中可以使用 s 命令來替換

2021-10-08 08:41:47 字數 2939 閱讀 7873

1. 全域性替換

(1) v + g + $ 選定全部,然後輸入 :s/原始字串/目標字串/

(2) :%s/原始字串/目標字串/

2. 清除頁面中所有行尾的空白符:

:%s//s/+$//

3. 清除所有空白

:%s//(/s*/n/)/+//r/

4. 去掉所有的//注釋

:%s!/s*//.*!!

5. 去掉所有的/* */注釋

:%s!/s*//*/_.//*//s*! !

6. 做某些內部資料重複替換

有些時候我們需要組織一些批量的資料進行命令列的執行,比如我們需要利用前面的資料生成後面的資料,例如這樣的資料:

/var/database/aaa.txt

/var/database/bbb.txt

/var/database/ccc.txt

我想變成乙個個的指令,比如變成乙個個複製命令,複製到但前目錄,那麼可以執行:

:%s//(.*base///)/(.*/.txt/)/cp /1/2 /.///2/

變成了:

cp /var/database/aaa.txt ./aaa.txt

cp /var/database/bbb.txt ./bbb.txt

cp /var/database/ccc.txt ./ccc.txt

這裡關鍵是子模式的使用: () 中間的,/1 代表第乙個找到的子模式,/2代表第二個,以此類推,vim裡面的()必須轉義,跟其他語言不一樣

7. 增加注釋(乙個操作應用在多行)

比如需要增加#或者是//這種注釋:

ctrl + v 定位到開始行,然後選定需要的行,然後執行 i 命令,然後輸入 # 或 //,然後按 esc鍵兩次,即可把注釋操作應用到所有選定的行,記住選定不能使用v指令,而應該使用ctrl + v (清除注釋請參考上面的方法)(v是按行選定,ctrl + v 是按照列選定)

8. 對齊行

v 選定需要整齊的行,輸入 = 進行歸整

9. 開啟多視窗

在vim中使用 :sp 檔名 開啟行視窗(橫),使用 :vsp 檔名 開啟列視窗(豎),使用 :q 關閉當前視窗,使用 :qa 關閉所有視窗,使用 ctrl + w 在各個視窗中進行切換。

最大化視窗:ctrl + w 啟用某個視窗,然後 ****f + - 進行最大化

改變視窗到指定行高度:ctrl + w 啟用視窗,10(需要變成的行大小數字),shift + -,執行改變

增加若干行高度:ctrl + w 啟用視窗,10(需要增加的行大小數字),shift + +,執行改變

10. 字串/變數提示

在輸入內容狀態,按 ctrl + p 則顯示所有本頁中定義的字串,如果輸入字串部分內容,然後按 ctrl + p 則把所有你輸入字串開頭的內容顯示出來。在輸入狀態下按 ctrl + x 能過檢視所有有效的其他方式

刪除操作

:%s/r//g 刪除dos方式的回車^m

:%s= *$== 刪除行尾空白

:%s/^(.*)n1/1$/ 刪除重複行

:%s/^.pdf/new.pdf/ 只是刪除第乙個pdf

:%s/// 又是刪除多行注釋(咦?為什麼要說「又」呢?)

:g/s*^$/d 刪除所有空行 :這個好用有沒有人用過還有其他的方法嗎?

:g!/^dd/d 刪除不含字串'dd'的行

:v/^dd/d 同上 (譯釋:v == g!,就是不匹配!)

:g/str1/,/str2/d 刪除所有第乙個含str1到第乙個含str2之間的行

:v/./.,/./-1join 壓縮空行

:g/^$/,/./-j 壓縮空行

ndw 或 ndw 刪除游標處開始及其後的 n-1 個字元。

d0 刪至行首。

d$ 刪至行尾。

ndd 刪除當前行及其後 n-1 行。

x 或 x 刪除乙個字元。

ctrl+u 刪除輸入方式下所輸入的文字。

^r 恢復u的操作

j 把下一行合併到當前行尾

v 選擇一行

^v 按下^v後即可進行矩形的選擇了

aw 選擇單詞

iw 內部單詞(無空格)

as 選擇句子

is 選擇句子(無空格)

ap 選擇段落

ip 選擇段落(無空格)

d 刪除到行尾

x,y 刪除與複製包含高亮區

dl 刪除當前字元(與x命令功能相同)

d0 刪除到某一行的開始位置

d^ 刪除到某一行的第乙個字元位置(不包括空格或tab字元)

dw 刪除到某個單詞的結尾位置

d3w 刪除到第三個單詞的結尾位置

db 刪除到某個單詞的開始位置

dw 刪除到某個以空格作為分隔符的單詞的結尾位置

db 刪除到某個以空格作為分隔符的單詞的開始位置

d7b 刪除到前面7個以空格作為分隔符的單詞的開始位置

d) 刪除到某個語句的結尾位置

d4) 刪除到第四個語句的結尾位置

d( 刪除到某個語句的開始位置

d) 刪除到某個段落的結尾位置

d{ 刪除到某個段落的開始位置

d7{ 刪除到當前段落起始位置之前的第7個段落位置

dd 刪除當前行

d/text 刪除從文字**現「text」中所指定字樣的位置,

一直向前直到下乙個該字樣所出現的位置(但不包括該字樣)之間的內容

dfc 刪除從文字**現字元「c」的位置,一直向前直到下乙個該字元所出現的位置(包括該字元)之間的內容

dtc 刪除當前行直到下乙個字元「c」所出現位置之間的內容

d 刪除到某一行的結尾

d$ 刪除到某一行的結尾

5dd 刪除從當前行所開始的5行內容

dl 刪除直到螢幕上最後一行的內容

dh 刪除直到螢幕上第一行的內容

dg 刪除直到工作快取區結尾的內容

d1g 刪除直到工作快取區開始的內容

VS 2005中怎麼來配置可以使用AJAX的環境

web2.0橫空出世,ajax首當其衝,今天做web的如果再不學點ajax的話,就顯的落伍了,而學ajax的用的環境如果是asp.net,那ajax.net你就不得不學了。首先就是環境的配置,如下 環境設定如下 c program files microsoft asp.net asp.net 2....

VIM 中替換命令

替換 substitute range s pattern string c,e,g,i 5.1 range指的是範圍,1,7 指從第一行至第七行,1,指從第一行至最後一行,也就是整篇文章,也可以 代表。還記得嗎?是目前編輯的文章,是前一次編輯的文章。pattern就是要被替換掉的字串,可以用 re...

MySQL可以使用斜線來當字段的名字

今天發現mysql可以使用斜線來當字段的名字,這是個意外的發現。複製 如下 create table op day id int 11 not null auto increment,date date not null default 000www.cppcns.com0 00 00 commen...