前言
vim中操作的快捷鍵非常多,功能十分強大,當熟練實用一些快捷鍵,可以起到事半功倍的效果,效率提高很多。本文記錄一些高效的文檔修改相關的快捷鍵,以備使用。
vim大小寫轉換
格式:
[開始位置] ———— 可以定位開始的位置,默認爲光標所在位置
gu ———— 選擇範圍內轉小寫
gU ———— 選擇範圍內轉大寫
[結束位置] ———— 可以定位結束位置,可跟着類似w,6G,G,gg等定位操作
注:以下命令無需進入命令行模式,vim打開文件直接鍵入命令即可
1、“字母”級別的大小寫轉換
如果想對光標所在位置的字母 進行大小寫轉換 ,直接 shift + ~
2、“單詞”級別的大小寫轉換
對光標所在位置的整個單詞進行大小寫轉換
guw 或 gue # 光標所在位置的單詞轉小寫
gUw 或 gUe # 光標所在位置的單詞轉大寫
gu3w 或 gu3e # 光標後面的3個單詞轉小寫
gU3w 或 gU3e # 光標後面的3個單詞轉大寫
3、“行”級別的大小寫轉換
guu # 光標所在的行轉小寫
gUU # 光標所在的行轉大寫
gu0 # 光標位置到行首轉小寫,不包含光標所在字母
gU0 # 光標位置到行首轉大寫,不包含光標所在字母
gu$ # 光標位置到行尾轉小寫,包含光標所在字母
gU$ # 光標位置到行尾轉大寫,包含光標所在字母
gu1G # 光標位置所在行到文章第一行轉小寫
gU1G # 光標位置所在行到文章第一行轉大寫
guG # 光標位置所在行到文章末尾轉小寫
gUG # 光標位置所在行到文章末尾轉大寫
4、“文件”級別的大小寫轉換
1GguG 或 ggguG # 整個文章全部轉小寫
1GgUG 或 gggUG # 整個文章全部轉大寫
注:[1G或gg]:定位開始位置,[gu或gU]:定義轉小寫或大寫 [G]:定位結束位置
vim替換快捷鍵
vi/vim 中可以使用 :s 命令來替換字符串以前只會使用一種格式來全文替換,今天發現該命令有很多種寫法(vim 真是強大!!!!!!)
:s/vivian/sky/ 替換當前行第一個 vivian 爲 sky
:s/vivian/sky/g 替換當前行所有 vivian 爲 sky
:n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 爲 sky
:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 爲 sky
n 爲數字,若 n 爲 .,表示從當前行開始到最後一行
:%s/vivian/sky/(等同於:g/vivian/s//sky/)替換每一行的第一個 vivian 爲 sky
:%s/vivian/sky/g(等同於:g/vivian/s//sky/g)替換每一行中所有 vivian 爲 sky
:%s/vivian/sky/g實現文件及的替換,把整個文件內的vivian替換爲sky。
可以使用 # 作爲分隔符,此時中間出現的 / 不會作爲分隔符
:s#vivian/#sky/# 替換當前行第一個 vivian/ 爲 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 /):/oradata/apras/替換成/user01/apras1/
vim在同一個窗口中同時編輯多個文件
一、如果在終端中開沒有打開vim,可以:
橫向分割顯示:
$ vim -o filename1 filename2
縱向分割顯示:
$ vim -O filename1 filename2
二、如果已經用vim打開了一個文件,想要在窗口中同時再打開另一個文件:
橫向分割顯示:
:vs filename
縱向分割顯示:
:sp filename
其中,vs可以用vsplit替換,sp可以用split替換。
如果finename不存在,則會新建該文件並打開。
三、關閉窗口
關閉光標所在的窗口:
:q 或 :close
關閉除光標所在的窗口之外的其他窗口:
:only
關閉所有窗口:
:qa
四、切換窗口
打開了多個窗口,需要在窗口之間切換時:
ctrl + w w
即按住ctrl鍵,再按兩下w鍵。
或者ctrl + w <h|j|k|l>
即按住ctrl鍵,按一次w鍵,再按一次表示方向的h或j或k或l,則光標會切換到當前窗口的 左|下|上|右 側的窗口。
使用Vim比較兩個文件的內容
- 使用vim的比較模式打開兩個文件:
vim -d file1 file2
或
vimdiff file1 file2
- 如果已經打開了文件file1,再打開另一個文件file2進行比較:
:vert diffsplit file2
如果沒有用vert命令,diffsplit則會分上下兩個窗口。
-
如果已經用split方式打開了兩個文件file1,file2,又想比較兩文件的不同。
分別在兩個窗口裏面輸入命令:
:diffthis -
如果更改了某個窗口的內容,vim又沒有自動更新diff檢查,可以使用如下命令更新:
:diffupdate -
定位到不同點:
[c 跳到前一個不同點
]c 跳到後一個不同點 -
在窗口間跳轉:
ctrl-w w 跳到下一個窗口
ctrl-w h 跳到左側窗口
ctrl-w l 跳到右側窗口
ctrl-w j 跳到下方的窗口
ctrl-w k 跳到上方的窗口 -
合併文檔:
dp 將差異點的當前文檔內容應用到另一文檔(diff put)
do 將差異點的另一文檔的內容拷貝到當前文檔(diff get) -
上下文的展開和查看
比較和合並文件的時候經常需要結合上下文來確定最終要採取的操作。Vimdiff 缺省是會把不同之處上下各 6 行的文本都顯示出來以供參考。其他的相同的文本行被自動摺疊。如果希望修改缺省的上下文行數爲3行,可以這樣設置:
:set diffopt=context:3
可以用簡單的摺疊命令來臨時展開被摺疊的相同的文本行:
zo (folding open, z這個字母看上去比較像摺疊的紙)
然後可以用下列命令來重新摺疊:
zc (folding close)
vim查看和修改二進制文件
vim打開二進制文件時會是亂碼,我們可以在命令模式使用:%!xxd 來轉換爲16進制進行查看,可以使用%xxd -r恢復回來。
:%!xxd
xxd是linux的一個命令,vim可以通過”!”來調用外部命令,其功能就是進行十六進制的dump或者反之。
參考
參考:https://www.cnblogs.com/zhanglanyun/archive/2011/12/19/2293695.html
https://www.cnblogs.com/taskiller/archive/2012/07/26/2610583.html