2008年01月30日

LinuxでUTF-8 locale のときの PUTTYでの w3m/navi2ch

[ カテゴリ : memo - CUI環境 ]

1コ前の記事の件。


実は、PUTTY の UTF-8 (CJKじゃない奴)設定+ ja_JP.UTF-8 な Linux + w3m/navi2ch は解決していなくて。

単に CJK 設定にしてしまうと、w3m は平和なんだが
navi2ch で記号とかの幅がおかしかった(☆とか罫線とか)

解決するのに必要だった情報

diary of a madman (macks氏)
http://d.hatena.ne.jp/macks/20060930#p1
http://d.hatena.ne.jp/macks/20061001

ということで、

ambwidth patch for w3m
http://www.j10n.org/files/w3m-cvs-1.914-ambwidth.patch

を w3m にあてて、
Use double width for some Unicode characters" を有効にして
PUTTY の設定は UTF-8 カッコなしにしてみた。

うちは GNU screen 使ってないから他の問題なし。

で、w3m がよくなったし、emacs22 + navi2ch も割と平和なんだが、
今この文章を打っていて、1つ行業に☆と★のようにCJK ambiguous characterが2つあると
カーソル移動時に表示がおかしくなる。

中身は適切に動作してるので表示だけ。
C-a RET C-h とかして再描画させるとまともな表示になるw

emacs 22 だと utf-translate-cjk-mode というのがあるらしいが、使った方がいいんだろうか。


まだまだ謎は残っている。めんどいなー。



さらに追記。

utf-translate-cjk-set-unicode-range でぐぐって、


(utf-translate-cjk-set-unicode-range
'((#x00a2 . #x00a3) (#x00a7 . #x00a8) (#x00ac . #x00ac)
(#x00b0 . #x00b1) (#x00b4 . #x00b4) (#x00b6 . #x00b6)
(#x00d7 . #x00d7) (#x00f7 . #x00f7) (#x0370 . #x03ff)
(#x0400 . #x04ff) (#x2000 . #x206f) (#x2100 . #x214f)
(#x2103 . #x2103) (#x212b . #x212b) (#x2190 . #x21ff)
(#x2200 . #x22ff) (#x2300 . #x23ff) (#x2500 . #x257f)
(#x25a0 . #x25ff) (#x2600 . #x26ff) (#x2e80 . #xd7a3)
(#xff00 . #xffef)))

と定義してこれで適用したらなんかうまくいった。
emacs22 のみかけの問題も解消。

今のところ認識している問題は無い。

投稿者 JK : 15:33 | トラックバック

2007年10月31日

Windows から UTF-8な Linux に ssh

[ カテゴリ : memo - CUI環境 ]

08/1/30: PUTTY 続報あり。
Vine4.1 上の navi2ch を Windows の TeraTerm で使っていたら、JIS第三水準漢字の「つなぐ」が化けたりしたので、UTF8世界に引っ越そうと。



まず、Vine で $ locale -a して、 ja_JP.UTF-8 がいるのを確認。
.bashrc だの .bash_profile だので

export LANG=ja_JP.UTF-8 してやることにした。
これだけで ls -l の「合計」とかが UTF8 になってる。楽なもんだ。


emacs は emacs22 を apt で入れるだけ。MuleUCSとかも要らない。 (.emacs.el の内容が悪いと調整が必要だが)

w3m は -O utf8 してもいいし、起動して o でオプション設定してもいいんじゃないかと。
lv はそのまま動いた。

vi (vim)は、 vi --help だと適切に表示されるのに、いざ utf8 のファイルを開いたらうまくいかない。
.vimrc の書き方とかの問題かな。


Windows 側の端末は UTF8 TeraTerm でいけるかと思ったのに主に罫線とかの表示がキツい。 (罫線だけじゃなく w3m -B したときの li タグの・もキツい)

TeraTerm の FAQにて


Q. Fedora Core 2でntsysvコマンドを使うと、罫線が正しく描画されません。
A. Fedora Core 2(Linux)においてUTF-8エンコーディング上で、ntsysvコマンドを使うと、
罫線データがDEC特殊フォントではなく、2バイト罫線(U+2500 ~ U+2542)として送られ
てきます。これはFedora Coreの問題です。ロケールを英語にすると(LANG=C)、罫線データ
がDEC特殊フォントとして送られてきます。なお、Puttyでは2バイト罫線を強制的に半角
表示させているようです。

ですって。たぶん、これ関係でうまくいかない模様。
なので、PUTTYjp に乗り換え。


追記:2008/1/30 ambwidth patch for w3m (http://www.j10n.org/files/w3m-cvs-1.914-ambwidth.patch)を w3m に当てておいて、 PUTTY では UTF-8(CJK) を使うのがベストのようです。

以下は古い記述。


UTF8 と UTF8(CJK)というのがあるが、UTF8 にする。
(CJK)にすると、TeraTerm 同様にフォント幅が乱れる(というか適切にやってくるというか)。
CJKのフォント幅どったらという項目にもチェックを入れない。
これで罫線関係はok。


あとは、黒背景に青色で表示されると見づらいのでこれも PUTTY で調整。
適当な UTF8 対応フォントを使えば、 navi2ch で JIS第三水準漢字の「つなぐ」とか出てきても大丈夫と。


w3m -B での表示等も大丈夫と。


vi の設定わからん・・・・

rpm -qi の表示は乱れるので、 | nkf --utf8 してやる必要がある。


あとは何だろ。少しずつ解決していこう。

投稿者 JK : 18:23 | コメント (1)

2007年08月10日

cmd.exe で tab補完

[ カテゴリ : memo - CUI環境 ]
[ カテゴリ : ★Windows ]

HKEY_CURRENT_USER\Software\Microsoft\Command Processorの
「CompletionChar」(DWORD) = 9 にすれば、cmd.exe で tab 補完できる。

7年もの間知らなかった。。。

投稿者 JK : 14:51 | トラックバック

2007年04月02日

emacs の初期化ファイル内でy/n形式で処理選択する

[ カテゴリ : memo - CUI環境 ]

(require 'un-define)
(require 'jisx0213)
てのを emacs の初期化ファイルに入れてある。
これを入れないと UTF8 やら jisx0213 やらで具合悪いのである。
しかし、常時入れておくと起動が遅くてしょうがない。

必要なときだけこれを実行するような elisp が書けるだろうと調べてみた。


参考サイト:http://www.fan.gr.jp/~ring/doc/elisp_20/elisp_20.html#SEC276


(y-or-n-p "Enable MuleUCS?")

ってのを走らせるとミニバッファで質問されて y なら t, n なら nil が帰る。


では、t のときに~を実行したい、なんてときはどうするか。
俺がやりたいのは、上記で t のとき
(require 'un-define)
(require 'jisx0213)
したいわけだ。

で、perl でいう open(FD,$filename) or die; みたいなのを思い出しながら、and/or を使うといいみたい。


and の評価は全て真なら真だが、途中で偽が出たらその先は見なくて良い。
つまり、真であるうちは次次と評価していく。
y と答えたら次の項に行き、n と答えたら(全体で nil であることが確定するので)その先は評価されないって寸法だ。

(and (y-or-n-p "Enable MuleUCS?") (require 'un-define) (require 'jisx0213) (message "OK"))

で、どうよ?
途中の require がコケたらどうなるかわからんが(追記1参照)、n を選択したらすぐ nil が帰るし、
y を選択したら時間がかかる初期化ののち、バッファに OK と出た。
大丈夫だべ。

以上。

追記1:
(require 'un-define) を実行して成功すると un-define が評価値として帰る。
(require 'un-definehogex) のようなことをするとエラーで止まって backtrace がでた。
ま、大丈夫でしょ。


追記2:
以下はあまり使えない情報だが上記を調べる前に調べたことのメモ

http://www.bookshelf.jp/texi/elisp-manual-20-2.5-jp/elisp_21.html#SEC284
あたりから interactive に関する情報を仕入れつつ・・・入力を受け容れる elisp の例

(interactive "bPlease select a buffer: ")

入力(TAB補完可能)で選択したバッファ名が帰る。
文字列の1文字目はコード文字という。
コード文字 b は「既存バッファ選択」を意味する。
コード文字に続く HOGEHOGE buffer: プロンプト文字列。

ちなみに*scratch*でこういうの書いて閉じ括弧の後ろで M-x E してやれば
実際に質問されて、入力したあと選択結果が表示される。

(interactive "DSome directory name, please: ")
(interactive "fSome existing file name, please: ")
(interactive "FSome file name, please: ")

なんてのも、できる。それぞれディレクトリ選択、既存ファイル選択、ファイル名入力だ。

きっと、Yes/No を質問するコード文字ってのがあるのだろう。。。。ないの?w
(この後、冒頭の URL の先で答え発見)

投稿者 JK : 11:58 | トラックバック

2007年03月27日

Vine4.1 の console の解像度と日本語

[ カテゴリ : memo - CUI環境 ]

Vine4.1 にしてみた。

# apt-get update

# apt-get install apt
# apt-get dist-upgrade

大したことおこらなかった。

どっこい、以前に development version の kernel 入れて以降
develpment versionがどうとかいう記述のコンソールのままで、
しかもなんか日本語通らない。


調べたら、/boot/grub/menu.lst (grub.confかも)で

kernel /vmlinuz ro root=LABEL=/ resume2=swap:/dev/hdc2 vga=0x317

とかの vga= の値で解像度やら日本語通るかどうかとか決まってる様子。
0x314 だかだと develpment うんたらになるらしい。

vga=0x301 (640x480x8bpp)
vga=0x303 (800x600x8bpp)
vga=0x317 (1024x768x16bpp)

らしいです。Vine3.x な人は lilo の設定になるようなので適宜ぐぐってください。

と思ったら・・・・・

2007/3/30追記

新しいkernel 入れたら、また development version 出るようになった(汗
今度は vga=0x0314 (0x0317にする前の) にしたら直った。

どゆこと?

投稿者 JK : 14:35 | トラックバック

2006年05月29日

navi2ch で書き込めなくなった

[ カテゴリ : memo - CUI環境 ]

Navi2ch for Emacs (Part 16)

252 :名無しさん@お腹いっぱい。:2006/05/27(土) 20:26:10
ほれ

Index: navi2ch-multibbs.el
@@ -432,2 +435,3 @@ (defun navi2ch-2ch-send-message
(cons "time" time)
+ (cons "hana" "mogera")
(cons "MESSAGE" message)




つーわけで、tarball 拾ってきて vi で .el 編集してから
configure して make して make install で終了。

投稿者 JK : 11:28 | トラックバック

2006年03月28日

Win でコマンドラインで dial up

[ カテゴリ : memo - CUI環境 ]

rasdial /?

すれば使用法が解る。エントリ名ってのはネットワークとダイヤルアップ接続の中のアイコン名。

投稿者 JK : 10:48 | トラックバック

2006年02月01日

cygwin で日本語(SJIS)環境

[ カテゴリ : memo - CUI環境 ]

SHIFT-JIS にしたいわけだが。

.inputrc で
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on

(だけだとEUCは入力できるけど~という状態。bash 取り替えないとだ。)

.bashrc で
alias ls="ls -F --color=auto --show-control-chars"
export JLESSCHARSET=japanese-sjis
export LANG=ja_JP.sjis

(といいつつ、日本語 less 入れてないけど。)

.emacs とかで
(set-default-coding-systems 'japanese-shift-jis-unix)
(set-buffer-file-coding-system 'japanese-shift-jis-unix)
(set-terminal-coding-system 'japanese-shift-jis-unix)
(set-keyboard-coding-system 'japanese-shift-jis-unix)

.vimrc で
set encoding=sjis
set fileencodings=iso-2022-jp,sjis,utf-8,euc

さらに、コマンドメッセージの対応として
http://www.sixnine.net/cygwin/cygwin-doc/japo.html
ってのが。 nkf が必要って書いてあるが、他に、 gettext , gettext-devel, 関連ライブラリも必要。

あとは、SHIFT-JIS をコマンドラインで使える日本語 bash が欲しいところだが(ls とかのパラメータがSJISなので)、Cygwin JE の奴がなんかヘンなので、宿題。

投稿者 JK : 00:37 | トラックバック

2005年11月11日

w3m で MT に投稿。

[ カテゴリ : memo - CUI環境 ]

コンソールな w3m-0.5.1 では投稿はできるが、再構築が出来ない。
なので、再構築用スクリプトを用意してしまう。

http://code.appnel.com/mt-apps

から、mt-rebuild のアーカイブ落として、 mt-rebuild.pl を、MT のディレクトリに置いて permission を 700 とかにして、あとはそのディレクトリにcd して

$ ./mt-rebuild.pl -all

とかやればいい。ラクなもんだ

投稿者 JK : 11:22 | トラックバック

w3m のフォーム(TEXTAREA) で改行を入力したい。

[ カテゴリ : memo - CUI環境 ]

Vine の w3m-0.5.1-0vl5 の srpm とってきて、w3m-0.5.1.tar.gz 取り出して、
自分でソースいじってなおした。
w3m.spec からやろうとすると、X でインライン画像表示対応とかで面倒なん
で、コンソールでしか使わないよう、自分でソースをいじると。


http://www.sic.med.tohoku.ac.jp/~satodai/w3m-dev/200410.month/4110.html

1. srpm の入手
$ apt-get source w3m
get して rpm -i してくれるぽ。


2.ソースをいじる
~/rpm/SOURCES の中に、 w3m-0.5.1.tar.gz があるので、

$ cd ~/rpm/SOURCES
$ tar zxvf w3m-0.5.1.tar.gz
$ cd w3m-0.5.1

して、 parsetagx.c を編集。
180行目あたりに if - else if があり、
if 内、 else if 内それぞれに
if (*q != '\n')
  Strcat_char(value, *q);

ってあるので、この if (*q != '\n') をコメントアウトなり行削除なりして、常に Strcat_char が実行されるようにする。


3.ビルド(2と同じディレクトリで)
$ ./configure --prefix=/usr
$ make

あとは、make install するもよし、 Vine の /usr/bin/w3m を置き換えるもよし。

投稿者 JK : 11:11 | トラックバック

2005年06月06日

emacs の自動改行がうっとおしいので切り替えたい

[ カテゴリ : memo - CUI環境 ]

Vine の .emacs.el を参考にして、 cygwin の .emacs を書いているので、Text-mode での auto-fill-mode がオンになっていて、結構面倒だった。


auto-fill モードで起動しちゃってたら
M-x auto-fill-mode
でトグルできる。


あらかじめ .emacs あたりに書くなら
(setq text-mode-hook 'turn-off-auto-fill)

もちろん、別途 'turn-on-auto-fill 定義があればコメントアウト(Vine のはある)

text-mode 以外でも同様にいつでも off にしたい場合はどうすりゃいいのか必要になったら調べてみたい。

投稿者 JK : 11:07 | コメント (3) | トラックバック

2005年05月31日

w3m で機種依存文字

[ カテゴリ : memo - CUI環境 ]

まぁ、機種依存文字っつーか、
JIS X 0213:2000(2000JIS)
は立派に JIS 規格内なわけだが。


w3m 起動して o おすとオプション画面で、その中で
JIS X 0213:2000(2000JIS)を使うかどうかって設定があるので、Yes にすればよし。


と思いきや、sjis モードじゃないとダメぽい。euc だとうまくいかんかった。

投稿者 JK : 20:04 | トラックバック

2005年04月06日

CYGWIN-JE の vim

[ カテゴリ : memo - CUI環境 ]

Cygwin JE の vim をインストールしたら、cyggdk-なんとか.dll が見つからないというエラーが出る。
Cygwin (JEじゃないの)から gtk2-x11-runtime をインストールすればよし。

投稿者 JK : 14:37 | トラックバック

2005年03月14日

CYGWIN で w3m を build する

[ カテゴリ : memo - CUI環境 ]

後になってわかったが、cygwin-je で入れればいいみたい(アホか・・・)
CYGWIN の setup.exe で、URLとして
http://cygwin-je.sourceforge.jp/cygwin_je
を与えれば、w3m パッケージいれられる。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
テキストブラウザである w3m の build。 CYGWIN の場合。
gcc とかは、CYGWIN の setup.exe あたりで入れてしまう。

で、gc が setup.exe では入らないので、gc をこさえてから、w3m をこさえることに。
でも自分はいつも gc を入れるのを忘れて無駄に時間を使うのでメモっておこう。

GC http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/
w3m http://w3m.sourceforge.net/

からソースの ナントカ.tar.gz ファイル (tarball) をひろってくる。

どっちも tar zxvf で解凍してできたディレクトリで
$ ./configure
$ make
$ make install

でおしまい・・・・・と思いきや!
w3m の make で error が出る。

> mv: cannot stat `t-ja.gmo': No such file or directory

しかし、この時点で w3m.exe は完成している。
make install すると、やっぱり同じようなエラーで終わるが
/usr/local/bin/w3m.exe は install されている。

使うと・・・・動く。いいんだろうか、これで。

投稿者 JK : 18:54 | コメント (1)