パッチの練習

今日も浅く広くLinux。浅広のコーナー。コンソール版のVimの動作がおかしかったので、GUI版と別けていこうかと作業中です。

そんな時、困っちゃうのが、アレ?前の設定どうだったっけなぁ・・・。なんて事があるわけで、差分を取っておきたいのです。そんなわけで、今日はdiffとpatchの練習です。

作業風景。

$ cat .vimrc > .vimrc.org       # オリジナルを保存
$ vim .vimrc                    # vimで編集〜
$ diff -u .vimrc.org .vimrc     # 差分を取ってみる
--- .vimrc.org  2007-03-06 23:39:04.000000000 +0900
+++ .vimrc      2007-03-06 23:42:41.000000000 +0900
@@ -43,9 +43,9 @@
 colorscheme desert

 " set list
-set list
 if has("gui")
        set listchars=tab:>-,eol:<
+       set list
 endif

 highlight SpecialKey guifg=grey50
$ diff -u .vimrc.org .vimrc > .vimrc.patch # 保存
$ mv .vimrc.org ~/tmp/.vimrc      # tmpへリネームして移動
$ mv .vimrc.patch ~/tmp/
$ cd ~/tmp/
$ patch < .vimrc.patch            # パッチを当てる
patching file .vimrc
$ cat .vimrc | head -51 | tail -6 # 確認
if has("gui")
        set listchars=tab:>-,eol:<
        set list
endif

highlight SpecialKey guifg=grey50

見事にパッチが当りました!!

headとtailを組み合わせれば、n行目〜m行目まで表示も可能ですが、計算がちとメンドイ。

head m | tail m - n
参考
IBM ヒント: headとtailを使って、テキスト・ストリームを切り分け… - Japan

そのうちバージョン管理したいなぁ・・・。