跳转至

Terminal 完全配置指南

预计阅读时长 : 5 分钟

安装 zsh & oh my zsh

设置完了应用本身的样式之后,接下去就是终端本身的功能增加和样式美化了。

推荐使用 zsh ⧉ 作为默认的 shell,它拥有更多的功能和更好的兼容性。对于 Ubuntu 等没有默认安装 zsh 的系统,可以通过以下命令快速安装。

apt install zsh

oh my zsh 是目前最流行的终端 zsh 的优化版本,拥有对使用者更友好的信息展示样式,以及通过插件实现的丰富附加功能。通过以下命令,可以快速安装 oh my zsh ⧉

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

oh my zsh 自带有多种Theme ⧉。通过在 ~/.zhsrc 配置文件中,将 ZSH_THEME 属性值修改为对应的 Theme 名称并重启终端即可启用。

不过,建议直接使用接下去介绍的 Powerlevel10k Theme,相对于自带的 Theme 美观程度又能继续提升一个档次。

安装 Powerlevel10k 主题

oh my zsh 优秀的第三方 Theme 中,还是最为推荐 Powerlevel10k 。安装过程直观便捷,最终效果赏心悦目,实在是颜值党的心头好。如果喜欢折腾,oh-my-posh ⧉ 也是一个不错的选择。

首先,通过以下命令安装 Powerlevel10k 模版。

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

然后,在 ~/.zhsrc 文件中,将 ZSH_THEME 的属性值修改为 powerlevel10k/powerlevel10k。重启终端,将自动进入 powerlevel10k 的配置流程,根据引导选择自己喜欢的样式即可。对于老用户而言,也可以使用 p10k configure 重新进行配置。

变通方案

由于 XTerminal 属于比较新的终端工具,因此默认的 powerlevel10k 配置流程中不支持选择 Rainbow 等美观程度更高的样式。

推荐先在 iTerm2 中进行配置,然后在 XTerminal 中就可以直接使用了。或者下载p10k-rainbow.zsh 这个配置好的文件,复制到 ~/.oh-my-zsh/custom/themes/powerlevel10k/config 目录下,替换原有的文件,并使用如下的命令即可启用。

$ source ~/.oh-my-zsh/custom/themes/powerlevel10k/config/p10k-rainbow.zsh

在选择了合适的主题、配色、字体和提示后,最终的终端展现效果如下图所示。

安装增强插件

oh my zsh 拥有一个非常庞大的 Plugins ⧉ 仓库,里面很多的插件都可以帮助我们在运维过程中提升效率。

1
2
3
4
5
6
7
plugins=(git alias-finder colored-man-pages command-not-found cp docker docker-compose extract fzf-tab git-prompt history safe-paste thefuck vscode ufw z zsh-autosuggestions zsh-syntax-highlighting)

source $ZSH/oh-my-zsh.sh

# 手动切换 fzf-tab 生效状态

toggle-fzf-tab

语法高亮

zsh-syntax-highlighting ⧉ 插件可以使你在终端输入的命令有语法高亮效果。

对于最常用的 ls 命令,则可以使用 exa 命令进行替代。安装 exa ⧉后,在 ~/.zhsrc 文件中添加别名配置 alias ls='exa',就可以完全使用同样的参数进行操作了。

至于进程展示 top 命令, 则推荐使用 htop 进行替代。或者使用 glances ⧉ 进行更加全面的系统监控。

自动补全

自动补全的功能可以通过多个工具来配合完成。首先 zsh-autosuggestions ⧉ 插件可以用来记忆和提示曾经输入过的命令。

然后,使用 fzf-tab ⧉ 插件可以使用 Tab 进行目录的交互式动态搜索,并且支持命令参数的补全。

配置手动生效

fzf-tab 插件和其他的插件有冲突,需要在 ~/.zhsrc 文件中添加 toggle-fzf-tab 的状态切换命令,手动开启才能正常运行。

如果安装之后没有生效,需要在 zsh 配置中添加 toggle-fzf-tab 手动开启生效。

最后,oh my zsh 自带插件 history 可以直接搜索曾经输入过的命令。同样是自带插件的 Z ⧉ 则可以快速跳转至曾经访问过的目录。

智能纠错

thefuck ⧉ 是一个自动纠正错误命令的插件,对于还不太熟悉命令行的初学者而言是一个非常有帮助的功能。

对于输入错误的命令,只需要按两次 Esc 即可自动纠正为正确的命令。

路径配置

在 Ubuntu 系统上,thefuck 是以 Python 包的形式安装的,所以需要将相关的路径加入到 PATH 变量中

export PATH="/usr/local/lib:$PATH"

其他插件

除了以上三个比较重要方面的必备插件外,还有一些自带的插件可以考虑启用,能够在特定的场景下继续提升效率。

AI 辅助

除了传统的终端功能增加之外,XTerminal 更让人期待的是正在开发中的 AI 辅助功能。目前这块功能正在开发者,之后会对 VIP 用户开发,还是非常值得期待的。

内网穿透

在进行本地开发的过程中,经常会遇到需要访问让外部测试人员访问内网服务的需求。

对于临时性的需求,XTerminal 自带的 SSH 隧道功能可以便捷的创建一个 Remote(内网穿透)隧道,让外部人员可以通过 VPS 上的端口直接访问内网的服务。

以上的配置等同于执行了以下的指令,注意配置中的本地服务端口尽量使用 0.0.0.0,避免出现外部 IP 无法访问的问题。

ssh -fCNR 8080:0.0.0.0:8080 root@82.157.xxx.xxx

对于长期的内网穿透需求,还是更加推荐使用 Frp 来完成。具体的配置方式可以参考 使用 FRP 进行内网穿透

对于国内腾讯云或者阿里云的运维人员而言,使用内网穿透的方式还可以巧妙的解决 Github 相关服务无法访问或者资源无法下载的问题。

假设我们在本地使用 Clash 搭建了一个代理服务,并允许 来自局域网的链接。然后在 XTerminal 中创建一个 Remote(内网穿透) 隧道,将代理默认使用的 7890 端口映射到 VPS 的 7890 端口,就可以让 VPS 上的服务也使用这个代理了。

之后每当需要进行 Github 相关操作的时候,就可以在 VPS 上使用以下的命令,以便临时全局使用 7890 端口上的 Socket5 代理完成相应的操作。

export http_proxy=socks5://127.0.0.1:7890
export https_proxy=socks5://127.0.0.1:7890

快捷操作

在使用终端的时候,输入时难免有需要修改的场景,掌握以下的快捷操作可以进一步的提升效率。

  • Ctrl+C : 快速删除已经输入的命令
  • Ctrl+W : 往回删除一个单词,光标放在最末尾
  • Ctrl+U : 删除光标以前的字符
  • Ctrl+K : 删除光标以后的字符
  • Ctrl+A : 移动光标至的字符头
  • Ctrl+E : 移动光标至的字符尾
  • Ctrl+L : 清屏

参考文档