2019年の初記事ですね。
今年もたぶんこんなのが多くなりますがよろしくお願いいたします。
というわけで今日の話です。
環境
- Windows 8.1(今時めずらしい)
- Git for Windows 2.20.1
事の発端
とある作業中、ステージング前の差分確認のため git diff {%filename%}
を打ってみたところ、下記のようなメッセージが表示されました。
$ git diff
nkf -s | LESSCHARSET=utf-8 less: nkf: command not found
less ってキーワードから察するにページャー動作付近の問題に見えます。ただ、 less の前にパイプでつながっている nkf のコマンドがなくて今回はエラーになっているようです。
そもそも nkf ってなに?
Network Kanji Filter - Wikipedia
Network Kanji Filter(またはnkf)は異なる文字コード間の変換を行うソフトウェア、そのAPI。
ネットワーク漢字フィルターの頭文字をとって nkf らしいです。まさかの日本語( ゚Д゚)まあ細かいことはよくわかりませんが文字コード変換周りに使うソフトってことですかね(雑
パス確認
一応確認してみます
$ which nkf
which: no nkf in (/*****)
実行ファイル確認
こちらも念のため確認します。"Program Files" をコマンドに含めるとスペースのせいで面倒w
$ ls /c/Program\ Files/Git/bin/ | grep nkf
$ ls /c/Program\ Files/Git/usr/bin/ | grep nkf
パスも通ってないし、実行ファイルもないということで nkf をインストールすることにします。
nkf のインストール
Mac と Windows に nkf をインストールする - Corredor
ネット上にいろいろ記事はありますが個人的に上記エントリが非常にわかりやすかったです。
windows 用は tar コマンドで解凍するように記載がありますが、windows の場合は環境によって tar コマンド使えない場合もあるので、その場合はふつうに 7-Zip などの解凍ソフトでOKです。余談ですが7-zipはけっこう優秀で個人的には気に入ってます。
インストールがおわったら
再度 git diff してみます。
$ git diff
diff --git a/lib/********************.rb b/lib/********************.rb
index 911f53edf..87c1ddaf4 100644
--- a/lib/********************.rb
+++ b/lib/********************.rb
なおりましたね!
なんだったのか
今回、問題が起きた端末は実は人のおさがりで、Gitのバージョンも1.8系で古い状態でした。Git for Windows を最新に上げたり、もろもろ環境の作り直しをしていたのですが、git のページャーの設定は古いままだったのかもしれません。(推定ですが。)
めったにないケースだとおもいますが、もし似たような事象を見かけたら参考にしてみてください。