目录
1、终端程序 — Alacritty
2、Shell – Fish
3、终端复用 — Tmux
4、编辑器 — Vim
常言道,工欲善其事、必先利其器,熟练一套高效且趁手的工具,对开发工作的重要性不言而喻。
本文给大家分享下命令行开发环境,文章较长,配图较多, 其中几处详细内容,已将其折叠起来,读者可视兴趣展开阅读。
命令行工具非常多,称得上神器的,提炼为以下四个:
-
终端程序 - Alacritty
-
Shell - Fish
-
终端复用 — Tmux
-
编辑器 — Vim
我选择工具的标准是:美、快、爽。
1、终端程序 — Alacritty
Alacritty 是一款 rust 编写的、 启用 GPU 加速的终端模拟器。
天下武功,唯快不破,它唯一特点就是:快。
在 2018 年之前,我一直在用流行的 iterm 2。不过,自从邂逅 alacritty 后,就从未离开。相比 iterm2 来说,alacritty 的功能要简单的多, 但是,它足够快。
下面的动图展示了同时在 alacritty(左) 和 iterm2 中用 viu打开一张图片时的渲染速度:
作为终端,一定要颜值在线。Alacritty 也支持配色,可参考 alacritty-theme , 我用的配色是 snazzy ,从未换过。此外,选择一款 等宽的 字体,对终端的整体颜值至关重要,我一直在用的字体是 InconsolataLGC Nerd Font。
我对 alacritty 的功能需求非常少,只要它够快,够漂亮 就好。比如说,我是没有用终端 Tab 页的习惯的, 这些事情 tmux 完全可以搞定。作为终端模拟器,简单快速就好!
2、Shell – Fish
无独有偶,选择 fish shell 的原因,仍然是它更快,同时也更轻。
这里所说的「快」,是指 shell 的 prompt 加载快, 如下图中,进入 fish 几乎是没有延迟的:
当然,不带任何配置的 zsh 和 bash 也很快。但是,为了酷炫的颜值、快捷的功能, 许多 zsh 用户都会搭配类似 oh-my-zsh 的东西, 或者是搞一大堆配置,这都会让 shell 变慢。
但是真正的不同在于,fish 是开箱即用的,大可不必自己折腾那么多。比如 fish 的一大特色是自带补全暗示功能:
还有自带的 ManPage 补全功能等等,这一切都无需插件。
因此 fish 的插件要相对少得多。我在用的也很少:
-
pure-fish/pure 从未换过的 fish prompt 主题,它是如此简洁。
-
jethrokuan/z 快速跳转目录的插件
图2.4 fish shell 中 jethrokuan/z 的自动跳转
除去工具本身外,unix 中 emacs 风格的 shell 快捷键 也值得推荐, 它们在常见的 shell (fish, zsh, bash) 中都是通用的,其中部分快捷键甚至可以在网页文本框中使用。
-
Emacs 风格的 shell 快捷键 - 光标移动和编辑
-
Emacs 风格的 shell 快捷键 - 回翻历史命令
-
Emacs 风格的 shell 快捷键 - 进程挂起
其实,主流的 shell (fish, zsh, bash) 也都支持 vi 风格的操作模式。虽然身为 vim 用户,之所以在 shell 中选择 emacs 风格,是因为它在大部分情况下都是默认的 设定。
在带过的每一支技术团队中,我总会提醒小伙伴们要勤用这些 emacs 风格的快捷键,它看似麻烦, 但是一旦熟练起来,一定比鼠标快。只要刻意地去用,就会熟起来,将大有裨益。
我们将之前发过的各种项目及工具进行了整理,收录到了GitHub项目,欢迎各位小伙伴光临Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU
3、终端复用 — Tmux
Tmux 是一款终端复用神器,不必多言,它早已声名远扬。
简单讲,终端复用就是在一个终端中,可以开多个 shell 会话。一些现代的终端应用,比如 iterm2, 也支持 Tab 页 和 切屏,不过它们在 tmux 的颜值和效率面前,都相形见绌。
几乎所有的 tmux 功能,都需要按一下 前缀键 来触发, 默认的是 C-b,我则是习惯用 C-a 。
我常用的 tmux 功能有:面板、窗口、Copy 模式、会话保持 还有 两三个小插件。
-
tmux - 面板和窗口快捷键
-
tmux - copy 模式
-
tmux - 会话保持
-
tmux - 用到的三个小插件
Tmux 的可配置性很强,我的建议是,多用默认的快捷键,只做少许的自定义快捷键, 毕竟我们许多时候会在服务器等其他环境下使用它。
4、编辑器 — Vim
Vim 有着「编辑器之神」的美誉, 如果把程序员比作武林中的侠客,那么 vim 就是倚天屠龙的利器。已诞生 30 余年, 宝刀虽老,但是在 2022 年的今天,它的文本编辑效率仍尚无敌手。
相对于现代编辑器 或 IDE 来说,上手 vim 的难度曲线要陡峭许多。据说有许多新手在刚刚进入 vim 时,不得不关机或重启终端程序来退出它 …
不过,这是个先苦后甜的过程。如果前面花功夫去学,坚持用下去,甚至形成肌肉记忆,就会爱上它,而 vim 也会在后期带来惊喜。熟练之后,自会入境,享受 「指随心动、码字如飞」的感觉。
Vim 中的学问很多,我用 vim 码字也蛮多年了,但也远远不敢妄称精通,只能说是经常用。
但是,只需要了解 vim 中少部分的知识点,就足够完成大部分的编辑工作。
我将基本内容总结为下面几块。
-
Vim - 5 种常用的模式
-
Vim - 快速移动光标 motion
-
Vim - 快速编辑文本
-
Vim - 窗口和标签页
-
Vim - 开发和编程
顺带一提,目前在用的配色是 PaperColor ,用了好久了, 中间偶尔会烦一下,换换配色、换换心情,不过,最终又总是回到这个配色上来。
Vim 的键位集中在字母区,大部分情况下,在 vim 中编辑,手是不用离开键盘的。话说,是不是许多 HHKB 用户都喜欢用 vim 呢?
如果非要去理解 vim 编辑器之高效到底来自何处,恐怕只能亲身体会才能知晓。我看来,高效的不是 vim 本身, 而是它帮用户养成的编辑习惯。
目前有一款社区维护的、脱胎于 vim 的编辑器,叫做 NeoVim , 它支持 lua 语言的插件, 对 LSP作了 内建支持, 而且完全兼容 vim ,在社区驱动下,neovim 的迭代要比 vim 快多了,社区生态也是遍地开花。不过我仍然没有离开 vim8,因为目前为止还找不到什么动力去换,或许未来会尝试切过去试一段时间, 所谓, 生命不息,折腾不止 嘛。
结尾语
命令行下的快捷键虽然多,但是不同工具的快捷键,都具有一定的共通性。而这些快捷键熟练之后,将体会到,键盘操作是比鼠标要快的。
在配置方面,许多人都把配置做成了仓库托管在 github 上 , 你也可以这样管理。
最后,天下神器,因人而异。不同的工具在不同的人手上、发挥的效果不尽相同。工具的强大,因为它们的高上限,而最终威力几何,取决于执剑之人 。
神兵之神,不在兵器本身,而在于用兵器的人。