zsh, screen, mlterm

この記事を書いた翌日くらいから zsh とか mlterm とかを使うようにしてみた. 今も続いてる. ただなんとなく今の設定ファイルを晒してみる.

.zshrc

# {{{ for command completion
zstyle ':completion:*' verbose yes
zstyle ':completion:*:descriptions' format '%B%d%b'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format 'No matches for: %d'
zstyle ':completion:*' group-name ''
zstyle :compinstall filename '/home/iihoshi/.zsh/.zshrc'
autoload -Uz compinit
compinit
# }}}
# {{{ for command history
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
# }}}
# {{{ for bind-keys
bindkey -v
# }}}
# {{{ for colorful prompt
setopt prompt_subst
autoload -U colors
colors
PROMPT="%{$fg_bold[green]%}%n%{$fg_bold[red]%}@%m%{$fg[blue]%}%#%{$reset_color%} "
RPROMPT="%{$fg[yellow]%}[%(4~,%-1~/.../%2~,%~)]%{$reset_color%}"

eval `dircolors -b`
# }}}
# {{{ for screen window's title
# (ref. http://www.zsh.org/mla/workers/2000/msg03990.html)
# (ref. http://nijino.homelinux.net/diary/200206.shtml#200206140)
# (ref. http://d.hatena.ne.jp/cooldaemon/20061113)
if [ x$TERM = xscreen ]
then
    function change_screen_title()
    {
        echo -n "^[k$1^[\\"
    }

    function preexec()
    {
        emulate -L zsh
        local -a cmd; cmd=(${(z)1})
        case $cmd[1] in
            fg)
                if [ $#cmd -eq 1 ]
                then
                    cmd=(builtin jobs -l %+)
                else
                    cmd=(builtin jobs -l $cmd[2])
                fi;;
            %*)
                cmd=(builtin jobs -l $cmd[1]);;
            sudo)
                if [ $#cmd -gt 1 ]
                then
                    cmd[1]="# $cmd[2]"
                fi
                change_screen_title "$cmd[1]:t"
                return;;
            *)
                change_screen_title "$cmd[1]:t"
                return;;
        esac

        local -A jt; jt=(${(kv)jobtexts})
        $cmd >> (
            read num rest
            cmd=(${(z)${(e):-\$jt$num}})
            change_screen_title "$cmd[1]:t"
        ) 2> /dev/null
    }
fi
# }}}
# {{{ for ssh on screen
if [ x$TERM = xscreen ]
then
    function ssh_screen()
    {
        eval hostname=\${$#}
        screen -t $hostname ssh "$@"
    }

    alias ssh=ssh_screen
fi
# }}}
# {{{ aliases
# {{{ for ls
alias ls='ls -CF --color=auto'
alias ll='ls -l'
alias la='ls -A'
# }}}
# {{{ for ``safe rm''
# (ref. http://homepage3.nifty.com/hit-c_soft/Safe_rm/Safe_rm.html)
alias rm="${HOME}/local/bin/trash"
alias delete="/bin/rm"
#alias emptytrash="/bin/rm ~/.Trash/*"
alias recover="${HOME}/local/bin/undel"
# }}}
# {{{ for jude
alias jude="${HOME}/bin/jude_community/jude"
# }}}
# }}}
  • こちらのようにファイルを分けるのも良いなと思ったけど, vim で folding 使えば十分か, ということで. でもそうすると vim 以外では見通し悪いよね.
  • completion とか history とかは全然手をつけていない. まだ使いこなそうともしてない.
  • もちろん bindkey -v でしょ.
  • preexec()sudo に関して追加. よく使うんで.
  • 無意識のうちに rm をタイプすることって割とあるよね.
  • jude については alias よりもシンボリックリンクを使った方が良いような気も.
  • そういや前出の記事のコメント欄で教えてもらったのはまだ追記してなかった.
.screenrc

autodetach on
caption always " %{=br}screen%{-} | %-Lw%{=b}%n*%f %t%{-}%+Lw %=| %Y/%m/%d %c "
defencoding eucJP
hardstatus alwayslastline " %{=b}$TERM%{-} | %?%{= dd}%h%{-}%?"
vbell off
  • こっちもあんまり使いこなそうとしてねーなぁ.
  • captionhardstatus を両方とも最下行 (2 行) に表示するように変更.
.mlterm/main

termtype=mlterm
col_size_of_width_a=2
fontsize=14
use_anti_alias=true
use_transbg = true
use_scrollbar=false
fg_color=white
bg_color=black
brightness=20
contrast=50
bel_mode=none
  • mlterm の設定はなんか独特で はじめはよく分からんかった. 今もよく分かってないままのものがちらほら.
  • .mlterm/aafont とか .mlterm/color とかも弄ってるが晒しはしない.