07 - Zim - Zsh 配置框架与它的插件

Zsh 可以让使用者利用配置客制各种不同的功能,像是命令的自动补全、提示、高亮与缩写等。但是要自己设定这些需要花费大量的时间,因此找一个好的框架,并且使用大家公认的大众配置会是个比较省力的方式。

这些框架除了预配置的功能外,都会提供扩充的插件,藉由引入这些插件,我们可以轻松地实现各式功能,而不需要自己去做大量的配置。

Zsh 配置框架 Zim

https://ithelp.ithome.com.tw/upload/images/20210923/20107789vKPoPOiuZS.jpg

Zim 是个 Zsh 配置框架,它提供了丰富的预设功能,并且以高效着称。

除了预设的功能外,使用者还可以使用 Modules 对功能进行扩充,并选择自己喜爱的 Themes 来使用。

安装 Zim

使用 Curl 安装 Zim :

curl -fsSL https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh

安装完成後,重新启动终端机,就可以开始使用 Zim 所提供的各式功能了。

https://ithelp.ithome.com.tw/upload/images/20210923/20107789RR6pt1E55r.png

Zim 的配置

Zim 的配置藉由一个配置档 ~/.zimrc 来处理,安装完成後他会有预设的配置,使用者可以自己决定是否要使用这些配置。

Zim 的 Module 与 Theme 的安装方式是相同的, 接着以 theme eriner 为例,展示如何配置 Zim 。

安装 Module

首先,在 ~/.zimrc 中将 eriner 加入到配置:

# Zim theme
zmodule eriner

储存後,使用指令安装 Module :

zimfw install

重启终端後就可以看到新的主题效果了。

https://ithelp.ithome.com.tw/upload/images/20210923/201077894aiyCshETm.png

更新 Modules

使用指令更新所有在 ~/.zimrc 中的 Module :

zimfw update

删除 Module

先将要删除的 Module 从 ~/.zimrc 中删去:

# Zim theme
#zmodule eriner

然後使用指令解安装 Module :

zimfw uninstall

它会询问是否要删除,选择是後,就会开始进行解安装的动作。

Zim 的预设功能

Zim 在安装时会预设配置多个不同的 Module ,其列表如下:

# Start configuration added by Zim install {{{
# -------
# Modules
# -------

# Sets sane Zsh built-in environment options.
zmodule environment
# Provides handy git aliases and functions.
zmodule git
# Applies correct bindkeys for input events.
zmodule input
# Sets a custom terminal title.
zmodule termtitle
# Utility aliases and functions. Adds colour to ls, grep and less.
zmodule utility

#
# Prompt
#
# Exposes to prompts how long the last command took to execute, used by asciiship.
zmodule duration-info
# Exposes git repository status information to prompts, used by asciiship.
zmodule git-info
# A heavily reduced, ASCII-only version of the Spaceship and Starship prompts.
zmodule asciiship

# Additional completion definitions for Zsh.
zmodule zsh-users/zsh-completions
# Enables and configures smart and extensive tab completion.
# completion must be sourced after zsh-users/zsh-completions
zmodule completion
# Fish-like autosuggestions for Zsh.
zmodule zsh-users/zsh-autosuggestions
# Fish-like syntax highlighting for Zsh.
# zsh-users/zsh-syntax-highlighting must be sourced after completion
zmodule zsh-users/zsh-syntax-highlighting
# Fish-like history search (up arrow) for Zsh.
# zsh-users/zsh-history-substring-search must be sourced after zsh-users/zsh-syntax-highlighting
zmodule zsh-users/zsh-history-substring-search
# }}} End configuration added by Zim install

接着说明几个主要的 Module 所带来的功能是什麽。

environment

GitHub 连结

此为官方的 Module ,作用为设定合理的 Zsh 的选项

关於 Zsh 的选项可以参考 Moving to zsh, part 3: Shell Options

git

GitHub 连结

此为官方的 Module ,设定 Git 相关的别名与功能。

https://ithelp.ithome.com.tw/upload/images/20210923/20107789r1JlXhctJ1.png

utility

GitHub 连结

此为官方的 Module ,设定 lsgrepless 相关的配置,包含高亮与别名。

https://ithelp.ithome.com.tw/upload/images/20210923/20107789kcREZxNnv5.png

duration-info

GitHub 连结

此为官方的 Module ,纪录指令执行的时间。

https://ithelp.ithome.com.tw/upload/images/20210923/20107789uZnQZLHuh1.png

git-info

GitHub 连结

此为官方的 Module ,导出 Git 库相关的资讯。

https://ithelp.ithome.com.tw/upload/images/20210923/20107789SfbIEA1OGJ.png

asciiship

GitHub 连结

此为官方的 Theme ,使用 git-infoduration-info 显示相关的讯息。

https://ithelp.ithome.com.tw/upload/images/20210923/20107789ajy1lYmaMr.png

completion

GitHub 连结

此为官方的 Module ,提供指令的相关提示,需要搭配 zsh-users/zsh-completions 来提供指令的资讯补完。

https://ithelp.ithome.com.tw/upload/images/20210923/20107789cJ411z0v4j.png

zsh-users/zsh-autosuggestions

GitHub 连结

zsh-autosuggestions 会记忆使用者之前的指令,然後再输入相似的指令时对使用者做提示,如果确认之後,可以使用右箭头按钮完成输入。

https://ithelp.ithome.com.tw/upload/images/20210923/20107789bWFpuTTOyJ.png

zsh-users/zsh-syntax-highlighting

GitHub 连结

zsh-syntax-highlighting 提供 Zsh 指令高亮的显示。

https://ithelp.ithome.com.tw/upload/images/20210923/201077891QsxBmlGr1.png

zsh-users/zsh-history-substring-search

GitHub 连结

zsh-history-substring-search 让使用者可以输入指令的一部分,然後使用上下方向键选取之前与现在所输入的字串有吻合的指令。

https://ithelp.ithome.com.tw/upload/images/20210923/20107789LdYFpNi7Fs.png

其他的 Modules

Zim 提供了许多的 ModulesThemes ,可以依照需求做安装,像是 homebrew 提供了 brew 指令的别名。

另外也有许多第三方的套件也可以使用 Zim 来管理,只要是使用 {init.zsh,module_name.{zsh,plugin.zsh,zsh-theme,sh}} 的档案安装的套件都可以,如果不是的话,也可以使用 zmodule --source 指定安装的档案。

这些第三方套件,像是 Spaceshipalias-tips 等,都可以藉由 awesome-zsh-plugins 寻找。

本文重点整理

  • 使用 Zim 可以快速扩充 Zsh 的功能,并且避免撰写细部的脚本。
  • Zim 的使用在於两个关键字: zimfwzmodule
  • 指令 zimfw 可以安装、更新与解安装於 ~/.zimrc 设定的套件( Modules )。
  • zmodule~/.zimrc 中设定各种想要载入的套件。
  • Zim 预设载入的套件提供了:
    • 别名。
    • 当前资讯( Git 、指令执行时间)。
    • 自动提示与补完。
    • 语法高亮。
    • 历史指令查找。
  • 除了预设套件, Zim 也提供其他许多的套件,供使用者选择。
  • 第三方套件也可以藉由 Zim 安装。

参考资料


<<:  企划实现(8)

>>:  Migrations

《DAY 29》天气 App 实作(二)

昨天已经把 struct 写好了,今天来呈现资料在手机画面上,在此之前可以先上网搜寻 API 说明文...

资料库连接练习

我们继续熟悉资料库连接的操作吧! 这次是沿用漫画爬虫的程序码,但我目前只要两笔资料:漫画编号、漫画名...

Day 06 Interrupts for controlling peripherals

Utilize Mbed API to implement interrupts Purpose o...

浅谈Web应用系统安全 - 骇客攻防战

跨站脚本攻击(XSS) 攻击 XXS就是透过网页没有适当筛选、处理文字造成的漏洞 例如有用户将<...

Day 3:建立专案(一)

软件专案通常由许多程序码档案以及资源档组成,C++ 专案透过编译、连结产生各平台的可执行档。多数专案...