百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

使用antigen轻松配置强大的zsh环境,你值得拥有

liuian 2024-11-28 00:51 62 浏览

zsh是linux下功能最强大的shell了,但是zsh配置起来比较复杂,因此就出现了ohmyzsh这样的自动配置框架,一行代码即可使用预配置好的zsh。但是ohmyzsh的可定制性并不强,使用的时候只能用它的那一套。因此又出现了antigen这样的zsh包管理器,利用它,我们可以非常自由的对zsh进行定制。



安装antigen

antigen利用了git来下载项目,所以首先需要先安装git、zsh、curl等软件。下面假设你的系统是Ubuntu,如果你使用其他系统,注意将包管理器的安装命令替换为对应系统的。

apt install git zsh curl

安装完必要软件之后,就可以安装antigen了。antigen安装很简单,就是一个单文件的zsh脚本。我们把它安装为用户主目录中的隐藏文件。

cd ~
curl -L git.io/antigen > .antigen.zsh

配置antigen

antigen配置起来也比较方便,直接修改你的zshrc文件即可。如果没有的话,首先在用户主目录下创建zshrc文件。

nano ~/.zshrc

然后将zshrc文件修改类似下面这样的。前面一部分就是antigen的配置部分,在这里添加要使用的antigen插件、主题、ohmyzsh插件等等。配置完毕之后使用antigen apply完成配置。接下来就是你自己的shell配置了。

source ~/.antigen.zsh

# 加载oh-my-zsh库
antigen use oh-my-zsh

# 加载oh-my-zsh中的插件
antigen bundle git
antigen bundle heroku
antigen bundle pip
antigen bundle command-not-found

# 语法高亮功能
antigen bundle zsh-users/zsh-syntax-highlighting

# 代码提示功能
antigen bundle zsh-users/zsh-autosuggestions

# 自动补全功能
antigen bundle zsh-users/zsh-completions

# 加载主题
antigen theme robbyrussell

# 保存更改
antigen apply

# zshrc的其他部分,你的自定义配置,例如shell缩写
alias ga='git add .'

配置完毕之后就可以输入zsh进入zsh交互环境了。第一次运行的时候,antigen会开始下载和同步上面配置的各种插件。稍等片刻就可以进入到配置好的zsh环境中了。利用zsh的自动补全、代码提示、语法高亮等功能,我们可以非常舒适的使用命令行。


如下图所示,输入命令的时候,会实时显示命令是否正确,命令输入正确以后就会显示绿色;而且在命令输入过程中也可以进行补全, 补全还可以用于子命令和参数,zsh还会根据已输入的字符提供可用选项。这一切都是bash和其他shell不能提供的。


antigen下载的时候会从github克隆很多项目,如果你网络不好的话,很容易失败,导致进入一个空空如也的zsh环境。如果想要让antigen重新下载的话,删除它的缓存目录即可,缓存目录位于用户主目录下,也是隐藏文件夹。

rm -rf .antigen

使用ohmyzsh的主题和插件

antigen和ohmyzsh完全兼容,所以可以非常轻松的使用ohmyzsh的主题和插件。利用这些主题和插件,我们可以轻松地让终端更加强大。


先来看看ohmyzsh的插件,插件位于源码仓库的plugins文件夹下。插件一般提供相关命令的补全和提示功能,有些插件还提供了常用命令的缩写,可以简化我们输入的代码。当然,如果添加太多插件的话,会影响终端的响应速度,所以大家最好只添加自己常用的插件。

https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins

例如我经常使用git、maven、gradle、npm等功能,就可以把ohmyzsh中的对应插件添加到antigen中,这样就可以享受到对应命令提示和补全的功能了。

antigen bundle git
antigen bundle mvn
antigen bundle gradle
antigen bundle npm

ohmyzsh还提供了丰富的主题,光是内置的主题就有几十个之多,大家可以按自己喜好进行选择。

https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

下面是ohmyzsh的主题页面的部分截图,大家可以寻找自己喜爱的主题。

配置目录间快捷跳转

ohmyzsh的z插件可以轻松记录你访问过的目录,这样,你仅仅需要输入目录名而非完整路径即可完成跳转。

z nginx
# 相当于
cd /etc/nginx

但是z插件是用shell实现的,速度非常慢。因此有大神用lua脚本重新实现了一个速度更快功能更强大的版本,z.lua。它是用lua实现的,所以首先需要安装lua。

apt install lua5.3

然后将下面的代码片段添加到antigen中即可。

antigen boundle skywind3000/z.lua
antigen boundle changyuheng/fz

function _z() { _zlua "$@"; }

关于z.lua的文档可以参考其官方Github。

https://github.com/skywind3000/z.lua/blob/master/README.cn.md

配置powerline10k主题

ohmyzsh内置的主题虽然丰富,但是速度一般、功能不是很足。如果你打开了一个大型git项目,默认的主题显示速度可能就跟不上了。powerline10k是一个优秀的主题,不仅提供了大量自定义外观可以设置,而且还提供了instant模式,异步加载并显示主题,保证你终端的使用体验。


要使用powerline10k主题非常简单,添加下面的antigen行即可。

antigen theme romkatv/powerlevel10k

第一次使用的时候,powerline10k会开启一个交互环境,引导我们设置主题样式,最后还会询问我们是否开启instant模式。这一切都非常简单,只需选择是否即可。设置完成以后,powerline10k会将配置写入zshrc文件中。


以下是我的设置样式,我比较喜欢平行四边形这种样式,棱棱角角的比较好看。



大家的shell环境是怎么配置的呢?如果有什么好东西的话,也可以在评论区一起分享。觉得有用的话,关注+转发,谢谢各位了!

相关推荐

Python生态下的微服务框架FastAPI

FastAPI是什么FastAPI是一个用于构建API的web框架,使用Python并基于标准的Python类型提示。与flask相比有什么优势高性能:得益于uvloop,可达到与...

SpringBoot:如何解决跨域问题,详细方案和示例代码

跨域问题在前端开发中经常会遇到,特别是在使用SpringBoot框架进行后端开发时。解决跨域问题的方法有很多,我将为你提供一种详细的方案,包含示例代码。首先,让我们了解一下什么是跨域问题。跨域是指在...

使用Nginx轻松搞定跨域问题_使用nginx轻松搞定跨域问题的方法

跨域问题(Cross-OriginResourceSharing,简称CORS)是由浏览器的同源策略引起的。同源策略指的是浏览器限制来自不同源(协议、域名、端口)的JavaScript对资源的...

spring boot过滤器与拦截器的区别

有小伙伴使用springboot开发多年,但是对于过滤器和拦截器的主要区别依然傻傻分不清。今天就对这两个概念做一个全面的盘点。定义与作用范围过滤器(Filter):过滤器是一种可以动态地拦截、处理和...

nginx如何配置跨域_nginx配置跨域访问

要在Nginx中配置跨域,可以使用add_header指令来添加Access-Control-Allow-*头信息,如下所示:location/api{if($reques...

解决跨域问题的8种方法,含网关、Nginx和SpringBoot~

跨域问题是浏览器为了保护用户的信息安全,实施了同源策略(Same-OriginPolicy),即只允许页面请求同源(相同协议、域名和端口)的资源,当JavaScript发起的请求跨越了同源策略,...

图解CORS_图解数学

CORS的全称是Cross-originresourcesharing,中文名称是跨域资源共享,是一种让受限资源能够被其他域名的页面访问的一种机制。下图描述了CORS机制。一、源(Orig...

CORS 幕后实际工作原理_cors的工作原理

跨域资源共享(CORS)是Web浏览器实施的一项重要安全机制,用于保护用户免受潜在恶意脚本的攻击。然而,这也是开发人员(尤其是Web开发新手)感到沮丧的常见原因。小编在此将向大家解释它存在...

群晖无法拉取Docker镜像?最稳定的方法:搭建自己的加速服务!

因为未知的原因,国内的各大DockerHub镜像服务器无法使用,导致在使用群晖时无法拉取镜像构建容器。网上大部分的镜像加速服务都是通过Cloudflare(CF)搭建的,为什么都选它呢?因为...

Sa-Token v1.42.0 发布,新增 API Key、TOTP 验证码等能力

Sa-Token是一款免费、开源的轻量级Java权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、微服务网关鉴权等一系列权限相关问题。目前最新版本v1.42.0已...

NGINX常规CORS错误解决方案_nginx配置cors

CORS错误CORS(Cross-OriginResourceSharing,跨源资源共享)是一种机制,它使用额外的HTTP头部来告诉浏览器允许一个网页运行的脚本从不同于它自身来源的服务器上请求资...

Spring Boot跨域问题终极解决方案:3种方案彻底告别CORS错误

引言"接口调不通?前端同事又双叒叕在吼跨域了!""明明Postman能通,浏览器却报OPTIONS403?""生产环境跨域配置突然失效,凌晨3点被夺命连环Ca...

SpringBoot 项目处理跨域的四种技巧

上周帮一家公司优化代码时,顺手把跨域的问题解决了,这篇文章,我们聊聊SpringBoot项目处理跨域的四种技巧。1什么是跨域我们先看下一个典型的网站的地址:同源是指:协议、域名、端口号完全相...

Spring Cloud入门看这一篇就够了_spring cloud使用教程

SpringCloud微服务架构演进单体架构垂直拆分分布式SOA面向服务架构微服务架构服务调用方式:RPC,早期的webservice,现在热门的dubbo,都是RPC的典型代表HTTP,HttpCl...

前端程序员:如何用javascript开发一款在线IDE?

前言3年前在AWSre:Invent大会上AWS宣布推出Cloud9,用于在云端编写、运行和调试代码,它可以直接运行在浏览器中,也就是传说中的WebIDE。3年后的今天随着国内云计算的发...