一天乙個命令之 vimdiff

2021-09-01 12:08:56 字數 3054 閱讀 4708

請使用]c命令

★ 跳轉到前乙個diff點:

請使用[c命令

如果在命令前加上數字的話,可以跳過乙個或數個差異點,從而實現跳的更遠。比如如果在位於第乙個差異點的行輸入"2]c",將越過下乙個差異點,跳轉到第 三個差異點。

★ 檔案比較的最終目的之一就是合併,以消除差異。如果希望把乙個差異點中當前檔案的內容複製到另乙個檔案裡,可以使用命令:

dp (diff "put")

★ 如果希望把另乙個檔案的內容複製到當前行中,可以使用命令:

do (diff "get",之所以不用dg,是因為dg已經被另乙個命令占用了,所以用了diff "obtain")

★ 如果希望手工修改某一行,可以使用通常的vim操作。如果希望在兩個檔案之間來回跳轉,可以用下列命令序列:ctrl-w, w

★ 在修改乙個或兩個檔案之後,vimdiff會試圖自動來重新比較檔案,以便實時地反映比較結果。但是有時候會處理失敗,這個時候就需要手工來重新整理。

:diffupdate

★ 如果希望撤銷修改,可以和平常用vim編輯一樣,直接, u 

★ zo (folding open)開啟摺疊**。之所以用z這個字母,是因為它看上去比較像摺疊著的紙:)

★ zc (folding close)重新摺疊起來。

★ 補充一條: 如果想交換上/下、左/右兩個分隔視窗的位置,可以使用 ctrl-w,r 命令

更詳細的介紹如下

vimdiff [options] file1 file2 [file3]

[功能]

同時開啟兩個或者多個檔案,進行比較。

[描述]

vimdiff會將兩個檔案的相同指出盡量列在同一位置上面,便於查對比較。其命令基本和vim是一致的。

vimdiff使用vim啟動兩個或者多個檔案,每個檔案有其自己的視窗。每個檔案中不同的地方會用高亮顯示出來。它在進行改變的檢查以及將改動從乙個版本的檔案移動到另乙個版本的情況下非常方便。首先你得保證安裝了vim才能是用vimdiff.用這個命令安裝:

#apt-get install vim-full

其他類似的工具還tkdiff,meld 和 xfdiff4等。 

[舉例]

*同時開啟main.cpp和main2.cpp,垂直方向分屏:

$vimdiff main.cpp main2.cpp

或$vim -d main.cpp main2.cpp

這樣會同時開啟兩個檔案垂直在兩欄顯示,可以開啟不止兩個檔案。

*同時開啟main.cpp和main2.cpp,水平方向分屏:

$vimdiff -o main.cpp main2.cpp

這樣會同時開啟兩個檔案在上下兩欄顯示.

**開啟檔案之後

可以看見不同的地方會高亮顯示,相同的地方缺省會被摺疊起來。如下常用操作:

*跳到下乙個不同的地方:

輸入"]c".

*跳到上乙個不同的地方:

輸入"[c".

*用另外乙個視窗的不同處替換當前:

輸入"do".

這裡,前提是用']c'或者'[c'跳到相應的不同處,執行完畢之後,當前視窗當前位置內容被替換為另外乙個視窗的當前位置內容。注意這裡是兩個檔案的情況,當前視窗有多於兩個檔案時無法進行。

*先指定範圍1-100行,再用另外乙個視窗的不同處替換當前:

輸入"1,100 diffg".

或輸入"1,100 diffget".

這裡,等同於do不過指定了範圍,如果有緩衝還可在diffg後面指定緩衝名字。

*先指定範圍1-100行,再用指定3號緩衝(假設是檔案file3)的不同處替換當前:

輸入"1,100 diffg 3".

或輸入"1,100 diffget 3".

這裡,在diffg後面指定緩衝名字。

*用當前替換另外乙個視窗的不同處:

輸入"dp".

這裡,前提是用']c'或者'[c'跳到相應的不同處,執行完畢之後,另外乙個視窗的當前位置內容被替換成當前視窗當前的位置內容。注意這裡是兩個檔案的情況,當前視窗有多於兩個檔案時無法進行。

*先指定範圍1-100行,再用另外乙個視窗的不同處替換當前:

輸入"1,100 diffpu".

或輸入"1,100 diffput".

這裡,等同於dp不過指定了範圍,如果有緩衝還可在diffpu後面指定緩衝名字。

*先指定範圍1-100行,再用指定3號緩衝(假設是檔案file3)的不同處替換當前:

輸入"1,100 diffpu 3".

或輸入"1,100 diffput 3".

這裡,在diffpu後面指定緩衝名字。

*新開乙個水平視窗載入file檔案進行對比:

輸入":diffsplit file".

這裡新開的視窗是水平排列的,在不同視窗間移動的命令同vim。

*新開乙個垂直視窗載入file檔案進行對比:

輸入"vert diffsplit file".

這裡,vert實際是vertical字首的簡寫。新開的視窗是垂直排列的,在不同視窗間移動的命令同vim。

*強制更新檔案的不同狀態:

輸入":diffupdate".

這裡,當我們修改某乙個檔案的時候,vim會試圖使它和另外乙個檔案的不同之處保持更新,例如插入和刪除行。但是,更複雜的修改或者在乙個行內的修改可能會導致不同處(vimdiff)沒有及時更新,這時候可以執行這個命令(diffupdate)進行強制更新。

*修改預設的上下文行為3行:

輸入":set diffopt=context:3".

這裡vimdiff 預設是會把不同之處上下各 6 行的文字都顯示出來以供參考。其他的相同的文字行被自動摺疊。如果希望修改預設的上下文行數,可以這樣設定.

*開啟摺疊的文字:

輸入"zo".

*摺疊摺疊的文字:

輸入"zc".

*修改完畢之後儲存所有檔案:

輸入"wqa".

**[其他]

其實vimdiff就是vim,只是乙個符號鏈結而已,你可以file /etc/alternatives/*|grep bin/vim看看。

一天乙個命令之 sysctl

sysctl,這個命令是用來動態修改系統引數的。sysctl 命令 sysctl命令被用於在核心執行時動態地修改核心的執行引數,可用的核心引數在目錄 proc sys中。它包含一些tcp ip堆疊和虛擬記憶體系統的高階選項,這可以讓有經驗的管理員提高引人注目的系統效能。用sysctl可以讀取設定超過...

一天乙個命令之 tcpdump

tcpdump是乙個用來抓包的命令。老哥也是在無意間發現,自己的機器被別人攻擊了!1 抓取所有經過網絡卡1,目的地為172.18.253.199的包。root c74 tcpdump i ens33 host 172.18.253.1992 抓取所有經過網絡卡1,埠為80的包。root c74 tc...

一天乙個Linux命令 cp

cp命令用來將乙個或多個原始檔或者目錄複製到指定的目的檔案或目錄。它可以將單個原始檔複製成乙個指定檔名的具體的檔案或乙個已經存在的目錄下。cp命令還支援同時複製多個檔案,當一次複製多個檔案時,目標檔案引數必須是乙個已經存在的目錄,否則將出現錯誤。一般情況下,在命令列下複製檔案時,如果目標檔案已經存在...