ablog

不器用で落着きのない技術者のメモ

OS X から Solaris 10 に ssh で入って vi を使うと "Unknown terminal type" と表示される

$ vi .bash_profile 
xterm-color: Unknown terminal type
I don't know what kind of terminal you are on - all I have is 'xterm-color'.
[Using open mode]
...

環境変数 TERM に "xterm" をセットすると解決した。

$ vi .bash_profile
export TERM=xterm <--- 追記
$ . .bash_profile
$ vi .bash_profile
...

環境変数 TERM がセットされていないと、vi が端末の種類を判別できず、エスケープシーケンスを適切に処理することができない。詳しくは以下の通り。

emacs や vi では、1文字戻ったり画面をクリアする際、エスケープシーケンスを出力している。しかしエスケープシーケンスは端末の種類によって違うので、ユーザが今どの種類の端末を利用しているのかをプログラムに伝えるのが環境変数 TERM の役割なのだ。

環境変数マニュアル