環境
Mac OS X 10.4.10 (PPC)
BathyScaphe 1.5 (110)
OnMyCommand 1.8.0
BathyScaphe の選択文字列を OnMyCommand の オブジェクト __OBJ_TEXT__ で取得してテキストファイルに書き出すと改行が反映されない問題について。
__OBJ_TEXT__ を % で渡す設定にして
echo "__OBJ_TEXT__" | ruby -ruri -n -e 'print URI.unescape($_)' > test.txt
などとしてもよいようですが、OMCEdit の編集ウインドウで "その他" タブを選び、"__OBJ_TEXT__ の改行コード" という項目を "Unix(LF) を Mac(CR) に変換" に設定すると
echo __OBJ_TEXT__ > test.txt
を実行するだけで改行が反映されるようになります。
しかしちょっと困ったことが。
echo が文字列の最後に改行を付加するので
「改行が CR に変換された __OBJ_TEXT__」+ 「echo が付加した LF 改行」
という形となり、選択部分の改行は CR なのに 最後だけ LF というヘンテコな内容になってしまうのです。
書き出したファイルはどうせ自分しか使わないんだからそのくらいどうってことないような気もしますが、選択部分が改行で終わっていた場合
文字列(CR)
文字列(CR)
文字列(CR+LF)
と、最後だけ Windows 改行になってしまい、テキストエディタで開いたときに改行が一つ分無視されることになります。
これはなんとなく嫌ですね。
なので
echo -n __OBJ_TEXT__ > test.txt
として echo の改行を抑止するか、または tr で改行コードを CR か LF に統一してしまうのがよいです。
LF で統一
echo __OBJ_TEXT__ | tr '\r' '\n' > test.txt
CR で統一
echo __OBJ_TEXT__ | tr '\n' '\r' > test.txt
ファイルに >> で追記する場合を考えると最後は必ず改行で終わっている方がよいので、echo -n より tr がおすすめですか。
