文章目錄
VIM :http://dsec.pku.edu.cn/~jinlong/vi/Vi.html
刪除一行:dd
刪除一個單詞/游標之後的單詞剩餘部分:dw
刪除當前字元:x
游標之後的該行部分:d$
文本刪除
dd 刪除一行
d$ 刪除以當前字元開始的一行字元
ndd 刪除以當前行開始的n行
dw 刪除以當前字元開始的一個字
ndw 刪除以當前字元開始的n個字
D 與d$同義
d) 刪除到下一句的開始
d} 刪除到下一段的開始
d斷行符號 刪除2行
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 刪除直到工作緩衝區開始的內容
在Vi 中移動游標
k 上h l 左 右 j 下^ 移動到該行第一個非空格的字元處w 向前移動一個單詞,將符號或標點當作單詞處理W 向前移動一個單詞,不把符號或標點當作單詞處理b 向後移動一個單詞,把符號或標點當作單詞處理B 向後移動一個單詞,不把符號或標點當作單詞處理( 游標移至句首) 游標移至句尾{ 游標移至段落開頭} 游標移至段落結尾H 游標移至螢幕頂行M 游標移至螢幕中間行L 游標移至螢幕最後行 0 到行首$ 到行尾gg 到頁首G 到頁末行號+G 跳轉到指定行n+ 游標下移n行n- 游標上移n行 Ctrl+g 查詢當前行資訊和當前檔案資訊fx 向右跳到本行字元x處(x可以是任何字元)Fx 向左跳到本行字元x處(x可以是任何字元)tx 和fx相同,區別是跳到字元x前Tx 和Fx相同,區別是跳到字元x後C-b 向上滾動一屏C-f 向下滾動一屏C-u 向上滾動半屏C-d 向下滾動半屏C-y 向上滾動一行C-e 向下滾動一行nz 將第n行滾至螢幕頂部,不指定n時將當前行滾至螢幕頂部。
進入和退出Vi命令
vi filename 開啟或建立檔案,並將游標置於第一行首vi +n filename 開啟檔案,並將游標置於第n行首vi + filename 開啟檔案,並將游標置於最後一行首vi +/pattern filename 開啟檔案,並將游標置於第一個與pattern匹配的串處vi -r filename 在上次正用vi編輯時發生系統崩潰,恢複filenamevi filename ... filename 開啟多個檔案,依次進行編輯 ZZ 退出vi並儲存:q! 退出vi,不儲存:wq 退出vi並儲存
重複操作
. 重複上一次操作
自動補齊
C-n 匹配下一個關鍵字C-p 匹配上一個關鍵字
插入
o 在游標下方新開一行並將游標置於新行行首,進入插入模式。O 同上,在游標上方。a 在游標之後進入插入模式。A 同上,在游標之前。R 進入替換模式,直到按下Escset xxx 設定XXX選項。
行合并
J 把下面一行合并到本行後面
Vi中尋找及替換命令
/pattern 從游標開始處向檔案尾搜尋pattern?pattern 從游標開始處向檔案首搜尋patternn 在同一方向重複上一次搜尋命令N 在反方向上重複上一次搜尋命令% 尋找配對的括弧:s/p1/p2/g 將當前行中所有p1均用p2替代,若要每個替換都向使用者詢問則應該用gc選項:n1,n2s/p1/p2/g 將第n1至n2行中所有p1均用p2替代:g/p1/s//p2/g 將檔案中所有p1均用p2替換.*[]^%~$ 在Vi中具有特殊含義,若需要尋找則應該加上逸出字元"\"
尋找的一些選項設定高亮
:set hlsearch 設定高亮:set nohlsearch 關閉高亮:nohlsearch 關閉當前已經設定的高亮
增量尋找
:set incsearch 設定增量尋找:set noincsearch 關閉增量尋找
在Vi中刪除
x 刪除當前游標下的字元dw 刪除游標之後的單詞剩餘部分。d$ 刪除游標之後的該行剩餘部分。dd 刪除當前行。c 功能和d相同,區別在於完成刪除操作後進入INSERT MODEcc 也是刪除當前行,然後進入INSERT MODE
更改字元
rx 將當前游標下的字元更改為x(x為任一字元) ~ 更改當前游標下的字元的大小寫
鍵盤宏操作
qcharacter 開始錄製宏,character為a到z的任一字元q 終止錄製宏@character 調用先前錄製的宏
恢複誤操作
u 撤銷最後執行的命令U 修正之前對該行的操作Ctrl+R Redo
在Vi中操作Frame
c-w c-n 增加framec-w c-c 減少framec-w c-w 切換framec-w c-r 交換兩個frame
VIM中的塊操作
Vim支援多達26個剪貼簿
選塊 先用v,C-v,V選擇一塊,然後用y複製,再用p粘貼。 yy 複製當前整行 nyy 複製當前行開始的n行內容 ?nyy 將游標當前行及其下n行的內容儲存到寄存器?中,其中?為一個字母,n為一個數字 ?nyw 將游標當前行及其下n個詞儲存到寄存器?中,其中?為一個字母,n為一個數字 ?nyl 將游標當前行及其下n個字元儲存到寄存器?中,其中?為一個字母,n為一個數字 ?p 將寄存器?中的內容粘貼到游標位置之後。如果?是用yy複製的完整行, 則粘貼在游標所在行下面。這裡?可以是一個字母,也可以是一個數字 ?P 將寄存器a中的內容粘貼到游標位置之前。如果?是用yy複製的完整行, 則粘貼在游標所在行上面。這裡?可以是一個字母,也可以是一個數字 ay[motion] ay$ 複製游標位置到行末並儲存在寄存器a中 ayft 複製游標位置到當前行第一個字母t並儲存在寄存器a中
以上指令皆可去掉a工作,則y,p對未命名寄存器工作(所有d,c,x,y的對象都被儲存在這裡)。
剪下/複製/粘貼
所有刪除的內容自動被儲存,可以用p鍵粘貼
Vi的選項設定
all 列出所有選項設定情況term 設定終端類型ignorance 在搜尋中忽略大小寫list 顯示製表位(Ctrl+I)和行尾標誌($)number 顯示行號report 顯示由面向行的命令修改過的數目terse 顯示簡短的警告資訊warn 在轉到別的檔案時若沒儲存當前檔案則顯示NO write資訊nomagic 允許在搜尋模式中,使用前面不帶“\”的特殊字元nowrapscan 禁止vi在搜尋到達檔案兩端時,又從另一端開始mesg 允許vi顯示其他使用者用write寫到自己終端上的資訊
tips
對代碼自動格式化 gg=G