如何在 Linux 上安装和配置 Starship
基于 Linux 的操作系统的一大优点是它们为我们提供了高度的定制性。我们可以根据我们的需求定制和调整(几乎)所有内容,从编译内核的选项到桌面环境。在任何 Linux 发行版上,终端仿真器都是高级用户和系统管理员的必备工具。 Starship 是一个用 rust 编写的免费开源插件,我们可以使用各种模块来自定义我们最喜欢的 shell 提示符。在本教程中,我们将了解如何在 Linux 上安装和配置 Starship,以及如何将其集成到 Bash 和Zsh 外壳。
在本教程中您将学习:
如何安装和配置 Starship
如何将 Starship 与 Bash 和 Zsh 结合使用
如何定制星舰
使用的软件要求和约定
安装
在 Linux 系统上安装 Starship 的方法有很多种。第一种(通常是推荐的)是使用我们最喜欢的发行版的包管理器来下载打包在其官方存储库中的 Starship 版本(如果有)。要在 Red Hat 赞助的 Fedora 上安装 Starship,我们可以使用以下命令:
$ sudo dnf install starship
Starship 也可以在 Archlinux“社区”存储库中找到。我们可以通过 pacman 包管理器安装该软件:
$ sudo pacman -S starship
不幸的是,Starship 在 Debian 或 Ubuntu 的官方存储库中不可用,因此我们可以将其作为 snap 包安装,或者通过下载官方安装程序脚本来安装。要将 Starship 作为 snap 包安装,假设已经安装了 snapd
,我们可以运行以下命令:
$ sudo snap install starship
作为替代方案,我们可以使用跨发行版安装程序脚本方法。我们需要做的第一件事是下载安装程序。要在不离开命令行的情况下完成此任务,我们可以运行:
$ curl -O https://starship.rs/install.sh
上面的命令会将 install.sh
文件下载到调用它的目录中。下一步是使文件可执行:
$ chmod +x install.sh
如果在没有任何选项的情况下启动脚本,它将尝试在系统范围内的 /usr/local/bin
目录中安装 Starship 二进制文件。但是,我们可以通过将其作为参数传递给 -b
选项来选择替代安装路径。例如,如果我们只想为当前用户安装 Starship,而不需要使用权限升级,我们可以运行:
$ ./install.sh -b ~/.local/bin
在上面的示例中,我们使用了 ~/.local/bin
目录,因为在现代 Linux 发行版上,它通常默认包含在用户 PATH 中。一旦我们启动脚本,我们将提示确认安装:
Configuration
> Bin directory: /home/egdoc/.local/bin
> Platform: unknown-linux-musl
> Arch: x86_64
> Tarball URL: https://github.com/starship/starship/releases/latest/download/starship-x86_64-unknown-linux-musl.tar.gz
? Install Starship latest to /home/egdoc/.local/bin? [y/N] y
在 Bash 和 Zsh 中使用 Starship
星舰可以使用多种炮弹。然而,在本教程中,我们将仅了解如何将其集成到 Linux 上最常用的功能中:Bash 和 Zsh。要开始使用前者,我们所要做的就是将以下行附加到 ~/.bashrc
文件中:
eval "$(starship init bash)"
相反,要将 Starship 集成到 Zsh 中,我们必须将以下行附加到 ~/.zshrc
文件中:
eval "$(starship init zsh)"
一旦我们打开一个新的 shell 会话,该插件就会被加载。作为替代方案,我们可以手动获取我们修改的文件。例如,如果使用 Bash shell,我们可以运行:
$ source ~/.bashrc
一旦我们这样做,并且 Starship 被加载,我们的 shell 提示符就会改变:
定制星舰
Starship 的功能按模块进行组织。与各个模块相关的选项及其默认值在 Starship JSON 模式中表示。当我们需要更改选项的默认值时,我们需要将其写入 ~/.config/starship.toml
配置文件中,如果该文件不存在,则必须创建该文件。
在配置文件中,我们可以输入通用的、提示范围的、配置和特定于模块的配置。前者包括例如 format
等选项,用于建立提示格式以及其中包含哪些模块。这里的模块是通过以它们命名的变量来引用的(例如,$git_branch变量引用“git_branch”模块。默认情况下,所有模块都包含在提示中。
以下是自定义提示配置的示例:
format = """
[ LINUXCONFIG STARSHIP PROMPT ](bold green)
[ ------------------------------------------------ ](bold green)
$all """
add_newline=false
在上面的示例中,方括号中包含的文本(例如 [ LINUXCONFIG STARSHIPT PROMPT ]
)称为格式字符串:它可以包含文本和变量,也可以是嵌套。 括号之间包含的文本(例如(粗体绿色)
)称为样式字符串,用于定义格式字符串的样式。
指定提示格式后,我们使用 add_newline
选项并将其设置为 false,以避免 Starship 在提示之间插入新行(后者是默认行为)。上面的配置(我承认不是最漂亮的)产生以下结果:
模块配置
当我们想要更改特定模块的选项时,必须在括号之间包含模块名称,并在其下方指定我们要使用的选项和值。让我们看一个例子。 Starship 有几个用于 git 集成的模块。例如,“git_branch”模块用于显示 git 存储库的活动分支,一旦我们进入相应的目录:
在上面的屏幕截图中,您可以看到我输入了“dotfiles”存储库:由于上述模块,存储库分支显示在提示中。如果我修改文件,它会立即反映在输出中。这是由于“git_status”模块所致,该模块用于显示有关存储库状态的信息:
红色的 [!]
符号显示在分支名称后面。这意味着还有一些修改尚未上演。当我使用 git add 命令将更改的文件添加到存储库索引后,提示符再次更改,这次出现了 [+] 符号。这是为了强调阶段性变化的存在:
一旦我们提交更改,[+]
符号就会消失。 Starship 官方文档页面和 JSON 模式中报告了“git_status”模块使用的选项和符号列表:
[...]
"git_status": {
"default": {
"ahead": "⇡",
"behind": "⇣",
"conflicted": "=",
"deleted": "✘",
"disabled": false,
"diverged": "⇕",
"format": "([\\[$all_status$ahead_behind\\]]($style) )",
"ignore_submodules": false,
"modified": "!",
"renamed": "»",
"staged": "+",
"stashed": "\\$",
"style": "red bold",
"untracked": "?",
"up_to_date": ""
},
"allOf": [
{
"$ref": "#/definitions/GitStatusConfig"
}
]
},
[...]
假设我们要更改存储库中有修改文件时显示的符号。我们要做的就是在配置文件的括号之间写入模块的名称,并覆盖“modified”选项使用的值(这里,仅作为示例,我们使用 ➜ 符号):
[git_status]
modified = "➜"
我们也可以使用相同的原理来完全禁用特定模块。例如,要禁用“git_status”模块,我们可以编写:
[git_status]
disabled = true
结论
在本教程中,我们学习了如何在 Linux 上安装 Starship 插件并对其进行基本配置。该插件可用于以多种方式定制我们最喜欢的 shell 提示符。在这里,我们刚刚开始看到一些功能,例如与 git 存储库的集成。有关 Starship 模块及其选项的完整列表,请查看官方文档。