一直懒得写这个,一个挺纠结的功能。正好有人让我测试Archlinux下octopress的语法高亮,所以干脆就写了。

这东西是用来在screen里面开一个split的窗口,用以显示当前命令的结果的。比如说想开个man,对照着看,或者说tail -f一个log文件的时候,应该比较合适。开了新窗之后,焦点保留在原来的窗口,可以用c-a c-i跳转到新窗口,这时候按下任意键新的分割窗口就关掉。这是从screen的源代码包里面看到的一过小tips。

似乎很不错的想法。但是,纠结点在于,如果像我这样,本来screen就是当作terminal mutiplexer来用, 那你的所有的窗口都会分割成上下两个!查了下文档,没有找到解决办法。搞不懂irssi的某些用screen来 显示在线人数列表的插件是怎么做到的,居然没有这样的问题。

还是把代码贴一下吧。

function run-command-in-split-screen() {
    screen -X eval \
        "focus bottom" \
        split \
        "focus bottom" \
        "screen $HOME/bin/screen_run $BUFFER" \
        "focus top"
    zle kill-buffer
}
zle -N run-command-in-split-screen
bindkey "\e\r" run-command-in-split-screen