QA@IT

screenで複数の文字コードのファイルを扱う

4241 PV

ターミナル上でscreenを使って、utf-8で保存されたファイルとeuc-jpで保存されたファイルをターミナル自体を切り替えずに扱いたいです。

環境は以下です。

  • Mac OS X Lionからsshでdebian5.0.10に接続
  • ターミナルの文字コードはutf-8
  • screenは-Uオプションを付けて起動

ctrl-a : encoding eucjp utf8
ctrl-a : encoding utf8 utf8

でscreenの文字コードを切り替え、vimでファイルを開いて

set enc=euc-jp
set enc=utf-8

でvimの文字コードをそれぞれeuc-jp, utf-8に切り替えれば、どちらのエンコードのファイルも文字化けなく開けると思ったのですが、日本語の文字が??になってしまいます。

起動時、ターミナルの文字コードもscreenの文字コードもutf-8の状態では、utf-8のファイルは文字化けすることなく開けます。
また、ターミナルの文字コードをeucに切り替えて起動し、screenの文字コードもeucjpにした場合、euc-jpのファイルは文字化けすることなく開けます。

screenかvimの設定を変更すれば、ターミナルの文字コードを切り替えずに両方の文字コードのファイルを文字化けなく扱うことはできますでしょうか?

よろしくお願いします。

  • >shyouheiさん、kefir_さん、ponko2さん
    回答ありがとうございます。
    皆さんのおっしゃるようにvimだけでどうにかしようとしても、やはりうまくいきません。
    全く同じファイルでは試せていないのですが、ローカルではうまくいっているので、またよくわからないのですが・・。
    とりあえずしばらくはターミナル2つ開いて作業してみます。ありがとうございます。
    -
  • インストール後aptでvim/screen/sshのみ入れたDebianを用意し
    Terminalをutf8でsshにて接続。LANGはja_JP.UTF-8で
    screen -Uにて起動した後「ctrl-a : encoding utf8 utf8」を
    行った上でvimにてeuc-jpのファイルを開いた後に「:e ++enc=eucjp」を
    行い文字化けせずに開けることを確認してみました
    -
  • ~/.vimrc及び~/.screenrcを別名で退避しておく等の処理を行い、設定ファイルを読み込まない状態にしても上記の手順で文字化けが発生しますでしょうか? -

回答

vim の方でなんとかするのが一番良いと思いますが、別解として

  • cocot
  • luit

などを使って変換するという手もあります。

編集 履歴 (0)

screenのencodingコマンドは、screen<->ターミナル間のエンコーディングを指定するコマンドです。
したがいまして、ターミナルを切り替えずに、というご要望の場合ですと、これは固定にするのが正解です。他の方の回答のようにvimの側で対応するのがよいと思います。

編集 履歴 (0)

vimだけで吸収できませんかね。
vim -c ":e ++enc=eucjp" euc.txt
みたいにして

編集 履歴 (0)

ターミナルとscreenの文字コードをあわせ、Vim上で下記のような操作を行えば、文字化けすることなくファイルが開けるのではないかと思います。

エンコーディングを指定してファイルを開き直す

エンコーディング指定して開き直す場合はset enc={エンコーディング}ではなく:e ++enc={エンコーディング}を指定します。

" エンコーディングeuc-jpを指定して開き直す。
:e ++enc=euc-jp

" エンコーディングshift_jisを指定して開き直す。
:e ++enc=shift_jis

" エンコーディングutf-8を指定して開き直す。
:e ++enc=utf-8

エンコーディングを指定してファイルを開く

エンコーディングを指定してファイルを開く場合は :e ++enc={エンコーディング} {ファイル名} を指定します。

" エンコーディングeuc-jpを指定して開く。
:e ++enc=euc-jp hoge.txt

" エンコーディングshift_jisを指定して開く。
:e ++enc=shift_jis hoge.txt

" エンコーディングutf-8を指定して開く。
:e ++enc=utf-8 hoge.txt

vim起動時に指定する場合は下記のようになります

vim -c 'e ++enc=utf-8' hoge.txt

文字コードの自動認識

いちいち開き直すのは面倒なので、ずんWiki - vimさんの文字コードの自動認識.vimrcに追加すると良いです。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。