vimdiffで一致しない次の行に移動する


8

vimdiffで次の一致しない行に移動する方法はありますか?「次の変更された行に移動する」ではなく、現在のファイルの次の一致しない行に移動します。

私の場合、私は2つの大きなファイルを比較しようとしています。そのうちの1つは実際には他のサブセットです。私がしたいことは、大きなファイルで欠けている小さなファイルの行があるかどうかを確認することです。大きなファイルにカーソルを置いて、次の「行方不明」の行の注釈に直接ジャンプできるはずだと考えました。


問題の現在のファイルがソートされているので、たぶん "comm"コマンドラインユーティリティを使用して行方不明の行を見つけることができますが、vimdiffで簡単に実行できる方法があるかどうか、特に行がソートされていません。


正確に一致しない行とは何ですか?他のバッファに追加されたライン?
クリスチャンブラバンド

@ChristianBrabandtはい。1つのファイル(バッファー)にあり、他のファイル(バッファー)にはない行。
RM

そして、他のバッファの追加された行に移動したいですか?(削除されたフィラー行の上に移動することはできません)
Christian Brabandt

回答:


2

私があなたが何を望んでいるかを正しく理解し、それらの行を見つけたい場合、それらは1つのバッファで一意であるため、他のバッファでは「DiffAdd」としてマークされます。

残念ながら、search()関数を使用してそれを行うネイティブの方法はないため、「DiffAdd」が強調表示されている行を検索することによって機能する次の関数で回避する必要があります。

function! NextChange()
    while search('^.*', 'w') > 0
        if synIDattr(diff_hlID(line('.'),col('.')), 'name') is# 'DiffAdd'
            break
        endif
    endwhile
endfunction
com! NextChange :call NextChange()

これは削除と変更にも有効ですか?
トム・ヘイル

「DiffChange」の強調表示も検索する必要があるかもしれません
Christian Brabandt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.