
ファイルを編集しながらリアルタイムで違いを確認したいと思います。 vimdiff
2つのファイルの違いを強調するなど、私が望むことをすることができます。
vimdiff
しかし、私を妨げる2つの欠点があります。
まず、比較のために同じファイルを独立してバッファリングすることはできませんdiff
。この問題は簡単に解決できます。編集中のファイルの一時コピーを作成し、同じファイルのバッファを独立して作成する次のシェルスクリプト(と呼ばれるdiffvim
)があります。vimdiff
#!/bin/sh
# Differentially Viming
TMPDIR=/tmp/diffvim
FILENM=$1
FILEBN=$(basename $FILENM)
if [ ! -d "$TMPDIR" ]; then
mkdir $TMPDIR
fi
cp $FILENM $TMPDIR/$FILEBN && vimdiff $FILENM $TMPDIR/$FILEBN
2番目の欠点vimdiff
は編集です。非違い同じファイルの2つのコピーのうちの1つの部分的なコンテンツは、diff
差を再計算しません。これはを呼び出して手動で実行する必要があります:diffupdate
。この再計算が自動的に行われるようにしたいと思います。より便利な方法は、シャットダウン時にトリガーすることです。入れるモードに入って入るノーマルモデル。私のファイルに次のマッピングを追加すると、.vimrc
これも簡単にできます。
inoremap <Esc> <Esc>:diffu<CR>
しかし、これは完璧な解決策ではありません。なぜなら私がそうであればノーマルモード、つまり入る必要はありません。入れるモードでは、編集が完了した後に再計算は自動的には実行されません。だから私のファイル.vimrc
に別のマッピングを追加しました。
nnoremap <Esc> :diffu<CR>
ところで今回は変なことが起きました。編集するためにファイルを開くと、一部の標準キーバインディングが失敗します。たとえば、キーh
またはキー(つまり、どちらかがファイルを開いた後に実行する最初のコマンドです)を押すと、l
次に進みます。入れるモード、同時にキーを押すか、1行jまたはG内容全体を削除するなどの操作を実行します。ただし、ファイルを開いて最初にキーを押すと、Escコマンドは正常に機能します。
何が問題なのかご存知ですか?解決策はありますか?
答え1
vimdocを見た後autocmd
、私が望むことを正確に行うソリューションを見つけたようです。
autocmd CursorMoved,CursorMovedI * diffupdate
ご提案いただいたIngo様に心から感謝します!
答え2
<Esc>
また、端末に印刷するために複数の特殊キーのキーコードにも使用されます。
過負荷は悪い考えです。特にあなたのように侵入的な場合にはさらにそうです。たとえば、別のキーを使用<Leader><Leader>
したり、イベントトリガーを定義したりします。
:autocmd InsertEnter,InsertLeave * diffupdate