.tcshrc


.cshrc

if ($?prompt) then
   # setenv MANPATH  /usr/share/man:/usr/local/man:${HOME}/local/man
   setenv PAGER    /usr/local/bin/less
   setenv LANG     ja
   #setenv LANG     C

   ##### stty #####
   stty -istrip
   stty erase ^?

   ##### set #####
   set filec autolist
   set history = 1000 savehist = 1000
   set noclobber

   set HOST = `uname -n`

   ##### alias #####
   alias ls    "ls -AF"
   alias less  '/usr/local/bin/less'
   alias c     clear

   if ($?tcsh) then
       set savehist = (1000 merge)
       set histfile = $HOME/.thistory
       # ~/bin/tcsh へ OS 標準の tcsh より新しいものを入れた場合に
       # 以下の方法で新しい tcsh を呼ぶようにしています。
       # ログインシェルは screen コマンドを起動するだけなので諦める
       if ( -x ~/bin/tcsh ) setenv SHELL ~/bin/tcsh
   endif

   #
   # set prompt
   # screen コマンドの中で起動している/いないに依ってプロンプトの色を変える
   #
   # onScreen: screen コマンド上の shell である(1)/ない(0)
   #       次に起動する shell へ引き継ぐ必要があるため環境変数へ代入
   #       onScreen が未定義の場合は、screen 上でないとする。
   if (! $?onScreen) setenv onScreen 0

   # for Solaris
   if ($onScreen == 0) ps -p `ps -p $$ -o ppid=""` | grep -q screen && setenv onScreen 1
   if ($?tcsh) then
       if ($onScreen == 1) then
           # alias precmd echo "'^[[37;46;1m tcsh $tcsh shlvl:[$shlvl] ^[[0m'"
           # set prompt = "%{\e[34;46m%}%n@%m:%~[\!]%#%{\e[0m%} "
           set prompt = "%{^[[37;46;1m tcsh $tcsh shlvl:[$shlvl] Return=%? \012\e[0;34;46m%}%n@%m:%~[\!]%#%{\e[0m%} "
           set rprompt = '%{\e[34;46m%} %d, %D %w %Y %P %{\e[0m%} '
       else
           # alias precmd echo "'^[[33;42;1m tcsh $tcsh shlvl:[$shlvl] ^[[0m'"
           # set prompt = "%{\e[33;42;1m%}%n@%m:%~[\!]%#%{\e[0m%} "
           set prompt = "%{^[[33;42;1m tcsh $tcsh shlvl:[$shlvl] Return=%? \012\e[0;33;42m%}%n@%m:%~[\!]%#%{\e[0m%} "
           set rprompt = '%{\e[33;42;1m%} %Y/%W/%D %P %{\e[0m%} '
       endif
   else
       set mch = `hostname | sed 's/\..*//'`
       if ($onScreen == 1) then
           alias prompt 'set prompt = "^[[34;46m`id -u -n`@"$mch:q":$cwd:t[\\!]%^[[0m "'
       else
           alias prompt 'set prompt = "^[[33;42;1m`id -u -n`@$mch:q"":$cwd:t[\\!]%^[[0m "'
       endif
       alias cd 'cd \!*; prompt'
       alias chdir 'cd \!*; prompt'
       alias popd 'popd \!*; prompt'
       alias pushd 'pushd \!*; prompt'
       cd .
   endif
endif

tcsh は prompt に設定された文字列の数を覚えていて画面を書き直しますが、プロンプトに改行があっても行頭に戻ったと認識できません。その為、改行より前の部分を %{...%} で囲んでその文字列を数えないことに拠って辻褄を合わせます。

Solaris 8 on tcsh

version tcsh 6.15.00 (Astron) 2007-03-03 (sparc-sun-solaris) options wide,nls,dl,al,kan,rh,color,filec

こんな感じ。
sh にすると日本語の入力が可能。
tcsh だと「日本語」が「\U+237C\U+25DC\U+1C6C」と化ける。なぜ?
set dspmbyte = euc は試してみましたが、同じように化ける。

putty -> Solaris 8 -> tcsh 6.15.00

どうすりゃいいねん。