2008年8月12日火曜日
viでエラーが発生して保存できない(追記あり)

えーっと、cygwinなんだけど、viで保存(:wq)時にエラーが出た。



"ファイル名" E513: write error, conversion failed (make 'fenc' empty to override)
Press ENTER or type command to continue



なんだ?

っつーか、fencってなんだよ。
:set fenc

としてみる。
fileencoding=sjis

まぁ、cygwinだからね、Shift-jisだね。

…で?

検索してみよう。

http://vim.cybermirror.org/messages/ja.po
msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
msgstr "E513: 書込みエラー, 変換失敗 (上書するには 'fenc' を空にしてください)"


あぁ、そうか。

ってことで、こうしてみる。
:set fenc=


:wq

無事終了。

再度viで開いてみる。
勿論fencを確認しても空っぽなんだけど、sjisに再設定してみると、やっぱりE513のエラーがでる。
また空にすればいいだけの話なんだけどさ。
このfenc/fileencodingって、なんのためにあるのだろう??

情報は少なそうだなぁ。
何故このファイルだけ…

ちょっと調べてみた。
エンコードを指定して開き直す方法があった。
:e ++enc=sjis

実行してみると…(sjisでなくてもshift_jisでもOKみたい)
"ファイル名" [converted][CONVERSION ERROR in line 94] 170L, 2914C


なぁにぃぃぃ!

で、94行目を見ると、"\"が"?"に置き換わっている(括弧をエスケープする目的の"\")。
ここがいけないのかと思って、"?"を"\"に置き換えるが、やはりsjisでは保存できないようだった。
(追記:当然だわな、sjisにバックスラッシュってないもんね)

エンコードを変更することで"\"が"?"に置き換えられるのと、同じ原因なのかな?
(追記:sjisでバックスラッシュを表示させようというのがそもそもの誤りに気づかない僕って…)

stupidGeek
エラーコード:E513を克服する

ここを読むと、同じくE513のエラーに苦戦した経緯と解決に至った内容が書かれている。
でも、ちょっとこのケースは違うな。



やっぱり、"\"の部分で、他の文字コードと誤認されているのかな?
(追記:だからそろそろ気づけ、俺!)

vi abc

で、テキトーに「aaaaa」と書いて保存(:w)。
正常、正常。
:set fenc

でファイルエンコードを確認する。
 fileencoding=

空っぽ。
一旦閉じて(:q)、再度開く。
vi abc

ファイルエンコードを確認する。
:set fenc

 fileencoding=sjis

よく考えたら~/.vimrcでfileencodingをsjisに設定してるわ。
で上書き保存・終了(:wq)すると、正常に終われる。
再度開いて(vi)、問題の"\"を書いて、保存(:w)すると…
"abc" E513: write error, conversion failed (make 'fenc' empty to override)
Press ENTER or type command to continue

そういうことですか。
エンコードがshift_jisの場合には"\"がエラーになるのね。
"\"を使うなら、fencは削除しないといけないか…
(追記:というかutf-8とかeucなら大丈夫なんだろうな)

根本的な解決にはなってないな。


ちなみに、これらの作業ってPoderosaから実行してたんだけど、これをDOS(インストール時に作成されるショートカット)から実行すると
"ファイル名" E513: 書込みエラー, 変換失敗 (上書するには 'fenc' を空にしてください)
続けるにはENTERを押すかコマンドを入力してください

と、日本語でエラーが表示される。


(追記 - 2010/03/02)
久しぶりにコマンドプロンプトでvimを使ったが、エラーにならなかった。
「何故だ!」と思って、TeraTermのcyglaunchとPoderosaで試したけど、問題なく…

ふと.vimrcを見てみたら、こう設定されてた。
set encoding=japan
set fileencodings=sjis,utf-8,iso-2022-jp,euc-jp
set nu
set tabstop=4

fileencodingsの設定が変わってる!?

やべ、全然記憶にないわ。
とりあえずこうやって複数指定すれば回避できるんだな。
修正したときに、ここにも追記すべきだったな。



0 コメント | コメントを書く | コメントの表示
2007年8月20日月曜日
cal

やっと…

やっとCygwinでcalが使えるようになった。
Cygwinを入れた目的の数%はcalを使いたかったってのもある…ってゆーのは大袈裟だけど。

「util-linux」というパッケージを入れなきゃならんとは、気が付くかよ。

JFのサイトだけど、一応参考までにリンクを。

Util-linux
http://www.linux.or.jp/JF/JFdocs/LFS-BOOK/appendixa/util-linux.html


元記事
HOMEGROWN | cal
http://homegrown.jugem.cc/?eid=241



0 コメント | コメントを書く | コメントの表示
Cygwin 環境設定(3) - lessの文字化け

最初、全然気がつかなかったんだけど、そのままじゃ less が文字化けするのね(接続したサーバによっては新しいものが取得できるかもしれないけど)。

色々検索すると、どうやら Cygwin JE で日本語対応の less が入手できるらしい。
このURLにアクセスして、
http://cygwin-je.sourceforge.jp/cygwin_je/release/less/
ブツをダウンロードする、と。
僕が見たときは「less-358_iso254-3.tar.tar」だったけど、今見たら「less-358_iso254-3.tar.bz2」になってるね。なんでだろ?

まぁ、ダウンロードしたtar(tar.bz2)を展開して… 「/」に置いて展開したら、適当なディレクトリに入れてくれたので、特に気にすることもなかったんだけど。一応、「/tmp」かどっかで試した方がいいかもね。

これでCygwinからは less も問題なく使えるんだけど…


(追記)
結局は、「setup.exe」の「other site」に「http://cygwin-je.sourceforge.jp/cygwin_je/」を放り込んどきゃよかったって話かな?

参考URL
Using Cygwin. Compiled package
http://sohda.net/cygwin/#compiled


(追記2)
ためしにコマンドプロンプトでlessを使ってみた。
コマンドプロンプトから、例えば

dir | less

としてみると…
<83>

とかがズラッと。

そもそもコマンドプロンプトで使うなよって話なんだろうけど、Cygwinはちょっと起動が遅いし、Poderosaのようなのを起動させるのもなぁ…と思うと、「win+r」で「cmd(.exe)」を叩いた方が早いなぁ、とか思っちゃう。

基本的にはmore派だからいいんだけど、問題解決はしておきたい。

…と、よく考えてみたら、これってHeartache Reborn: lessの不思議で書いた内容と同じじゃんか。

直接入力するのなら、
dir | less -r

で解決する問題だった。
やっぱりWindowsにもaliasが欲しいけど…

元記事
HOMEGROWN | Cygwin 環境設定(3) - lessの文字化け
http://homegrown.jugem.cc/?eid=214



0 コメント | コメントを書く | コメントの表示
Cygwin 環境設定(2) - viで日本語を使う

ようやく、Cygwinのviで日本語を使う方法が判明。
ホームディレクトリに .vimrc を作って…

set encodin=japan
set fileencodings=sjis


を書き込む。

マァ、フツーに.vimrcだったね。
これですっきりした…

元記事
HOMEGROWN | Cygwin 環境設定(2) - viで日本語を使う
http://homegrown.jugem.cc/?eid=213



0 コメント | コメントを書く | コメントの表示
Cygwinの環境設定

一応、参考にさせてもらったサイト
etc #020 ≪cygwinで日本語入力をする方法≫
http://www.nurs.or.jp/~ppoy/access/etc/etc020.html
ログインユーザのホームディレクトリにある「.inputrc」を編集します(無い場合は作成)。
以下の内容を追記する。

set kanji-code sjis
set convert-meta off
set meta-flag on
set
output-meta on

ま、viが入っていれば、立ち上げたCygwinから「vi .inputrc」で開けばいい。
これで日本語の入力ができるらしい。

…が、日本語名で「touch」しても、「ls」で文字化けしてる。

でもって、今度は表示の方。
これは「.bashrc」を編集する。
export JLESSCHARSET=japanese-sjis
alias ls='ls --show-control-chars'

※JLESSCHARSETのパラメタって、よく判らないね。
「source .bashrc」で再度読み込ませてもいいんだろうけど、一旦ウィンドウを閉じて、Cygwinを再度起動させた。
…と、正常に日本語が扱えるのを確認できました。
meta-flagを忘れてたけど、正常に動いたなぁ

続いて参考にさせていただいたのは、ここ↓
【特集】Windowsユーザーへ贈るUnixへの架け橋 - Cygwinを使いこなそう (MYCOMジャーナル)
http://journal.mycom.co.jp/special/2002/cygwin/menu.html
ここの中に、Cygwinを起動しなくても、UNIXコマンドを使う方法が載ってた。
【特集】Windowsユーザーへ贈るUnixへの架け橋 - Cygwinを使いこなそう (5) 環境設定と簡単な使用方法(1) (MYCOMジャーナル)
http://journal.mycom.co.jp/special/2002/cygwin/004.html
一言で言うなら、「PATHを通す」ね。
「マイコンピュータ」→「プロパティ」→「詳細」→「環境変数」で、ユーザかシステムの環境変数の「PATH」に「c:\cygwin\bin」を追加するだけ。
こちらはUNIX系OSと違って、読み込み直す必要はないので、「ファイル名を指定して実行(win+r)」あたりからプロンプトを起動させて、「ls」とかしてみると…

日本語表示できねーじゃんか!
よく考えてみれば、コマンドプロンプトからのlsはエイリアス設定が効いてない。
Cygwinからだとlsはls --show-control-charsに置き換わるワケだけど、コマンドプロンプトからじゃ、lsはlsのまま。
試しにls --show-control-charsを実行すると正常に日本語が表示される。
んんー、どうしよう。
中途半端な。

元記事
HOMEGROWN | Cygwin 環境設定
http://homegrown.jugem.cc/?eid=205



0 コメント | コメントを書く | コメントの表示
Template Design: © 2007 Envy Inc.