ホストにあるUNIXに接続して、
プログラムを書いたりしたいのですが、
viエディタを使ってすると日本語入力がうまくいきません。

telnetで接続して、
viエディタを起動させて、
日本語を入力すると文字化けを起こしてしまいます。
receiveの設定もtransmitのコード設定も間違っていないはずなんですが、
ほかに原因がわかりません。

muleを使うっていう方法もあるのですが、
個人的にviが使いやすいので、なんとかviでやりたいです。

ほかに原因が分かる方教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

> unixのバージョンはSunOS vega 4.1.4 1 sum4mで、


> viのバージョンはSVR3.1でした。

ちょっと古めなんですね。vi 自体が日本語を扱えない可能性あり。
でも、

> % echo あああ と入力すると’あああ’の部分が消えてしまいます。

とあるので、vi だけの問題ではないかも。

環境変数 LANG と TERM がきちんとなっているか確認してみてください。

あと、stty の設定があっているかどうかも。私は普段このあたりで
あまり苦労したことがないので詳しくないのですが、istrip が OFF に
なっているかどうか、のあたり。

でも、入力した日本語が消えてしまうのですよね。istrip を間違って
いたら、化けるだけだしなあ…

他の方が回答されているように、vi 自体が日本語を扱えないと思うので、
とりあえずは日本語が扱える vi のクローン jvim や nvi を導入して
おきましょう。

# あまり回答になってなくて、申し訳ない m(_ _)m
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

本当に助かりました。
とりあえず、viのクローンを入れてやってみます。
sttyの方も調べてみます。

ありがとうございました。

お礼日時:2001/06/18 09:34

Sun 側の端末設定はきちんと行えていますか?


vi 実行前に一度、次のコマンドを実行してみて下さい。

stty -istrip
    • good
    • 0

私も以前、Viで日本語入力がうまく出来ると便利と思って色々やったんですけど、純正?Viは、文字を1バイトで扱うので、基本的にだめみたいです。


だから、日本語のテキストファイルを呼び出して、どっか適当なところで一文字削除するとその後ろ全部おかしくなっちゃいます。二つ削除だと大丈夫なようですが、表示が化けたままだったりすることがありました。また、その文字コードによっては、改行コードのところから変になっちゃったりします。

だから、どうしてもViで日本語をやりたければ(操作法になれているとか)jvimなどのViのクローンから探すよりないでしょう。
    • good
    • 0

あと、環境変数 LANGの値も。



$ echo $LANG
の結果を見せてください。ただの空行だったり、
C
の場合、それを日本語を使えるように設定してやると直ったりします。
(それがまた環境に応じてja_JP.ujisだったり別だったりいろいろですけどね)

# a-kumaさんの補足要求で十分かと思いましたが最近のは
# LANG=Cじゃなくてもメッセージは「command not found」だったり
# することがあるので蛇足ながら。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
本当に助かりました。

お礼日時:2001/06/18 09:37

以前にも同様の質問が有りましたが、結論は日本語対応のviエディタを使っていなかったと言う落ちでした。


本来viは日本語に対応していません。日本語が使える場合はjvimなどにリンクされている場合です。

それから「UNIX」と言う名称のOSは現在存在しないので、実際のOS名・バージョン(例えばSolaris8等)を記述した方が正確な回答が得られやすいと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
本当に助かりました。

お礼日時:2001/06/18 09:35

状況が良く分からないので、まず、vi の問題なのか、vi 以外の問題なのかを


はっきりさせましょう。

vi 以外では日本語が使えているのでしょうか?
例えば、

% aaaaa ← ありえないコマンドを打ってみて

「コマンドが見つからんよ」というシェルのメッセージが日本語になっているか?

% echo あああ ← 日本語を扱うコマンドを使って

「あああ」ときちんと表示されるか?

両方がクリアされていれば、vi の問題である可能性が高いですね。
ただ、

> muleを使うっていう方法もあるのですが、

とあるので、mule では日本語を使えるのだ、と言うことのような気もするので、
vi の問題である可能性が高いような気がします。

unix の種類もよくわからないので、はっきりしたことは言えませんが、その
unix についている vi 自体が日本語を扱えない可能性があります。

とりあえずは、vi 自体の問題かどうかをはっきりさせることと、unix と vi の
バージョンを調べることで、もう少し詳しい回答が得られるかも。

unix のバージョンは uname -a の出力を、vi のバージョンは、vi を立ち上げて
:ver と打った出力を、ここに書き込んでみてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

説明不足ですみませんでした。
unixのバージョンはSunOS vega 4.1.4 1 sum4mで、
viのバージョンはSVR3.1でした。

あと、muleではきちんと日本語が入力できます。
viは日本語がenterキーを押すと文字化けを起こすのです。

% echo あああ と入力すると’あああ’の部分が消えてしまいます。

すみませんが何か原因が以上の説明でわかるときは回答をください。
お願いします。

お礼日時:2001/06/17 02:12

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWindowsでtelnet経由のviを使用した場合

Redhat9にWindows2000よりtelnet接続しviを使用しています。

長文(1画面に収まらないもの)を編集する際のことでお尋ねします。

カーソルを下に移動して、そして、カーソルが画面の一番下に達した時、Redhatのターミナルでのviでは画面全体がスクロールする(下に新しい行が追加されると上の行が消える)のですが、Windowsのtelnetからのviだと、最下行のみ新しい行に置き換わって残りの上部の行はそのままで残ります。


これは仕様なのか何か設定が悪いのかどうなんでしょうか?

Aベストアンサー

このような現象は、接続した祭にターミナルから通知される端末タイプの設定が適切でない場合が多いです。

Windows2000のtelnetにおいては、デフォルトの端末タイプはANSIとなっています。
この設定をVT100などに変更して繋げば解消する可能性があります。
変更は引数無しで、telnetを起動しhelpと叩くと使い方がいろいろでますので、参照してください。
端末タイプの変更は、set TERM VT100 等となります。

Qviエディタの使い方

困っています。素人さんです。
Turbolinuxを使っているのですがviエディタを使っている時に”BS”キーを使うと”^?”と出てきて機能しません。
当然入力モードにはなっています。
挿入モードでも置換モードでも同じです。
なんとかならいのでしょうか?
よろしくお願いします。
 

Aベストアンサー

#1の方へのお礼に
>.confファイルを編集しようとしても#を消すことすらできない状態です。
とあるので気になったのですが、
ひょっとして # の次の位置にカーソルを持ってゆき、
そこでそのままBSなり、挿入モード(テキストモード)に入ってBSなりしてませんか?
基本的に、BSでは現在の挿入モードで書いた文字しか消せません。
ですから、たとえば挿入モードで
abcd
と書いて、一旦ESCでモードを抜け、
そのまま a で挿入モードに入って
efgh
を入力した状態(まだ挿入モード)では、
現在の挿入モードで書いたefghまではBSで消せますが、
それ以前に書いたabcdはBSでは消すことができません。

ということで、ご所望の操作としましては、
カーソル移動モード(コマンドモード)で消したい文字(例では#ですね)の上へカーソルを持ってゆき、
そこで x を押せば、その文字を削除することができます。
その他、使い方は#3の方のご紹介URLが簡潔でわかりやすいと思います。

Qエディタのviで行数を指定せずに、複数行をコピー&ペースト

エディタのviで、
複数行を選択してコピーして、それを別のところに貼り付けたいのですが、
やり方を教えてください。

nY のあとに Pなどとすれば、n行をコピー&ペーストできる、
というのはわかります。
でも、このやりかたでは、コピーするまえに行数がわかってないといけないと思います。(わたしは行数をいちいち数えている。)

わたしの知りたいのは、n行という行数を指定しなくてもできるやり方です。

たとえば、
Windowsのメモ帳なら、
シフトキー+矢印キーで範囲指定し、Control+Cでコピーし、コピー先の場所に移動し、Control+Vで貼り付けできます。
行数がわからなくても、コピー&ペーストできますよね。
そういうやりかたが知りたいのです。

行番号の表示がない状態でできるやりかたがいいです。(それがデフォルトの状態なので。)

わたしは、端末(PC)でエミュレータを立ち上げて、UNIXマシンに入っているのですが、
エミュレータの機能をつかったりとかマウスをつかったりはしないやり方を教えてください。

エディタのviで、
複数行を選択してコピーして、それを別のところに貼り付けたいのですが、
やり方を教えてください。

nY のあとに Pなどとすれば、n行をコピー&ペーストできる、
というのはわかります。
でも、このやりかたでは、コピーするまえに行数がわかってないといけないと思います。(わたしは行数をいちいち数えている。)

わたしの知りたいのは、n行という行数を指定しなくてもできるやり方です。

たとえば、
Windowsのメモ帳なら、
シフトキー+矢印キーで範囲指定し、Control+Cでコ...続きを読む

Aベストアンサー

No.3 の方の回答が、どの vi でも通用するやり方です。
行単位ではなくなりますが、3)~4)のところを : を押してコマンドモードに
移らずとも、コピー範囲の終了地点にカーソルを移動して y'a と打っても
OK です。

# 行単位ではなくなりますが

後、どの vi でも通用するやり方ではないのですが、vi クローンのうちのひとつ
で、vim というのを使うと、やや直感的になります。

V を押すと、行単位の範囲選択モードに入り、Windows に近い、選択範囲を
目で確認しつつ、複写することができます。

複写開始行にカーソルを移動して V 、選択範囲が反転表示されるので、終了行に
カーソルを移動して Y 。複写先の行に移動して、p or P で複写。

伝統的な vi の使い方を理解しつつ、便利な vi クローンを使えれば、使う
というのが良いのではないでしょうか?

# emacs 系に流れる、というのもひとつの選択肢かも (^^;

Q[vi]エディタ;ファイルを開く・閉じるコマンドとは?

質問させていただきます。[vi]エディタで、新規にファイルを開くコマンドを教えてください。[vi]を起動させるとき[vi]にファイル名を書いて起動させれば新しくファイルが作れますが、[vi]に何か書いているとき新しいファイルを開くにはどのようにすればよいのでしょうか。[:e]らしいのですが、今書いている[vi]の画面のまま、それまで書いていたものが消えて「新規のファイル」が開くというコマンドは無いのでしょうか。
 それと、[vi]を終了させずに[vi]の画面を閉じるというようなコマンドはありますか。初心者なので本で調べたのですが見つかりませんでした。[vi]を終了させれば閉じることはできますが、[vi]を終了させずに[vi]を閉じるなどという芸当はできるものなのでしょうか。ご存知でしたら教えてください。よろしくお願いいたします。

Aベストアンサー

普通に考えて、

:!vi (new filename)

ではどうでしょうか?
あとはもう一人ログインするとか。
(telnetの場合)
telnetクライアントをもう一つ起動

(X-Windowの場合)
ターミナルをもう一つ開く。

(マシンの前に座っててXを使ってない場合)
Alt+F*で複数ログインする

等。

Ctrl+ZでSuspendってのも一つの方法ですね。
他に方法がなかったら、私ならそれを使うかも。
(本当はAlt+F*でログインし直してますが)

QエディタのViで、検索する文字列をテキスト中からコピーしてきたいのですが。

Viで、テキスト中にある文字列(パターン)を検索したいのですが、どうすればよいのでしょうか。

/tangoと入力すれば、tangoというパターンを検索できるのはわかるのですが、
tangoというパターンをキーボードから打つのではなくて、
テキスト中にtangoというパターンがあるのを見つけて
「あ、このtangoというのを検索したいな~~」
と思って、テキスト中からコピーしてきて検索する方法が知りたいのですが。

あと、Viの操作方法でよくわからないことが出てくるので、
やさしく解説しているサイトを教えていただけるとありがたいです。

Aベストアンサー

普通の vi では、簡単には無理です。

vi クローンのうちのひとつ vim であれば、単語にカーソルを合わせて
* と打つと、/\<tango\> としたのと同じことになります。
# と打つと、?\<tango\> としたのと同じことになります。

「どうしてもやりたい」ということであれば、以下のような手順で、出来ない
ことは無いです。

(1) 単語の先頭にカーソルを合わせる
(2) yw として単語を yank する
(3) 適当な空白行に行って、p として単語を copy する
(4) 行の先頭に / を挿入する
(5) その行を yy とやって copy する
(6) @@ と打つと、その単語を探す
(7) 探し終わったら、ファイルに加えた変更を戻しておく

どこまで vi を知っているか分からないので、一応解説を。

vi は、「バッファ」というものを持ってます。例えば、コピーする領域が
幾つもあると思ってください。

@ は、そのバッファをコマンドだと思って実行する機能があります。

先に紹介したやり方は、名前なしのバッファを使ったやり方ですが、探しながら
編集をしていくと、バッファの内容が変わってしまうので、いまいち使い勝手が
良くありません。

例えば、z という名前を持つバッファを使う場合には、"zyy とやって取り込み
実行するときには "z@ とやります。

複雑な操作をやるときや、一連の操作を繰り返し行ないたいときには、重宝します。

普通の vi では、簡単には無理です。

vi クローンのうちのひとつ vim であれば、単語にカーソルを合わせて
* と打つと、/\<tango\> としたのと同じことになります。
# と打つと、?\<tango\> としたのと同じことになります。

「どうしてもやりたい」ということであれば、以下のような手順で、出来ない
ことは無いです。

(1) 単語の先頭にカーソルを合わせる
(2) yw として単語を yank する
(3) 適当な空白行に行って、p として単語を copy する
(4) 行の先頭に / を挿入する
(5) その行を yy とや...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報