Linux基礎命令 vimdiff

2022-06-29 18:21:08 字數 3236 閱讀 1434

首先保證系統中的diff命令是可用的。vim的diff模式是依賴於diff命令的。vimdiff的基本用法就是:

vimdiff  1.txt   2.txt  #效果如下圖

然後在vim的ex模式(也就是"冒號"模式)下輸入:

:vertical diffsplit file_right
也可以達到同樣的效果。如果希望交換兩個視窗的位置,或者希望改變視窗的分割方式,可以使用下列命令:

1. ctrl-w k(把當前視窗移到最上邊)

2. ctrl-w h(把當前視窗移到最左邊)

3. ctrl-w

j(把當前視窗移到最下邊)

4. ctrl-w l(把當前視窗移到最右邊)

其中1和3兩個操作會把視窗改成水平分割方式。

接下來試試在行間移動游標,可以看到左右兩側的螢幕滾動是同步的。這是因為"scrollbind"選項被設定了的結果,vim會盡力保證兩側檔案的對齊。如果不想要這個特性,可以設定:

:set noscrollbind

]c
反向跳轉是:

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

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

dp (diff "put")
如果希望把另乙個檔案的內容複製到當前行中,可以使用命令

do (diff "get",之所以不用dg,是因為dg已經被另乙個命令占用了)
如果希望手工修改某一行,可以使用通常的vim操作。如果希望在兩個檔案之間來回跳轉,可以用下列命令序列:

ctrl-w, w
在修改乙個或兩個檔案之後,vimdiff會試圖自動來重新比較檔案,來實時反映比較結果。但是也會有處理失敗的情況,這個時候需要手工來重新整理比較結果:

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

, u
但是要注意一定要將游標移動到需要撤銷修改的檔案視窗中。

在比較和合併告一段落之後,可以用下列命令對兩個檔案同時進行操作。比如同時退出:

:qa (quit all)
如果希望儲存全部檔案:

:wa (write all)
或者是兩者的合併命令,儲存全部檔案,然後退出:

:wqa (write, then quit all)
如果在退出的時候不希望儲存任何操作的結果:

:qa! (force to quit all)
比較和合併檔案的時候經常需要結合上下文來確定最終要採取的操作。vimdiff 預設是會把不同之處上下各 6 行的文字都顯示出來以供參考。其他的相同的文字行被自動摺疊。如果希望修改預設的上下文行數,可以這樣設定:

:set diffopt=context:3
可以用簡單的摺疊命令來臨時展開被摺疊的相同的文字行:

zo (folding open,之所以用z這個字母,是因為它看上去比較像摺疊著的紙)
然後可以用下列命令來重新摺疊:

zc (folding close)
然後在vim的ex模式(也就是"冒號"模式)下輸入:

:vertical diffsplit file_right
也可以達到同樣的效果。如果希望交換兩個視窗的位置,或者希望改變視窗的分割方式,可以使用下列命令:

1. ctrl-w k(把當前視窗移到最上邊)

2. ctrl-w h(把當前視窗移到最左邊)

3. ctrl-w

j(把當前視窗移到最下邊)

4. ctrl-w l(把當前視窗移到最右邊)

其中1和3兩個操作會把視窗改成水平分割方式。

接下來試試在行間移動游標,可以看到左右兩側的螢幕滾動是同步的。這是因為"scrollbind"選項被設定了的結果,vim會盡力保證兩側檔案的對齊。如果不想要這個特性,可以設定:

:set noscrollbind

]c
反向跳轉是:

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

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

dp (diff "put")
如果希望把另乙個檔案的內容複製到當前行中,可以使用命令

do (diff "get",之所以不用dg,是因為dg已經被另乙個命令占用了)
如果希望手工修改某一行,可以使用通常的vim操作。如果希望在兩個檔案之間來回跳轉,可以用下列命令序列:

ctrl-w, w
在修改乙個或兩個檔案之後,vimdiff會試圖自動來重新比較檔案,來實時反映比較結果。但是也會有處理失敗的情況,這個時候需要手工來重新整理比較結果:

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

, u
但是要注意一定要將游標移動到需要撤銷修改的檔案視窗中。

在比較和合併告一段落之後,可以用下列命令對兩個檔案同時進行操作。比如同時退出:

:qa (quit all)
如果希望儲存全部檔案:

:wa (write all)
或者是兩者的合併命令,儲存全部檔案,然後退出:

:wqa (write, then quit all)
如果在退出的時候不希望儲存任何操作的結果:

:qa! (force to quit all)
比較和合併檔案的時候經常需要結合上下文來確定最終要採取的操作。vimdiff 預設是會把不同之處上下各 6 行的文字都顯示出來以供參考。其他的相同的文字行被自動摺疊。如果希望修改預設的上下文行數,可以這樣設定:

:set diffopt=context:3
可以用簡單的摺疊命令來臨時展開被摺疊的相同的文字行:

zo (folding open,之所以用z這個字母,是因為它看上去比較像摺疊著的紙)
然後可以用下列命令來重新摺疊:

zc (folding close)

Linux基礎命令

eg man ls 就可以檢視ls相關的用法 注 按q鍵或者ctrl c退出,在linux下可以使用ctrl c終止當前程式執行。2.ls檢視目錄或者檔案的屬 列舉出任一目錄下面的檔案 eg ls usr man ls l a.d表示目錄 directory 如果是乙個 表示是檔案,如果是l則表示是...

linux基礎 命令

命令自動補全 help幫助 幫助文件 鳥哥linux私房菜 linux命令大全 工具書 man ls useradd utest useradd g group2 utest 建立utesty使用者屬於group2組 usermod g group3 utest 將utest所在的組改為group3...

linux 命令基礎

本週學習知識點 一 linux作業系統的目錄結構 在linux作業系統中,沒有 c d e等這些碟符的概念 只有乙個 代表根目錄。home 使用者的家 media 裝置 掛載 的映象檔案 root 最高許可權使用者 一般情況下不需要使用root 使用者 bin 所有的操作都是通過 命令實現的,這些命...