pretty code

2025年7月10日 星期四

Linux + Vim 真是絕配

想要得到一份兩個目錄下的檔案內容差異又不想包含 soft-link,Google 一下可以知道 diff 就有這樣的選項可以使用。

diff -r --no-dereference

為什麼要排除 soft-link?假設路徑中前後各有一個 soft-link,則比較出來的差異數量會膨脹成 4 倍。

排除了重複的資料後,diff 結果可以很容易的再用 sed 切出我們要的內容,也就是不同目錄的差異檔案清單。

如果我們把查詢出來的清單再加工成另一份清單,簡單加上一個 Vim Function,我們就可以快速的隨時瀏覽該檔案的差異項目。

diff -r --no dereference Dir1 Dir2 > diff.log
cat diff.log | sed -En 's/diff -r --no-dereference (.*) (.*)/gvim -d \1 \2/p' > diff_file_list.txt

function! CallExternalCmd()
    let l:line = getline(".")
    execute ":!" . l:line
endfunction

這是我在工作站沒有 WinMerge 這樣的軟體情況下,能夠想出的最佳解法。

當然最佳解一定是在工作站安裝 WinMerge 類似的軟體,雖然在 Linux 上 command line 才是王道,如果偶爾也有 GUI 可用,那也是個不錯的休閒時光XD

沒有留言: