• 16
  • Feb

去年开始学用Tmux之后,顺便开始使用Tmuxinator这个工具来组织开发环境。简单的说,用这个工具可以用一条命令就打开一个可以立即展开工作的Tmux Session,里面有N个已经准备好的Window,分别对应Server、Editor、Git等。

但是Tmuxinator已经很久没有更新了,而且配置性稍微弱了一点点,对Ruby/RVM项目比较友好,对Python/Virtualenv的支持就差了点。

后来,我发现了Teamocil这个取代它的好工具。

Teamocil的安装方式和Tmuxinator一样,也是通过「gem install teamocil」安装。相对于Tmuxinator,Teamocil更加灵活,没有直接与Ruby/RVM有关系,因而非常容易针对不同的项目进行组织。

以本站IMTX为例,一个基于Python/Virtualenv的Django App。Tmux开发环境的配置文件如下(~/.teamocil/imtx.yml):

session:
  name: 'imtx'
  windows:
    - name: "server"
      root: '~/.virtualenvs/imtx.me/imtx'
      filters:
        before: workon imtx.me
        after: ./manage.py runserver
      splits:
        [splits list]
    - name: "vim"
      root: '~/.virtualenvs/imtx.me/imtx'
      filters:
        before: workon imtx.me
        after: vim imtx
      splits:
        [splits list]
    - name: "shell"
      root: '~/.virtualenvs/imtx.me/imtx'
      filters:
        before: workon imtx.me
        after: git status
      splits:
        [splits list]
    - name: "pyshell"
      root: '~/.virtualenvs/imtx.me/imtx'
      filters:
        before: workon imtx.me
        after: ./manage.py shell
      splits:
        [splits list]
    - name: "dbshell"
      root: '~/.virtualenvs/imtx.me/imtx'
      filters:
        before: workon imtx.me
        after: ./manage.py dbshell
      splits:
        [splits list]

这个配置文件主要是:

  • 建立一个名为imtx的Tmux Session,里面有server、vim、shell、pyshell、dbshell等这些window;
  • 每个window的root都定位到「~/.virtualenvs/imtx.me/imtx」这个开发路径,同时通过「filters/before」指令进入virtualenv环境;
  • 其中server这个window会跑起测试环境:runserver,vim则是打开编辑器,其他的如dbshell则是进入数据库的shell;

简单的说,每次我要进入开发状态时,只要打开tmux,然后执行「teamocil imtx」,大约几秒后,这么一个开发环境就会给我准备好了:

teamocil-imtx

这样,你就可以在server看开发服务器的输出,vim里面写代码,shell里面操作文件,pyshell里面操作Python代码,dbshell里面操作数据库…所有的这一切,都能在几秒内给你准备好。

理论上,Teamocil可以针对任何命令行开发环境进行适配,而且还能配置Tmux窗口分割功能(通过splits),用它来管理基于命令行的工作区将是又方便又灵活。

大家还有更好的工具和更懒的方式推荐吗?

» You can leave a comment.

4 Comments

  1. 求tmux的外观配置。。。。

  2. hbc

    能根据某次运行的窗口列表生成配置么?

  3. 凉拌茶叶

    抢个前排
    话说这个东西可以和byobu搭配吗?

  4. theburn

    话说能share一下您的tmux的conf文件么?

Leave a Comment