vimをdiffツールとして使用するにはどうすればよいですか?

プライマリエディターとしてvimを使用しています。

また、vimを使用してファイルを比較し、ファイルを変更したいと思います。簡単な変更を修正するためのdiff(diff / fix / diff / fixのサイクルであるほとんどのdiffテクニックではありません)。

さらに、ソース管理ツール/サイトで使用されるdiffツールにvimを統合する簡単な方法があります。 (私は特にgitについて考えていますが、他の人が他のソース管理ツール/サイトとの統合に興味を持っていると確信しています。)

コメント

  • vim-fugitiveを試してみてください。コマンド:Gdiff:Gvdiffが追加されます。どちらのコマンドでも、現在のバッファの差分を並べて表示できます。現在のバッファはgitによって管理されています。また、一部のファイルでマージの競合が発生した場合に、3つのウィンドウレイアウトで競合を解決することもできます
  • bashrcにこの単純な関数がありますvd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; } vd file1 file2を使用します。 diffを使用してファイルが異なるかどうかを判断し、異なる場合にのみvimdiffを開きます。そうでなければ、私はシェルにとどまります。また、Vimで構文の強調表示を無効にします。これは、差分をとるときに気が散るからです。 2つのファイルでのみ機能します。

回答

vimには、この機能が組み込まれています(正しいコマンドラインフラグを使用) 。

vim -d <file1> <file2> 

これにより、各ファイルがビューで開き、違いが強調表示されます。
同一のコードはすべてfolded離れているので、同じコードを見たり、同じコードの巨大なチャンクをスクロールしたりする必要はありません。

ただし、正しいフラグでvimを正しく呼び出すラッパーアプリケーションvimdiffもあります。

vimdiff source1.cpp source2.cpp 

gitを使用している場合は、外部の差分ツールを設定できます。したがって、vimdiffをgitのdiffツールとして設定するのは簡単です。

git config --global diff.tool vimdiff 

vimdiffを使用する場合、どちらの側も編集でき、diffの強調表示は表示のペースを維持しますあなたの違い。

注:gitdiffから編集する場合。リポジトリに保存されているバージョンのファイルを編集しようとすると、終了時に変更が破棄されます(gitは元のファイルを信頼しないため、tmpコピーとは異なります)が、ローカルコピーを心ゆくまで編集できます。現在のバージョンに保存します。

vimdiff

dp diffput: puts changes under the cursor into the other file making them identical (thus removing the diff). do diffget: (o => obtain). The change under the cursor is replaced by the content of the other file making them identical. ]c Jump to the next diff [c Jump to the previous diff 

vimdiffでハイライトを操作するために使用するその他のvim設定

if &diff highlight! link DiffText MatchParen endif 

これにより、変更されたコードのビットの強調表示がオフになります。そのため、変更された行が強調表示され、変更を見つけることができますが、変更された実際のテキストはその行で目立ちます(強調表示されていないため)。

コメント

  • 最大4つのバッファーも処理するため、構成ファイルの比較に最適です
  • :diffthisコマンドを使用して開始することもできますVimがすでに実行されている場合はdiff。
  • そして:diffoffでオフにします。 vim ‘のドキュメントへのリンクが役立つと思います: vimdoc.sourceforge.net/htmldoc/diff.html
  • git config --global diff.tool vimdiffを実行した後でも、git diffは何も変更しない場合のようにすべてを表示します。
  • 試してみてくださいgit difftool

回答

開いているファイルを編集していて、現在のファイルを閉じずに別のファイルと比較したい場合:

新しいファイルを分割画面で開きます:

垂直分割の場合:

:vs otherFile 

または水平分割:

:split otherFile 

カーソルを別の分割画面に切り替えます:

ctrl+w ctrl+w 

ファイルで「diffモード」を呼び出します:

:diffthis 

他のファイルに切り替えて「diffモード」を呼び出します:

:diffthis 

「差分モード」をオフにするには:

:diffoff 

コメント

  • 切り替えを避けるためn :windo diffthisも使用できるバッファ
  • @statox:diffoffでも機能するため、:windo diffthis:windo diffoffは、開いている2つのウィンドウの開始差分の停止を行います。または、:windo difftおよびdiffo!と省略します。
  • 1つの開いているファイルから開始する場合File1の場合、:vert diffs File2を使用して、右側の垂直分割でFile2を開き、。

回答

.gitconfigに以下の設定を配置できます現在ログインしているユーザーの%homepath%(または%userprofile%)ディレクトリにあるファイル:

[diff] tool = vimdiff 

これにより、gitbashツールがvimdiffを外部diffツールとしても使用できるようになります。

回答

以下は私のgit設定です:

https://github.com/tracyone/dotfiles/blob/master/.gitconfig

[core] editor = vim [diff] tool = vimdiff [merge] tool = vimdiff conflictstyle = diff3 [difftool] prompt = 0 

回答

NeoVimの場合、~/.gitconfig次のコマンドを使用します

git config --global merge.tool nvim git config --global mergetool.keepBackup false git config --global mergetool.nvim.cmd $"nvim -d $LOCAL $REMOTE $MERGED -c \"$wincmd w\" -c \"wincmd J\"" 

~/.gitconfigは次のようになります。

[merge] tool = nvim [mergetool] keepBackup = false [mergetool "nvim"] cmd = nvim -d $LOCAL $REMOTE $MERGED -c "$wincmd w" -c "wincmd J" 

お好みに合わせて設定する方法の詳細については、 Nvimドキュメント:diff を参照してください。

回答

3人しか座っていないvimをdifftoolとして使用するための条件。以下に簡単に説明します。

  • git difftoolの場合は、~/.gitconfigに次のように入力します。

    [core] editor = vim [diff] tool = vimdiff [merge] tool = vimdiff conflictstyle = diff3 
  • vimを2つのファイルの差分ツールとして開くには、次の操作を実行できます。

    vimdiff file1.ext file2.ext # for vim nvim -d file1.ext file2.ext # for neovim 
  • 現在アクティブなバッファ、つまり現在アクティブなタブページでウィンドウが割り当てられているすべてのバッファの差分ビューを取得するには、次の操作を実行できます。

    :windo diffthis " to get diff view :windo diffoff " to remove diff view 

詳細については、:h diff

コメントを参照してください。 h3>

  • まだ開いているファイルが1つだけの場合::vert diffs File2ファイル2と比較します。

回答

これが私が行うことです:

  • 最初のファイル(または貼り付けている場合はテキストコンテンツ)でウィンドウを開きますデータ)
  • :vnew(両方のウィンドウを並べて表示する)または:new

(窓を上にしてbオットム)。 2番目のウィンドウで開く特定のファイルがある場合は、次のようなパスを含めることができます。:vnew /path/to/secondfile.txt

  • F8を使用して、diffを有効にするカスタム関数を切り替えます。モードのオンとオフ
  • これが私の~/.vimrcにあるカスタム関数です:

    nmap <silent> <F8> :call ToggleDiff()<CR> imap <silent> <F8> <C-O>:call ToggleDiff()<CR> function ToggleDiff () if (&diff) set nodiff noscrollbind else " enable diff options in both windows; balance the sizes, too wincmd = set diff scrollbind nowrap number wincmd w set diff scrollbind nowrap number wincmd w endif endfunction 

    コメント

    • コマンド:diffthisdiffoff!したがって、’すべてのdiffオプションを自分で設定する必要はありません(たとえば、cursorbindもdiffmodeによって設定されます)

    回答

    .vimrcで、diffモード(下部)でいくつかの便利なコマンドを採用しました。通常モードで編集すると、設定がリセットされます(上部)。 .vimrcファイルに簡単にコピーできます。

    nmap <silent> <F2> :exec &nu==&rnu? "se nu!" : "se rnu!"<CR> inoremap <Esc>Oq 1 inoremap <Esc>Or 2 inoremap <Esc>Os 3 inoremap <Esc>Ot 4 inoremap <Esc>Ou 5 inoremap <Esc>Ov 6 inoremap <Esc>Ow 7 inoremap <Esc>Ox 8 inoremap <Esc>Oy 9 inoremap <Esc>Op 0 inoremap <Esc>On . inoremap <Esc>OQ / inoremap <Esc>OR * inoremap <Esc>Ol + inoremap <Esc>OS - inoremap <Esc>OM <Enter> nnoremap <Esc>OQ B " / nnoremap <Esc>OR E " * if &diff map <Esc>Oq zc " 1 close a fold map <Esc>Or <down> " 2 cursor down map <Esc>Os ]c " 3 next diff nmap <Esc>Ot <left> " 4 curosor left nnoremap <Esc>Ou <c-w>w " 5 jump to next file map <Esc>Ov <right> " 6 cursor right map <Esc>Ow zo " 7 open a fold map <Esc>Ox <up> " 8 curosor right map <Esc>Oy [c " 9 prefious diff map <Esc>Op 0 " 0 0 nmap <Esc>On . " . . nmap <Esc>OQ B " / back one word nmap <Esc>OR E " * end of word nmap <Esc>Ol dp " - diffput nmap <Esc>OS do " + diffget nmap <Esc>OM :diffupdate " Enter endif 

    もちろん、設定を変更することもできます。 ” 0 “に別のコマンドを配置する場合は、” Op “例” za “を使用して、折りたたむか展開するかを切り替えます:

     nmap <Esc>Op za " 0 0 

    ” map “と” nmap

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です