blog icon indicating copy to clipboard operation
blog copied to clipboard

终端下的工作流

Open junnplus opened this issue 3 years ago • 1 comments

因为大部分编码工作都是在终端下进行的,简单写一篇文章分享下自己的终端下的工作流。

Mac 下使用的终端是 iTerm2,配置了打开一个 iTerm2 窗口会自动执行 workup 命令列出可选的工作空间。这里需要解释一下,我的一个工作空间是一个特定的目录,大多数场景是指一个 Git 仓库。

image

workup 命令结合了 tmux + fzf 命令支持:

  • 快速搜索工作空间
  • 进去已有工作空间
  • 新建一个新的工作空间(输入一个不存在的工作空间之后回车即可)

一个工作空间是由一个 tmux session 加若干个 tmux window/pane 组成,这样就可以通过管理 iTerm2 窗口(顶部窗口)来管理一个工作空间,我常驻的工作空间一般不超过5个,可以直接切换 iTerm2 窗口来切换工作空间。

通常情况下,不需要在当前这个工作空间下工作的话,我会选择直接 CMD+w 来关闭当前 iTerm2 的窗口,在需要切换回来的时候通过新建一个 iTerm2 窗口用来快速恢复之前的工作空间。


当进去一个工作空间后,工作空间的上下文由 starship 提供的,包含了 Git 、编程语言、以及其他上下文信息(Docker、K8S)。

image

工作空间的底部是 tmux 的状态栏,包含了当前工作空间的名称、打开的 tmux 窗口、当前的工作目录。

而我的编程工作离不开 vim,所以一般每个工作空间下都会有一个窗口是运行 vim 的。可以通过 tmux 绑定的快捷键来切换窗口,下图就是一个运行着 neovim 的窗口。

image

编码、构建、测试都可以在 vim 里面完成,终端下的操作也可以在 vim 的终端模式下运行或者快速切换 tmux 窗口来操作。日常使用中,工作空间保持不超过3个 tmux 窗口是我的使用习惯。


另外的,编码工作中也有一些需要依赖 Linux 环境的,比如使用 Docker、或是在 Linux 环境编译代码。

介于 Docker Desktop 商业化的原因,我切换到 lima-vm + nerdctl 来代替在 MacOS 下使用 Linux 和 Docker。(没错,这篇文章就是 lima-vm 的软文,快逃)

Lima 的介绍可以看

limactl start 启动一个 Linux 环境的 qemu 虚拟机。 终端下可以直接通过 lima 前缀将命令发送到虚拟机中执行,通过 alias docker 可以做到像在本地一样使用 Docker 命令。

image

终端下运行 lima 可以直接进入虚拟机,路径和宿主机一致。

image

我通常是通过这种方式编译和运行 Linux 环境的代码。比如 M1 是 ARM 架构的,我会通过 x86 的 lima 虚拟机来跑旧的软件包。


以上终端下的工作流极大的提高了我的工作效率(摸鱼时间) : )

这篇文章没有介绍具体工具的配置,工具的使用和配置因人而异,没有最好工具,只有适合自己的。 我的工具配置都可以在我的 dotfiles 找到。

junnplus avatar Jan 24 '22 02:01 junnplus

将 iTerm2 替换成了 Wezterm,在使用姿势不变的情况下,方便了我使用 lua 配置终端。

junnplus avatar Mar 13 '22 11:03 junnplus