
Ubuntu日本語フォーラム

ログインしていません。
GNU Screenで、実行中のコマンドを表示しようと思い、zshの設定を書いていたのですが、
エスケープシーケンスを使ってウィンドウ名の表示を変える部分が使えなくなってしまうことがあることに気づきました。
http://d.hatena.ne.jp/rdera/20090219/1235048245 ここなどを参考にして書いていたのですが、
screenの時に普通にシェルに
「echo -ne "\ekHello\e\\"」のように入力しても、実行されない時があります。特に、既にその方法でウィンドウ名を別の文字に設定していた時に起こります。
ウィンドウ名を表示するところは、「hardstatus alwayslastline」を使って設定してあります。
設定が間違っているのでしょうか。よろしくお願いします。
オフライン
Terminator(Javaで書かれている)やxtermなど、GTKを使っていないターミナルを使えば正常に動作したので、
一応自己解決のつもりですが、
いろいろな端末を試してみて、GTKとlibvteのライブラリが使われている端末(gnome-terminal, lxterminal, xfce4-terminalなど)ではうまく動かないような感じがします。
GTKやlibvteが悪いと断定するほどの知識はありませんが、これからももう少し調べてみようと思います。
オフライン
1)
おそらく precmd() や preexec() あたりを定義していると思うのですが、zshrcの定義部を貼ることはできますか?
2)
zshのお約束としては、ecno -ne の代わりに、print -Pn の方が使えるエスケープ文字が増えて幸せな気がします。
オフライン
ありがとうございます。
zshの設定はこんな感じになっています。
if [ "$TERM" = "screen" ]; then
preexec() {
1="$1 "
print -n "\ek${${(s: :)1}[1]}\e\\"
}
precmd() {
print -n "\ekzsh\e\\"
}
fiecho -neも、print -nも、print -Pnも、どれもgnome-terminalではうまく動作しませんでした。
オフライン
tana による投稿:
zshの設定はこんな感じになっています。
preexec() {
MY_ZSH_EXEC=$(echo $1|cut -d ' ' -f1)
print -Pn "\ek $MY_ZSH_EXEC \e\\"
}で済むような気がしますが、どうでしょうか。
オフライン