vim實用技巧

2021-08-18 18:26:26 字數 4359 閱讀 9640

正在看vim實用技巧這本書,也在做一些筆記,直到看到了這個部落格...

下面是全文

.命令可以重複上次的修改

vim把進入插入模式到退出形成一次修改,i, 在插入模式中移動游標會重置修改狀態

>g增加從當前行到文件末尾的縮排層級

a在當前行的結尾新增內容(等價$a), 類似還有:

查詢:

如果在插入模式使用了上下左右游標鍵,會產生乙個新的撤銷塊 (p16)

構造乙個可重複的撤銷塊 (配合 點.操作符使用)

這裡要注意什麼是一次修改.u會撤銷最後一次修改.

盡量用最少的按鍵次數實現乙個操作, 乙個有趣的**

db反向刪除, 從游標開始位置到單詞開頭的內容(不包括游標下的字元)dw正向刪除, 從游標開始位置到下乙個單詞前(包括游標下的字元)daw反向刪除, 從游標位置開始到前乙個單詞後(包括游標下的字元)

簡單的算數運算:

會把當前游標之上或之後的數值加1/減1count會把數值加上 [count]

這個依然可以配合點操作符

cw從當前游標刪除乙個單詞.

能夠重複,就別用次數

之前的如dw, 都可以配合上次數, 如2dw,d2w

操作符 + 動作命令 = 操作

刪除單詞. "w" 是詞移動命令。實際上,"d" 命令後面可以跟任何 "動作" (motion) 命令,它會刪除從當前位置到游標移動到的目標位置的全部內容. refer

常用操作符:

當操作符連續呼叫兩次, 會作用於當前行. 如dd,>>,gugu或簡寫guu

在插入模式中更正錯誤,如果出錯的位置在單詞開頭,刪除整個單詞再重新輸入比退格鍵要快.

zz命令可以重繪視窗,使當前行在視窗居中.

使用配合zz(即zz)可以方便的在插入模式寫**時,讓當前行從末尾移到螢幕**.

k檢視游標下單詞的手冊頁j把當前行和下一行連線在一起

@todo 暫存器 tip 15, p 28

在插入模式中, 使用=可以使用暫存器做運算.

-r>=(40+60)*5 + 500/10

c-v, 其中是要插入的字元編碼

# 輸入a

065 # 輸入乙個unicode, # :h i_ctrl-v _digit u00bf

游標移到字元上,使用ga可以檢視它的編碼.

二合字母(digraph)可以打出一些特殊字元

# 字元 «

<<

@todo tip 19 p33, 虛擬替換模式

可視模式有三種:

viw高亮選擇當前游標下的單詞, 然後使用c修改所選內容, 這樣會刪掉單詞並進入插入模式.

高亮選取的範圍由兩個端點界定, 其中乙個固定, 乙個歲游標移動.o可修改固定端點. (p37)

在可視模式下, dot(.)操作符一般對行操作有用.

可視模式一般使用一次性的操作, 如果是重複操作, 最好使用操作符命令.

可視模式配合一些動作命令也很強大:

:進入命令列模式, 在命令列模式下執行的命令又稱ex命令. (源至ex行編輯器, vi先祖)

:h ex-cmd-index檢視完成的ex命令列表

很多ex命令可以用[range]指定要操作的範圍.可以在某一範圍內的所有行執行操作.

:print命令(簡寫:p)用於在命令列顯示指定行的內容

比如:2p移動到第二行並顯示內容;:2,5p顯示第2~5行的內容;:.,$p顯示當前行到最後一行的內容;%p顯示所有內容

使用vg高亮選取後按:進入命令列模式, 會自動填充:'<,'>, 這個也是ex命令

用模式指定範圍, 用偏移對位址進行修正. todo

[range]定義的範圍語法可以是行號、位置標記、查詢模式、偏移:

複製, 使用:copy或者:co:t. 如

快速跳會原來的位置c-o

普通模式命令適合在本地操作; ex命令適合遠距離操作

:normal配合.命令, 可以在多行完成相同的內容, 如:

a;->jvg->:'<.'>normal .從當前行到檔案末尾, 每行最後加乙個分號

更簡單的方式:.,$normal a;

:%normal i//所有行加上注釋

.命令無法重複由vim命令列中做出的修改, 改為使用@:重複上次的ex命令. 然後可以使用@@來重複操作

在ex命令自動補全時, 鍵入會顯示可用的補全列表, 如:

:col colder colorscheme 

對於命令歷史,q:開啟ex命令的歷史記錄視窗;q\開啟查詢命令的歷史記錄視窗

在ex命令視窗輸入:!可以執行一次shell命令. 執行:shell可以啟動乙個互動的shell會話.

我們所編輯的只是檔案在記憶體中的映像, 也就是vim的"緩衝區"

如果vim同時開啟多個檔案, 會把這些檔案都加到快取區, 但只有乙個是啟用的.

使用:ls可以檢視緩衝區列表:

:ls

1 %a "a.txt" line 1 2 "b.txt" line 0

使用:bnext可以切換到下乙個緩衝區:

:ls

1 # "a.txt" line 1 2 %a "b.txt" line 1

其中%表示當前視窗中可見的緩衝區,a表示active,#表示輪轉檔案, 也就是切換過來的前乙個緩衝區.可以在兩者間快速切換.

這裡b表示buffer簡寫

如果緩衝區有修改, 則:ls會顯示+:

:ls

1 # "a.txt" line 1 2 %a + "b.txt" line 18

此時如果要切換緩衝區, 需要加!強制執行, 如:bnext!, 此時當前快取沖會被標記為隱藏緩衝區(h):

:ls

1 %a "a.txt" line 1 2 #h + "b.txt" line 18

:args類似:ls, 不過顯示的比較簡陋.

分割視窗:

排列視窗:

vim實用技巧

以前習慣於eclipse,sourceinsight,vim用的不是很熟悉,在現在的公司中,vim是一種必備的技巧,慢慢,從難受到得心應手,vim還是比較好用的,下面記錄一點實用的技巧 1 vim ctags cscope是乙個強大的比擬於sourceinsight的字元介面的工具 2 ctrl 跳...

vim 實用技巧

技巧記錄 序號 功能內容 1.vimrc配置 2主題vim檔案 在vim的normal模式,echo vimruntime 可以獲取vim執行目錄。進入vim的執行目錄,檢視color目錄下以 vim 為結尾的檔案 在.vimrc配置檔案加入 colorscheme 顏色主題名字 vim主題drac...

vim實用技巧

一 經驗總結。1 刪除空格 s gi 正則為乙個空格,替換為空,全域性匹配。2 刪除空行 g n d g為global 正則為 行開始 換行.其實 n 就可以。d為命令,表示刪除。3 vim的命令為 s n g 意思是全域性替換所有以回車開頭的字元,替換為空。4 如果有多個連續的空行,想保留乙個 v...