新着記事

2004年12月27日

vimエディタのdiffoptの設定のお話。

今日もやっぱりvimエディタのdiffsplitの話です。



詳しくは、vimエディタのヘルプを見てもらうとして、今回は、diffoptで指定できる"icase"オプションと、"iwhite"オプションの話。



これらのオプションをdiffoptで指定すると、diffsplitの結果がちょっとだけ変えられるのです。


・"icase"オプションを指定すると、diffsplitを実行する時に、アルファベット大文字、小文字を区別しないdiffを実行するようになり、

・"iwhite"オプションを指定すると、diffsplitを実行する時に、半角スペースの数が、比較している行で違っていても、それを無視してdiffを実行するようになります。


diffoptを設定する場合は、↓このように指定します。
カンマで区切って複数のオプションを指定できます。
当然、この設定は、設定ファイル.vimrcファイルか_vimrcファイルに書いておきます。

:set diffopt=filler,icase,iwhite



既存の設定を上書きしないように、

:set diffopt

と入力して、現在の設定を確認した上で、(現在の設定に)追加するような形で指定すると良いでしょう。


なお、diffexprを設定している場合、(設定したdiffexprの中でこれらのオプションを使っていない限り)、"icase"、"iwhite"のオプションは使用されませんので、注意してください。




今日は以上。

では〜。

posted by 小見 拓 at 03:59| Comment(0) | TrackBack(0) | 差分表示 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2004年12月14日

前回 (インデントを変更したり、タブスペースを変更したファイルとの差分diffを判りやすくしちゃいます。) のおさらい。(vimエディタネタ)

前回の続きですよ〜。



前回
>vimエディタでは、いくつかの処理を
>ユーザーが定義したファンクションで置き換えることができます。
という事を書いてますよね。

どのような処理を置き換えられるかは、
vimエディタに添付のヘルプドキュメントの至るところに書いてあり、
更に、その近くには、その処理のサンプル実装のコードも書いてあると思います。

なので、これらの処理を少しカスタマイズする程度なら、
たとえvimスクリプトを知らなくても、
誰でも簡単に行うことができます。
サンプル実装をほんの少し弄るだけで良い訳ですから。

ちなみに、私が前回作った、
vimエディタの差分diffの結果を変えるファンクションの元となったサンプル実装は、

set diffexpr=MyDiff()
function MyDiff()
let opt = ""
if &diffopt =〜 "icase"
let opt = opt . "-i "
endif
if &diffopt =〜 "iwhite"
let opt = opt . "-b "
endif
silent execute "!diff -a --binary " . opt .
\ " v:fname_in . " " . v:fname_new .
\ " > " . v:fname_out
endfunction


で、私の作成したファンクションは、
↓こんなんだから、ほんの少ししか変わらないですね。
set diffexpr=IgnoreSpaceDiff()
function IgnoreSpaceDiff()
let opt = ""
if &diffopt =〜 "icase"
let opt = opt . "-i "
endif
if &diffopt =〜 "iwhite"
let opt = opt . "-b "
endif
silent execute "!diff --ignore-all-space -a " . opt .
\ v:fname_in . " " . v:fname_new .
\ " > " . v:fname_out
endfunction






本日は以上です。
では〜。
posted by 小見 拓 at 03:00| Comment(0) | TrackBack(0) | 差分表示 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2004年12月10日

インデントを変更したり、タブスペースを変更したファイルとの差分diffを判りやすくしちゃいます。(vimエディタネタ)

今日は、vimエディタの差分 diff のお話、
環境はMac OSXです。




プログラミングをしていると、ソースを整形することは多いですよね。
インデントを変更したり、タブとスペースを変換したり。
IDEによって、強制的にコードのスタイルが変更されることもあるでしょう。

でも、そうすると、vimエディタで差分を取る時に
困ったことになったりするでしょう?

今のファイルと、他のファイルとの差分を取るコマンド
:vert diffsplit 他のファイル

vimdiff インデント変更ファイルとの差分ノーマル
まっかっかで、どこが変わったか判らない !!





こんな問題でお困りならば、
vimの設定ファイル、.vimrcか、_vimrcに下のコードを書き込み、
もう一度、比較を実行してみてください。

set diffexpr=IgnoreSpaceDiff()
function IgnoreSpaceDiff()
let opt = ""
if &diffopt =~ "icase"
let opt = opt . "-i "
endif
if &diffopt =~ "iwhite"
let opt = opt . "-b "
endif
silent execute "!diff --ignore-all-space -a " . opt .
\ v:fname_in . " " . v:fname_new .
\ " > " . v:fname_out
endfunction

差分を取るコマンドをもう一度実行。
:vert diffsplit 他のファイル

vimdiff インデント変更ファイルとの差分カスタム
見てのとおり。今度は、どこが変更されたかよく判るでしょう?




vimエディタでは、いくつかの処理を
ユーザーが定義したファンクションで置き換えることができます。

今回は、差分を生成するときに呼び出される処理 diffexpr を
新たに用意したファンクション IgnoreSpaceDiff() で置き換えてみました。

ファンクション IgnoreSpaceDiff()では、
差分を生成するdiffコマンドを実行するときに、
--ignore-all-spaceオプションを付けて、
空白文字を無視するようにしています。

それで、上のようにvimエディタでの差分取得の結果が変わったわけです。




今回は以上ですよ〜。

ではでは〜。

posted by 小見 拓 at 02:10| Comment(0) | TrackBack(0) | 差分表示 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2004年11月16日

:diffpatchコマンドによる差分の取り込み。CVSコンフリクト編。 (vimエディタネタ)

vimエディタの:diffpatchコマンドを、
CVSのコンフリクトの修正に使う場合の例。



CVS

cvs -n update -d 2> /dev/null
とかやって、コンフリクトが発生することがわかったら、

C hoge/foo.txt
↑ 例えば、hoge/foo.txtでコンフリクトが発生する時は、
こんな様に表示されると思う。


cvs diff hoge/foo.txt > /tmp/cvslog
上のように入力して、どこか別のファイルに差分を書き出して、
(この例では、/tmp/cvslog に書き出すことにする。)

vim /hoge/foo.txt
vimエディタで /hoge/foo.txt ファイルを開いてから、
(この例では、hoge/foo.txt でコンフリクトが発生したと仮定する。)

:diffpatch /tmp/cvslog
:diffpatchコマンドで、先ほど生成したパッチを取り込んで、
違いを表示、2つのウィンドウを比べながらマージする。

diffpatchコマンド実行結果 (縦)




なんか、無理矢理な例でした。


関連

:diffpatchコマンドによる差分の取り込み (vimエディタネタ)
http://advweb.seesaa.net/article/1001164.html

3分記事「2つのファイルの差分をマージする」(vimエディタネタ)
http://advweb.seesaa.net/article/964052.html

3分記事「2つのファイルの差分を取る」(vimエディタネタ)
http://advweb.seesaa.net/article/762233.html



今日は以上です。
ではでは。

posted by 小見 拓 at 03:22| Comment(0) | TrackBack(0) | 差分表示 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2004年11月10日

:diffpatchコマンドによる差分の取り込み (vimエディタネタ)

vimエディタに、
:diffpatchというコマンドがあります。


このコマンドは、
差分ファイル(パッチ)を現在のバッファに取り込んだ結果と、
差分を取り込む前のバッファとの差分を表示します。

diffpatchコマンド実行結果


:diffpatchコマンド実行の際、パッチを取り込む前のバッファは、
.new拡張子付きの名前のバッファとして逃がされます。

(例えば、sample.txtにコマンドを実行した場合、
sample.txtがパッチを適用したバッファになり、
sample.txt.newがパッチ適用前のオリジナルと
同じ内容のバッファになります。)


コマンドを実行した直後では、差分を取り込んだファイルは
保存されていません。


パッチを取り込んだ結果を見て、それで良ければそのまま保存。


良くなければ、
.new拡張子のバッファと見比べながら修正して保存するか、
バッファを閉じて、パッチの取り込みを無かったことにすれば
良いですね。




:diffpatchコマンドの書式はこうなります。↓
:diffpatch パッチファイル


もちろん、verticalも使えます。
:vertical diffpatch パッチファイル

diffpatchコマンド実行結果 (縦)

↑vertical付きで、コマンドを実行した結果。



もう夜も遅いので、今日はここまでです。


たぶん、つづく。
posted by 小見 拓 at 03:33| Comment(0) | TrackBack(0) | 差分表示 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2004年11月05日

3分記事「2つのファイルの差分をマージする」(vimエディタネタ)

vimエディタで2つのファイルの差分を表示して、

vim diffmode

(この状態はdiffモードというらしい。)
それぞれのファイルの違いをマージする時に、



do
と入力すると、カレントバッファのカーソル位置に、
もう一方のファイルからの差分を取り込み、



dp
と入力すると、もう一方のファイルに
カレントバッファのカーソルの位置の差分を書き込むことができます。



vim diffmode 修正



この操作は、それぞれのファイルの差分の
上で入力しないと動作しませんよ。


関連
3分記事「2つのファイルの差分を取る」(vimエディタネタ)
http://advweb.seesaa.net/article/762233.html




本日はこれで終わりです。

ではー。
posted by 小見 拓 at 03:30| Comment(0) | TrackBack(0) | 差分表示 (vimエディタ) | このブログの読者になる | 更新情報をチェックする

2004年10月08日

3分記事「2つのファイルの差分を取る」(vimエディタネタ)

vimエディタを使って、
より少ないストローク数で2つのファイルの差分を取る。


ストローク数計算用に
差分を取るファイルの
ファイル名は5文字で、
バッファの番号は1桁と仮定する。


補完のことは考えない。

1


vimエディタでは、下のコマンドで、
今エディタで開いているファイルと、
指定したファイルとの差分を表示できる。
:vertical diffsplit 差分を取りたいファイル
もしくは、
:vert diffsplit 差分を取りたいファイル

26


2


Kaoriya版のvimだと、
:vertical diffsplit 差分を取りたいファイル

と同様の機能を持つコマンドとして
:VDSplit 差分を取りたいファイル

が組み込まれている。


このコマンドを使うと、
:vertical diffsplit 差分を取りたいファイル

を使うより、短いストローク数で差分が取れる。

15


3


差分を取りたい2つのファイルが、
エディタのバッファに入っている時は
さらにストローク数を短くできる。


これは良くあるケースだと思う。


「# + バッファの番号」でファイルを指定できるので、
下のように入力すれば、ファイル名を指定する場合よりも、
少ないストローク数で差分が取れる(ことが多い)。

:VDSplit #バッファの番号


12




終わり。

仮定の話ばかりで済まない。
posted by 小見 拓 at 04:19| Comment(0) | TrackBack(0) | 差分表示 (vimエディタ) | このブログの読者になる | 更新情報をチェックする
記事検索
 
カテゴリ
最近のコメント
QKCのインストール [3-4/18]
 ⇒ kova (05/23)
calendar.vimには日記をつける機能があったらしい。
 ⇒ とまと (03/07)
最近よく見るようになったvimスクリプトのコメントの書き方
 ⇒ 小見 拓 (02/13)
 ⇒ kana (02/11)
vimエディタ ヘルプのgrep
 ⇒ みかん (07/15)
指定したカラム位置にテキストを流し込む (vimエディタ)
 ⇒ こみ (03/20)
 ⇒ とおりすがり (03/19)
 ⇒ こみ (03/18)
 ⇒ takayama (03/18)
tempfile -- Generate temporary files (Mac OSX)
 ⇒ take3 (01/20)
 ⇒ こみ (01/19)
 ⇒ take3 (01/18)
 ⇒ こみ (01/17)
 ⇒ take3 (01/14)
WebObjectsのオープンソースプロジェクト Project Wonderってなんじゃろな。#2
 ⇒ (06/30)
 ⇒ Tetsuya Kuramochi (06/29)
 ⇒ Tetsuya Kuramochi (06/29)
WebObjectsのオープンソースプロジェクト Project Wonderってなんじゃろな。#1
 ⇒ (06/03)
 ⇒ Tetsuya Kuramochi (06/02)
最近のトラックバック
vimエディタで「文字コード、改行コードを変更して保存する。」
 ⇒ window.closed (04/25)
 ⇒ himesuke’s STEP-log (03/18)
 ⇒ PukiWiki/TrackBack 0.2 (05/07)
vimエディタの折りたたみ機能の話。その2 (foldmethod=syntax)
 ⇒ 俺の基地 (PukiWiki/TrackBack 0.3) (04/20)
ログファイルを監視して、特定のキーワードが見つかったら、何らかのコマンドを実行する。
 ⇒ Apple Fan (10/16)
ファイル保存ダイアログの初期ディレクトリについての話 (vimエディタ話)
 ⇒ ナレッジエース (07/23)
:e <C-x> (編集中のファイルと同じディレクトリにあるファイルを開く。)
 ⇒ ボクノス (02/07)
Opening many files using wildcards.
 ⇒ PukiWiki Plus! (PukiWiki/TrackBack 0.4) (10/28)
 ⇒ 川o・-・)<2nd life (07/18)
vimエディタで印刷自由自在 その8 -エディタからの直接の印刷の代わりに、2html.vimスクリプトを使用する-
 ⇒ Knoppix Temporary Directory (PukiWiki/TrackBack 0.3) (02/19)
検索でマッチした対象に対して、置換を行う。(vimエディタ話)
 ⇒ 123net :: 開発日記 (12/31)
ごみ箱にファイルを叩き込むスクリプト。(vimエディタ)
 ⇒ "OSX" .app's :Macのアプリを便利、感動、面白をベースにほぼ日刊で紹介。 (11/26)
パーセント、%、percent でのカーソル移動 (vimエディタ話)
 ⇒ プログラミング言語 (10/11)
過去ログ
Profile
小見 拓
mail@nanasi.jp
小見と申します。
神奈川でデベロッパーやってます。
名無しのVIM使い

RSS 1.0


広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。