Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

余計な差分“No newline at end of file”を何とかしたい

$
0
0

とあるファイルをVimで修正して保存したら、元のファイルに改行コード(\n)がなくて
Git等で余計な差分が出て困る場合の対処方法

事前にファイル末尾に\nがないやつを探し出して、一括修正する。
例えばカレント配下の*.jspなら

find . -type f -name '*.jsp' -exec sh -c "tail -1 {} | xxd -p | tail -1 | grep -q -v 0a$"';' -exec sh -c "echo >> {}"';'
やっていること
  • find -execで見つかったファイルに対して処理。ここではsh -cでダブルクォート内部をシェル実行。’;’-execの終端子。
  • tail -1で最終行のみ出力
  • xxd -pで素のhex dump
  • grep -q -v 0a$でサイレントモードで末尾に0a(=\n)が無い物を探す。
  • 見つかった末尾改行がないファイルに対してecho >>して改行を追記。-execは連鎖の絞り込みが効く模様。

もっとエレガントな方法はないものか・・・

参考

objective c - How to fix “No newline at end of file” compiler warning for lots of files - Stack Overflow


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>