vim を使用して出力を表示したいと思いますgit diff
。
私は Windows 8 を実行しており、vim 7.4 をインストールしています。便宜上、環境変数 VIMDIR を Vim のインストール ディレクトリ ( set VIMDIR=C:\Program Files (x86)\Vim\vim74
) に設定し、このディレクトリを %PATH% に追加しました。
%VIMDIR%\macros\less.bat
Vimには、ページャとして使用できるスクリプトが付属しており、less.bat file.txt
または はdir | less.bat
vim ベースのページャに出力を表示します。私はこれを定期的に使用していますが、問題なく動作します。また、 を実行するときに実行されるように、Git のページャとして、Git の less.exe ではなく vim を使用したいのですgit diff
が、問題が発生しています。
less.bat
vimのバッチファイルを使ってみました
%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 つのオプションがあります。
Git の diff 強調表示を無効にします (コマンドライン引数
--no-color
ですが、 を介して構成を解除することもできます)。次に、Vim が正しいファイルタイプ ( ; コマンドラインで を介して渡すことができます)git config
を使用していることを確認する必要があります。:set filetype=diff
-c {cmd}
VimにANSIエスケープシーケンスを理解させて強調表示させる。AnsiEsc.vim プラグインこれができます。
最初のアプローチをお勧めします。