使用 Tmux 构建自定义 IDE
欢迎来到 tmux!
你好!
今天,我想分享一个我已经使用了几个月并且对我的日常工作有很大帮助的工具:tmux。
作为一名软件工匠和CLI 爱好者,我一直在寻找最好的工具来尽可能提高工作效率。
让我向您展示如何使用tmux作为我所谓的自定义 IDE的基础。
为什么选择 Tmux?
Tmux 是一个出色的终端多路复用器,附带一些插件。
你可能想知道为什么需要使用这样的东西。许多终端仿真器都内置了拆分终端的功能。
事实上,这说明tmux在拆分和调整窗口大小方面更加强大。
另一个原因是tmux可以与任何终端兼容。因此,如果你更改了终端,无需重新配置所有预设。tmux会帮你搞定。而且,你也可以在不使用 X 的情况下,以简单的方式
使用tmuxtty
。
欢迎来到 tmux!
tmux 是一个终端多路复用器:它允许创建多个终端,并从单个屏幕进行访问和控制。tmux 可以从屏幕上分离并继续在后台运行,然后重新连接。
此版本可在 OpenBSD、FreeBSD、NetBSD、Linux、macOS 和 Solaris 上运行。
依赖项
tmux 依赖于libevent 2.x,可从此页面获取。
它还依赖于ncurses,可从此页面获取。
要构建 tmux,需要一个 C 编译器(例如 gcc 或 clang)、make、pkg-config 和一个合适的 yacc(yacc 或 bison)。
安装
二进制包
一些平台提供了 tmux 的二进制包,但这些包有时会过期。示例请见本页。
来自发布 tarball
要从发布 tarball 构建和安装 tmux,请使用:
./configure && make
sudo make install
如果是的话,tmux 可以使用 utempter 库来更新 utmp(5)……
安装
通过您最喜欢的包管理器安装tmux,或者从源代码编译它:
$ git clone https://github.com/tmux/tmux.git
$ cd tmux
$ sh autogen.sh
$ ./configure && make
配置它
Tmux一开始可能看起来有点生涩,难以上手。好在它有一个很棒的社区,提供了很大的帮助。尝试了多种配置后,我最终选择了gpakosz的配置:

它带有绑定预设和状态栏的出色电力线外观。
只需查看README即可根据您的需要进行定制!
就我个人而言,我觉得在状态栏中显示正常运行时间没什么用,所以我把它从配置中移除了。我还添加了一些插件:
使用它
你需要在你常用的终端仿真器中将tmux设置为默认 shell。完成后,每次打开新终端时,tmux都会启动。
基本上,tmux启动时会创建一个空会话,其中包含一个包含空白窗格和状态栏的单个窗口。状态栏分为三部分:左、中、右。如果您像我一样选择使用上面的配置,则左侧部分将显示会话的名称(如果名称未设置,则显示索引)和正常运行时间。右侧部分将显示电池电量、日期、用户名和主机名。在中间部分,您将看到窗口的标题(如果名称未设置,则显示焦点窗格中正在运行的进程的名称)。
最基本的是会话、窗口和窗格。每次打开一个术语(或术语中的新标签页)时,tmux都会启动一个新会话。新会话包含一个窗口。新窗口包含目录中的一个窗格$HOME
。
tmux中的绑定至关重要:您可以使用前缀Ctrl-a
或访问它们Ctrl-b
。
以下是我使用的主要绑定:
<prefix> Ctrl-c
创建新会话
<prefix> c
创建新窗口
<prefix> %
垂直分割当前窗格
<prefix> "
水平分割当前窗格
现在,如果您对绑定感到不舒服,tmux有一个很棒的鼠标模式,允许您选择、切换和调整窗格大小。
充分利用它
tmux的杀手级功能是会话。想象一下,你想创建一个包含 3 个窗格的窗口来编辑文件、使用 git 并运行测试。只需创建一个新的会话,拆分窗格并根据需要调整其大小即可。
很棒?没那么棒。
由于没有内置会话保存机制,我使用了tmuxp工具。这是tmux必备的会话管理器。
通过发行版管理器安装它或者:
$ pip install --user tmuxp
简而言之:tmuxpyaml
允许您轻松地从/文件创建会话json
,并在需要时加载它们。它不仅可以创建窗口和窗格布局,还可以在每个窗格中运行命令。因此,您可以在vim
主窗格中运行命令,cd
在另一个窗格中运行项目目录进行操作git
,并在第三个窗格中运行文件监视程序来触发测试:
# my-project.yaml
session_name: my project
windows:
- window_name: my custom IDE
layout: main-vertical
shell_command_before:
- pj my-project
panes:
- vim
- git status
- phpunit-watcher watch
然后就跑tmuxp load -y my-project.yaml
。
如果你像我一样,需要搭建一个完整的环境来开发你的应用,那么请放心,这里没有任何限制。我当前项目使用的会话包含多个窗口:
- 1 个IDE窗口:3 个窗格
vim
,一个用于玩的术语git
和一个用于运行测试的术语,
- 9 个窗口,每个日志文件一个,我需要用jq或lnav来 grep ,
- 为我前线的资产服务的窗口,
- 一个运行我的存根(通常是 SpringBoot 应用程序)的窗口。
就是这样!
我希望你通过阅读本文有所收获,并了解一下tmux。我不是它的专家。我必须说,我甚至用不到 10% 的功能,但这个工具已经成为我开发环境中不可或缺的一部分。我想它也能为你带来同样的效果。
谢谢阅读。
再见。
文章来源:https://dev.to/biros/building-a-custom-ide-with-tmux-2aeg