OSX のデフォルトのscreen はpbcopy が動かない問題とかがあり、今までは開発版のscreen を使ってました。ですが、開発版の方はZenTestにくっついているautotest と連携する際にステータスラインの部分がきちんと動かなかったりしてました。
そこで、tscreen に移行したらどちらも解決!「~/.screenrc」もそのまま使えるので便利。縦分割もできます。
インストール
screen のコピーモードでコピーしたものをpbcopy に渡すパッチをあてる
このパッチをあてておけば、screen のコピーモードでコピーしたものをそのままペーストできるので便利。
cd ~/src wget http://www.steve.org.uk/Software/tscreen/dist/tscreen-0.4.9.tar.gz tar xzf tscreen-0.4.9.tar.gz cd tscreen-0.4.9
- mark.c
--- /tmp/mark.c 2009-07-13 21:37:22.000000000 +0900 +++ ./mark.c 2009-07-13 21:41:13.000000000 +0900 @@ -54,6 +54,8 @@ static void MarkRedisplayLine __P((int, int, int, int)); static int MarkRewrite __P((int, int, int, struct mchar *, int)); +void pbcopy(const char *strings); + extern struct layer *flayer; extern struct display *display, *displays; extern struct win *fore; @@ -429,6 +431,19 @@ /**********************************************************************/ +// http://d.hatena.ne.jp/eagletmt/20090516/1242486472 +void pbcopy(const char *strings) +{ + FILE *pipe; + pipe = popen("/usr/bin/pbcopy", "w"); + if (pipe == NULL) { + LMsg(0, "pbcopy failed: %s", strerror(errno)); + return; + } + fprintf(pipe, "%s", strings); + pclose(pipe); +} + int GetHistory() /* return value 1 if copybuffer changed */ { @@ -1040,6 +1055,7 @@ newcopylen); else LMsg(0, "Copied %d characters into buffer", md_user->u_plop.len); + pbcopy(md_user->u_plop.buf); if (write_buffer) WriteFile(md_user, (char *)0, DUMP_EXCHANGE); in_mark = 0;
- pty.c
--- /tmp/pty.c 2009-07-13 21:37:38.000000000 +0900 +++ ./pty.c 2009-07-13 21:40:58.000000000 +0900 @@ -35,7 +35,7 @@ /* for solaris 2.1, Unixware (SVR4.2) and possibly others */ #ifdef HAVE_STROPTS_H -# include <sys/stropts.h> +//# include <sys/stropts.h> #endif #if defined(sun) && defined(LOCKPTY) && !defined(TIOCEXCL)
インストール
./configure --prefix=/usr/local make sudo make install sudo mv /usr/local/bin/screen /usr/local/bin/screen_orig sudo ln -s /usr/local/bin/tscreen /usr/local/bin/screen ln -s ~/.screenrc ~/.tscreenrc
screen と比較した時にどんな追加機能があるかとかはまだ調べていないので、その辺り調べつつ使っていこうと思います。