新発見

id:naoyaさんの2005/12/23の記事「GNU screen いろいろまとめ。」を見て、おおこれは面白そうだなと。んで急遽ローカル環境にcygwin+screen+zshインスコ

なんだかよく分からないエラーにぶち当たりcygwin再インストールの憂き目に会いつつもどうにかこうにかセットアップ完了。

.screenrcに設定してみた内容はこんな感じ。

bind 'U' eval "encoding utf8" "stuff 'export LANG=ja_JP.UTF-8\012'"
bind 'E' eval "encoding euc"  "stuff 'export LANG=ja_JP.EUC-JP\012'"
bind 'J' eval "encoding sjis"  "stuff 'export LANG=ja_JP.SJIS\012'"

escape ^z^z
defencoding sjis
#defutf8 on

vbell off
defhstatus I^En:^EtI
shell -$SHELL
startup_message off
autodetach on

hardstatus ignore "%w | %h"
hardstatus alwayslastline "[%02c] %`%-w%{=b mw}%n %t%{-}%+w"

defscrollback 3000

screenをいくつも立ち上げ、windowに名前をつけ、各々がsshで別サーバに接続。window分割しながら、tabでバッファを移動する。シビレます。

ただ、いくつか問題が。
cygwinインストールしたローカル環境(Win)の文字コードsjisで、sshでつなぐ先のサーバの文字コードUTF-8だったりした時に、viで編集しようとすると激しく文字化けします。ちょっと厄介。


流れはこんな感じなのですが、
[1]cygwin(ローカル:sjis) -> [2]screen(ローカル:sjis) -> [3]ssh(リモート:utf8)

  • [1]でviでsjisのファイル編集は可能
  • [2]でviでsjisファイルが文字化け
  • [3]でviでutf8ファイルが文字化け

といった具合になっています。

ちなみにローカルの.vimrcの中身は

set encoding=japan
set fileencodings=iso-2002-jp,utf-8,euc-jp,cp932
set number
highlight WastedSpace ctermbg=6
match WastedSpace /\t\|\s\+$\|!!/

こんな感じ。

今は、.screenrcのdefencodingをsjisにしているので、[3]で文字化けするのは仕方ないかな*1と思うのですが、[2]で化けるのは何故なんだろう?

*1:リモートの.vimrcも修正する必要あるよなぁ