vim を使用して出力を表示したいと思いますgit diff。

vim を使用して出力を表示したいと思いますgit diff。

vim を使用して出力を表示したいと思いますgit diff

私は Windows 8 を実行しており、vim 7.4 をインストールしています。便宜上、環境変数 VIMDIR を Vim のインストール ディレクトリ ( set VIMDIR=C:\Program Files (x86)\Vim\vim74) に設定し、このディレクトリを %PATH% に追加しました。

%VIMDIR%\macros\less.batVimには、ページャとして使用できるスクリプトが付属しており、less.bat file.txtまたは はdir | less.batvim ベースのページャに出力を表示します。私はこれを定期的に使用していますが、問題なく動作します。また、 を実行するときに実行されるように、Git のページャとして、Git の less.exe ではなく vim を使用したいのですgit diffが、問題が発生しています。

less.batvimのバッチファイルを使ってみました

%GIT_PAGER%を に設定して%VIMDIR%\macros\less.batを実行するとgit diff、エラー メッセージが表示されます。

C:\Program Files (x86)\Vim\vim74\macros\less.bat: -c: line 0: syntax error near unexpected token `('
C:\Program Files (x86)\Vim\vim74\macros\less.bat: -c: line 0: `C:\Program Files (x86)\Vim\vim74\macros\less.bat'

これは、git が MSYS プログラムであり、Windows スタイルのC:\whateverパスを処理できないためだと考えています。

vimのlessマクロを直接呼び出すことも試しました

それでうまくいきません。次に試したのは、そのファイルに基づいて何かを調べless.batて設定することでした。そのファイルには、vim に stdin から読み取るように指示する次の行があります。%GIT_PAGER%

vim --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -

私は%GIT_PAGER%これを MSYS スタイルのパスを使用する修正バージョンに設定しました:

set GIT_PAGER="/c/Program Files (x86)/Vim/vim74/vim.exe" --cmd "let no_plugin_maps = 1" -c "runtime! macros/less.vim" -

これで vim は正常に起動しました。しかし、まだ問題があります。色が機能せず、画面全体にエスケープ文字が散らばっています。通常、構文の強調表示は問題なく機能することに注意してください。次のコマンドを実行すると、生成した diff ファイルが色付きで表示されます。

git diff > test.diff
less.bat test.diff

ただし、単に呼び出してコンソールに差分を表示するようにgit diffすると、次のように表示されます。%GIT_PAGER%

スクリーンショット

他に何を試すことができますか?

他に何を試せばいいのかわかりません。Windows で git diff を表示するために vim を使用している人はいますか? どのようにしていますか?

ご協力いただきありがとうございます。

答え1

残る問題は、git diff依然として diff 出力が色付きで強調表示され (ANSI エスケープ シーケンスとして)、ページャー (つまり Vim) がそれを正しく表示することを期待していることです。しかし、Vim には独自の構文強調表示 (これも diff 用) があり、シーケンスを理解できないため、醜いものとして表示されます^[[m。2 つのオプションがあります。

  1. Git の diff 強調表示を無効にします (コマンドライン引数--no-colorですが、 を介して構成を解除することもできます)。次に、Vim が正しいファイルタイプ ( ; コマンドラインで を介して渡すことができます)git configを使用していることを確認する必要があります。:set filetype=diff-c {cmd}

  2. VimにANSIエスケープシーケンスを理解させて強調表示させる。AnsiEsc.vim プラグインこれができます。

最初のアプローチをお勧めします。

関連情報