正在看vim實用技巧這本書,也在做一些筆記,直到看到了這個部落格...
下面是全文
.
命令可以重複上次的修改
vim把進入插入模式到退出形成一次修改,i
, 在插入模式中移動游標會重置修改狀態
>g
增加從當前行到文件末尾的縮排層級
a
在當前行的結尾新增內容(等價$a
), 類似還有:
查詢:
如果在插入模式使用了上下左右游標鍵,會產生乙個新的撤銷塊 (p16)這裡要注意什麼是構造乙個可重複的撤銷塊 (配合 點
.
操作符使用)
一次修改
.u
會撤銷最後一次修改.
盡量用最少的按鍵次數實現乙個操作, 乙個有趣的**
db
反向刪除, 從游標開始位置到單詞開頭的內容(不包括游標下的字元)dw
正向刪除, 從游標開始位置到下乙個單詞前(包括游標下的字元)daw
反向刪除, 從游標位置開始到前乙個單詞後(包括游標下的字元)
簡單的算數運算:
這個依然可以配合點操作符和
會把當前游標之上或之後的數值加1/減1
count
會把數值加上 [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
, 其中是要插入的字元編碼
# 輸入a065 # 輸入乙個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
可以檢視緩衝區列表:
:ls1 %a "a.txt" line 1 2 "b.txt" line 0
使用:bnext
可以切換到下乙個緩衝區:
:ls1 # "a.txt" line 1 2 %a "b.txt" line 1
其中%
表示當前視窗中可見的緩衝區,a
表示active,#
表示輪轉檔案, 也就是切換過來的前乙個緩衝區.可以在兩者間快速切換.
這裡b
表示buffer
簡寫
如果緩衝區有修改, 則:ls
會顯示+
:
:ls1 # "a.txt" line 1 2 %a + "b.txt" line 18
此時如果要切換緩衝區, 需要加!
強制執行, 如:bnext!
, 此時當前快取沖會被標記為隱藏緩衝區(h
):
:ls1 %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...