プライマリエディターとしてvimを使用しています。
また、vimを使用してファイルを比較し、ファイルを変更したいと思います。簡単な変更を修正するためのdiff(diff / fix / diff / fixのサイクルであるほとんどのdiffテクニックではありません)。
さらに、ソース管理ツール/サイトで使用されるdiffツールにvimを統合する簡単な方法があります。 (私は特にgitについて考えていますが、他の人が他のソース管理ツール/サイトとの統合に興味を持っていると確信しています。)
コメント
回答
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と比較します。
:vert diffs File2
ファイル2と比較します。回答
これが私が行うことです:
- 最初のファイル(または貼り付けている場合はテキストコンテンツ)でウィンドウを開きますデータ)
-
:vnew
(両方のウィンドウを並べて表示する)または:new
(
(窓を上にしてbオットム)。 2番目のウィンドウで開く特定のファイルがある場合は、次のようなパスを含めることができます。:vnew /path/to/secondfile.txt
これが私の~/.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
コメント
- コマンド
:diffthis
とdiffoff!
したがって、’すべての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
。
:Gdiff
と:Gvdiff
が追加されます。どちらのコマンドでも、現在のバッファの差分を並べて表示できます。現在のバッファはgitによって管理されています。また、一部のファイルでマージの競合が発生した場合に、3つのウィンドウレイアウトで競合を解決することもできますvd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }
vd file1 file2
を使用します。diff
を使用してファイルが異なるかどうかを判断し、異なる場合にのみvimdiff
を開きます。そうでなければ、私はシェルにとどまります。また、Vimで構文の強調表示を無効にします。これは、差分をとるときに気が散るからです。 2つのファイルでのみ機能します。