Linux/Mac通过Oh-my-zsh配置Zsh插件,让你的终端更加强大且智能

作者:Mintimate

博客:www.mintimate.cn

Mintimate's Blog,只为与你分享

头图不能少?

Zsh

几个月前,我们就介绍了ZSH(z shell),并介绍配置了Oh-my-zsh:Linux/Mac如何配置ZSH并使用Oh-my-zsh?让你的终端更加实用、美观:https://cloud.tencent.com/developer/article/1784739

macOS和Arch Linux都默认使用Zsh作为默认Shell,你可以在Terminal输入:

# 直接看环境变量
echo $SHELL
# 或者用$0查看
echo $0

在腾讯云轻量应用服务器上配置的zsh

如果你显示的是bash或者/bin/bash,那么说明你使用的是Bash。你可以在看完本篇文章后,配合上文提到的文章,按需定制的你Shell,助力开发。

Oh-my-zsh

上篇文章,我们安装好Zsh,其实就相当于做好了一辆车?的骨架,还需要安装轮子和发动机等等。而使用Oh-my-zsh这样的Zsh配置框架,能快速帮我们组装好这样汽车,让它能跑起来。

激活oh-my-zsh,可以直接直观体会到:

  • 丰富的代码提示:oh-my-zsh默认对文件和文件夹或注释和代码进行颜色分阶显示,增加Terminal在操作时候的可读性。
  • 命令自动填充:对一些目录和文件操作的时候,我们甚至不需要提前用lsll等命令对文件进行扫描或记忆,只需要按Tab键即可遍历或填充

Zsh自动填充提示

实际上,Oh-my-zsh还支持很多丰富的插件,甚至可以说,Oh-my-zsh自带了很多丰富的插件,等着你去激活。

虽然很多人觉得Oh-my-zsh过于臃肿,以至于Terminal在启动过程中,需要花费好几秒去读取配置。但是,实际上你激活的插件适当,不是激活那么多插件,Oh-my-zsh并不会拖慢多少速度。如果实在觉得Oh-my-zsh臃肿,那么下次我介绍一下zimfw?

本次教程就推荐大家我常用的插件,并演示如何使用。

前置依赖

本次教程和演示,需要的前置依赖:

  • Linux或macOS已经配置了Zsh

如果你实现并没有配置Z sh,你可以参考文章:https://cloud.tencent.com/developer/article/1784739

另外,本次教程使用腾讯云轻量应用服务器的Debian系统进行操作,同是支持腾讯云轻量应用服务器的CentOS系统以及macOS系统。

如果一些Linux新手,之前并没有使用Linux,十分推荐一开始就换Zsh,也很推荐买一台腾讯云轻量应用服务器进行学习,效果可比本地虚拟机好多了。

推荐Lighthouse

致开发者

如果你也是开发者,而且使用或者希望使用腾讯云的产品,或者对腾讯云产品有什么意见或建议。欢迎各位开发者加入腾讯TDP哦,当然也可以进来交流交流代码技术或Linux使用(比如:怎么样的Shell才是最好的Shell……哈哈?):

TDP

配置思路

本次教程使用Oh-my-zsh作为Zsh框架进行插件的配置,你可以根据自己的喜好,使用其他Zsh框架进行插件配置。

内置插件

Oh-my-zsh其实已经默认自带一些插件,如果你已经安装好Oh-my-zsh,可以进入$HOME/.oh.my-zsh/plugins内查看:

Oh-my-zsh自带的插件

另外,如果想看Oh-my-zsh自带那些插件,也可以Web上查看:https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins

这些自带插件,会随着Oh-my-zsh的更新而更新:

Oh-my-zsh更新

本次教程,就和大家介绍我常用的自带插件:encode64gitcpsudo插件:

推荐的内置插件

有没有小伙伴好奇,我安装的brew和nvm插件呢?

encode64

先介绍一个好玩,关键时候有点用的插件。

简单“滴”说,这个插件就是文本和Base64互转。再也不用搜索引擎搜索“Base64在线转码了”

首先是$HOME/.zshrc文件内的存在一个plugin配置项,实际上这个是一个数组对象,在里面添加encode64来激活我们的encode64插件:

激活encode64

之后,不要忘记重载环境变量(source命令):

source ~/.zshrc

不出意外就可以使用了:

# Base64编码
e64 "Hello World"
encode64 "Hello World"
# Base64解码
d64 SGVsbG8gV29ybGQ=
decode64 SGVsbG8gV29ybGQ=

使用效果

当然,如果是一些Zsh关键字,比如"<等,记得转义哦。

现在,可以看到插件也不是很难,我们看看更多实用的插件。

git

这个插件,实际上是Oh-my-zsh安装时候,就自动激活的。目的很简单:简化git命令,原理是使用了alias来给命令取别名。

举个例子,我本来使用git命令,添加当前文件夹里所有文件进行,以备commit,是不是需要:

git add --all

但是,我们可以编写一条alias来简化:

alias gaa='git add --all'

把这个简化命令,写到$HOME/.zshrc等环境变量后,就可以用gaa命令来调用git add --all了。

事实上,Oh-my-zsh里的git插件就是这样简化的。

部分命令简化表:

简化后的命令

原命令

g

git

ga

git add

gaa

git add --all

gapa

git add --patch

gau

git add --update

gav

git add --verbose

gap

git apply

gapt

git apply --3way

gb

git branch

gba

git branch -a

gcan!

git commit -v -a --no-edit --amend

gcans!

git commit -v -a -s --no-edit --amend

gcam

git commit -a -m

gcas

git commit -a -s

gcasm

git commit -a -s -m

gcsm

git commit -s -m

gcb

git checkout -b

gcf

git config --list

gcl

git clone --recurse-submodules

gccd

git clone --recurse-submodules "$@" && cd "$(basename $_ .git)"

gclean

git clean -id

gpristine

git reset --hard && git clean -dffx

gignore

git update-index --assume-unchanged

gignored

git ls-files -v | grep "^:lower:"

git-svn-dcommit-push

git svn dcommit && git push github $(git_main_branch):svntrunk

gk

gitk --all --branches &!

gke

gitk --all $(git log -g --pretty=%h) &!

gl

git pull

当然,还要看你用不用的喜欢了。有些小伙伴,平时就是pushcommitpull,也没必要简化。或者用GitHub Desktop感觉很够用,也没必要简化了。

cp

cp插件,我平常也有使用,原理是使用rsync让你获得特性和更好的安全性:

cp命令

这个插件也是和刚刚encode64的激活方法一样(在$HOME/.zshrc内的plugins里插入,并重载环境变量)。

插件定义后,就会有一个cpv的命令。比如,我们移动文件夹:

cpv payload_dumper-master temp --progress -r -hhh

cpv命令

其中:

  • --progress:显示进度条
  • -r:递归
  • -hhh:同freedu等命令的-h

有点像cp命令,加带-v命令:

cp -v -r payload_dumper-master temp

cp命令

sudo

其实我挺喜欢这个插件的。平时我用腾讯云轻量应用服务器的Debian系统比较多,并且都是用root用户直接操作。但是,用Ubuntu系统时候,用ubuntu用户操作时候,经常忘记加sudo提权限。

举个例子,我在Linux上,使用systemctl去操作启动,已经输入完命令,却发现自己没有在命令前,加提权的sudo,这个时候要把光标移动到最前面添加sudo么?

systemctl restart aria2

systemctl

过去是这样的,但是如果使用sudo插件就不需要了。 在$HOME/.zshrc内添加sudo:

添加sudo

之后,source文件后,我们遇到上述情况,只需要按两下ESC,即可自动填充。

非内置插件

终于到非内存插件了。这里我就讲两个插件:

  • zsh-syntax-highlighting
  • zsh-autosuggestions

可以说是非常好用。非内置插件,是安装在$HOME/.oh-my-zsh/custom/plugins内:

非内存插件

zsh-syntax-highlighting

首先是zsh-syntax-highlighting:https://github.com/zsh-users/zsh-syntax-highlighting

这个可以说,真的是让你Terminal更加好看让你的Terminal命令更有可读性╮( ̄▽ ̄"")╭。

其实就是输入命令时候,对文件夹、文件进行下划线标识。命令使用高亮颜色标识:

插件效果

或者看看官方用例:

官方Demo

安装方法很简单啦,毕竟我们用Oh-my-zsh框架。只需要Git到Oh-my-zsh的plugins文件夹后激活即可:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

安装完成,查看文件

之后,在$HOME/.zshrc内激活即可:

激活插件

激活插件成功

zsh-autosuggestions

接下来是第二个第三方插件:https://github.com/zsh-users/zsh-autosuggestions。看名字,相信大家都知道这个是干什么的了:自动给出建议?

确实是这样,有点想编译器给出代码提示,比如:

自动代码提示

可以看到,有灰色的提示。这个是根据你的$HOME/.zsh_history来给你命令提示。

如果你觉得这个提示就是你想要的,只需要按方向键->,即可自动填充。

安装这个插件很简单(毕竟用了Oh-my-zsh框架(*≧ω≦*))

和刚刚一样,进行Git操作:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

克隆成功

之后,和刚刚一样去激活即可:

激活

不要忘记重载环境变量:

source

脚本配置

和之前配置oh-my-zsh一样,我也写了一个一键配置脚本。让大家更快使用,首先需要注意:

  • $HOME/.zshrc内已经配置的环境变量注意保存,否则脚本会备份为zshrcBak
  • $HOME/.oh-my-zsh也需要注意(如果有修改,比如:安装其他插件),否则备份为oh-my-zsh-Bak

一键脚本:

zsh -c "$(curl -fsSL 'https://api.host.mintimate.cn/fileHost/public/download/2Kof')"

一键脚本

这样的脚本,时候一开始使用oh-my-zsh就配置嗷。可以把文章收藏,以后用~~

END

到此,我们的Oh-my-zsh配置Zsh插件就结束了。你的终端有没有更强大呢?或者说,你的Linux武器有没有更强大?哈哈,本次分享就到这里嗷。有机会讲讲其他Zsh框架。

最后,新年快乐嗷~~~

新年快乐~~

原文地址:https://cloud.tencent.com/developer/article/1940112

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限!!!粘滞位!!!超详解!!!
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Windows、Linux、MacBook_mack book 安装qt
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Linux——了解操作系统的发展历史以及初次体验Linux编程环境
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,个人学习时很认真的记录的,觉得好的麻烦点个赞。
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.5p1(亲测无问题,建议收藏)_openssh_9.5p1
文章浏览阅读3.5k次,点赞93次,收藏78次。初识Linux中的线程,理解线程的各种概念,理解进程地址空间中的页表转换,介绍pthread线程库并理解线程库!
文章浏览阅读863次。出现此问题为Linux文件权限问题,解决方案为回到引擎目录执行命令。输入用户密码后运行./UnrealEditor。_increasing per-process limit of core file size to infinity.
文章浏览阅读2.9k次。使用文本编辑器:打开CSV文件,并使用文本编辑器(如Notepad++、Sublime Text、Visual Studio Code等)来查看文件的字符编码格式。通常在编辑器的底部状态栏或设置中可以找到当前编码的显示。请注意,上述方法并非绝对准确,特别是当文件没有明确的编码标识时。因此,如果你发现CSV文件在不同的工具或方法中显示不同的编码格式,可能需要进行进一步的分析和判断,或者尝试使用不同的编码转换方法。该命令将输出文件的MIME类型和编码信息。使用命令行工具:在命令行中,你可以使用。_shell读取csv文件逐行处理
本文介绍了如何在Linux系统中升级gcc版本,以便更好地支持C++11及以上版本的新特性。通过升级gcc,可以提升编译器的功能和性能,获得更好的开发体验。详细的步骤和方法请参考原文链接。
文章浏览阅读4.4k次,点赞6次,收藏19次。Mosquitto是一个开源的MQTT消息代理服务器。MQTT是一个轻量级的、基于发布/订阅模式的消息传输协议。 mosquitto的安装使用比较简单,可以方便的来进行一些测试。_linux mosquitto
文章浏览阅读7.2k次,点赞2次,收藏12次。Linux中,用于根目录下有一个.ssh目录,保存了ssh相关的key和一些记录文件。_~/.ssh/
文章浏览阅读4.5k次,点赞5次,收藏18次。首先需要安装 snmp ,使用下面的命令进行安装安装完毕之后,使用下面的命令查看是否安装成功当命令行显示如图即为安装成功。_snmp工具
文章浏览阅读3.5k次,点赞7次,收藏24次。本地部署和使用llama.cpp进行量化Llama2,linux和Windows平台方案,支持CPU和GPU多版本。_llama cpp gpu
文章浏览阅读1.4k次,点赞46次,收藏44次。在vim中,最为常见的有三种模式,分别是:命令模式(command mode)、插 入模式(Insert mode)和底行模式(last line mode)文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,shift+: 即可进入该模 式。在进入vim后,使用 i 进入插入模式,插入模式就是vim的编辑模式,可以在vim中进行内容的编辑和修改。vim的核心模式,使用vim进入文件编辑时的最初模式,在该模式中只能移动光标和使用命令对文件内容进行编辑。
Linux常用命令大全,包括目录操作命令和文件操作命令,以及查看登录用户命令和文件内容查看命令等。
文章浏览阅读1.7k次,点赞57次,收藏50次。Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用.本地部署,注重隐私,简单高效的MYSQL审计平台。下面介绍Linux 简单部署Yearning 并结合cpolar 内网穿透工具实现远程访问,破除访问限制,提高工作效率!!
文章浏览阅读1.9w次,点赞7次,收藏18次。Microsoft Edge是一款现代化的浏览器,它拥有众多功能和强大的性能,为用户带来更加流畅的浏览体验。Edge最近推出了分屏功能,支持一个窗口同时显示两个选项卡,这可以大大提高生产力和多任务处理能力。欢迎大家使用分屏及其他新功能后分享自己的使用心得与建议。首先,使用Microsoft Edge的分屏功能确实能够提高生产力,尤其是在需要同时浏览两个不同网页的情况下。分屏功能使得在一个窗口中同时显示两个选项卡,用户可以在两个网页之间快速切换,而无需打开新的窗口或使用多个浏览器窗口。_edge linux
文章浏览阅读1.8k次,点赞83次,收藏71次。C语言实现倒计时和进度条并进行演示。_linux不换行输出倒计时
文章浏览阅读1.5k次,点赞28次,收藏25次。基于嘉立创泰山派开发板,本机使用VMware+Unbuntu,编译泰山派的Linux SDK。详细教程,0基础小白可操作!内涵大量基础操作和linux基本知识。_立创泰山派sdk编译