shellの変更とscreenの設定

 仕事の合間にcygwinなどで使っているshellをbashからzshへ変更。たいした設定はしていないので、キーバインドの設定を変えるぐらいで完了。promptはデフォルトでいいかな。

# キーバインドをvi風に
bindkey -v

# historyサーチを追加
bindkey '^P' history-beginning-search-backward
bindkey '^N' history-beginning-search-forward
bindkey '^R' history-incremental-search-backward

# historyの設定
HISTFILE="$HOME/.zhistory"
HISTSIZE=100000
SAVEHIST=100000

# history option
setopt share_history
setopt hist_reduce_blanks
setopt hist_ignore_all_dups

 こんだけ。少ない。これでscreenで履歴の共有が出来るようになったので少しラクになったかな。zshは機能豊富でmanも読み応えがありますな。


 なんとなくついでにcygwinで使っているscreenのcopy modeでbufferに入れた内容を、Windowsクリップボードに渡せないかな、と思って試す。
 .screenrcに

bind y eval writebuf "exec '/usr/bin/putclip < /tmp/screen-exchange'"

と書いてみて、C-a yを押すと/usr/bin/putclipというコマンド無いよ、とか言われてしまって動作せず。Windowsのpathなどにしてみたけれども駄目。わからん。


 .bashrcに以下のように書いたら動いた。

# screenのcopy modeでコピーした内容をクリップボードへ
copy-screen-copy-mode-to-clipboard () {
    screen -X writebuf
    cat /tmp/screen-exchange | putclip
}
zle -N copy-screen-copy-mode-to-clipboard

# ^Y
bindkey '^Y' copy-screen-copy-mode-to-clipboard

 とりあえずはこれで妥協。後で.screenrcの方も調べてみよう。
 理想としてはscreenのcopy modeでcopyした時点でWindowsクリップボードに入るのが理想かもしれない。これはscreenのプログラム自体に手を入れると出来そう。やらないけれど。