体验一下zsh
linux人机交互使用的是shell,shell是一个统称,具体的,比如 sh、bash、zsh等,一般来说,linux都默认安装bash作为默认shell,mac默认为zsh,今天来体验一下zsh。
zsh在使用ohmyzsh进行配置后有很多很花的玩法,界面主题也花里胡哨,各种跳转补全啥的也花里胡哨
安装
ubuntu中可以直接使用命令安装:
sudo apt install zsh
安装完成后,就能使用 zsh
命令切换到zsh了,因为是使用bash打开的zsh,所以bash中的环境变量也会被zsh继承。当然,也可以通过以下命令将zsh设置为默认shell,这样的话下次再打开shell就是zsh了(例如如果没有设置默认,重新进入shell后又会回到bash):
sudo chsh -s /bin/zsh
配置
同bash有自己的配置文件 ~/.bashrc
一样,zsh也有自己的配置文件 .zshrc
,它们本质上都是一个shell启动时的执行脚本,关于shell的配置文件,详见这里(注:zsh并不读取/etc/profile
环境配置,而是使用/etc/zsh/zprofile
作为环境变量配置)
zsh同bash一样,可以有很多自定义配置,但往往个人配置起来耗时费力,所以有个项目可以帮你减少这些配置 “ohmyzsh”,它实际上就是一个shell脚本,运行这个脚本之后它会替换掉你home目录下的 .zshrc
文件,并且创建一些列文件夹用于保存要安装的插件、主题等。
根据ohmyzsh官网说明安装很简单:
# 官网提供了很多种安装方式,但本质上都是下载一个shell脚本并执行
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
执行完成后它会将你原本的.zshrc
文件重命名为.zshrc.pre-oh-my-zsh
,并在home目录下创建一个.oh-my-zsh
文件夹,里面存放zsh下载的主题、插件等文件,并创建环境变量 $ZSH
指向该文件夹
主题和插件
安装ohmyzsh之后,打开.zshrc
文件,若要修改主题,找到变量 ZSH_THEME
,改变其值即可,可以修改的主题名详见这里,每个主题都有截图
若要安装插件,则找到plugins
变量,它是一个数组,将要安装的插件名写到里面即可(插件之间使用空格、tab、换行区分,不能使用逗号)。可以直接写名称的插件见这里(事实上,这些插件都已经下载好了并存放在~/.oh-my-zsh/plugins/
目录下)
有些插件不是官方提供的,可以直接将插件目录复制到~/.oh-my-zsh/plugins/
目录下,然后在配置种写上该名称即可。
推荐主题和插件
主题看很多人用的是 agnoster,安装这个主题之前通常还要安装一个字符集,不然显示可能不正常 sudo apt-get install fonts-powerline
,vscode终端显示异常解决办法见下文
插件一般安装:
git:在git仓库文件夹下会有很多关于git状态的提示
zsh-autosuggestions:这个插件可以在输入命令时,以灰色字体提示历史命令,免去了按 ctrl+r
操作,需要下载后安装
-
下载插件到
~/.oh-my-zsh/plugins/
目录下:git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions -
在
.zshrc
的plugins中加上 zsh-autosuggestions 即可 -
执行
source .zshrc
使其生效
注:由于有些终端(xterm或者screen等)默认只有8色,不支持很多其他颜色,故该插件实际显示效果上会有bug,解决办法:在 ~/.zshrc
中加入下面这段代码修改默认终端:
# 原本为 xterm/screen,现修改为xterm-256color将支持更多颜色,可以使用 tput colors 命令查看支持颜色数量
export TERM=xterm-256color
zsh-syntax-highlighting:可以让你输入的命令变得花里胡哨,例如命令和参数使用不同的颜色显示。它也需要下载后安装,过程同上
相关问题
anaconda环境变量
若在安装zsh之前已经通过bash安装过anaconda(或miniconda),则在使用zsh时conda环境并没有正确配置。这是因为安装conda后会在.bashrc
种加上一段关于conda的配置,而zsh因为是后面才安装的,所以没有。
解决方法也很简单,因为zsh几乎是兼容bash的,故直接将.bashrc
中关于conda的配置复制到.zshrc
中即可
tmux还是进入bash
即使设置了zsh为默认shell,打开tmux后仍然进入的是bash,解决办法是:
进入tmux后,按下 ctrl + b
后按 :
进入命令行,输入 set-option -g default-shell /bin/zsh
即可(不是一次性的,也是永久的)
或者创建文件~/.tmux.conf
,然后将上面的命令写到该文件中,一劳永逸
VSCode Terminal 显示异常
安装了agnoster主题后,vscode终端还是显示不了正确的字符,解决办法为:
git clone https://github.com/abertsch/Menlo-for-Powerline.git
cd Menlo-for-Powerline
sudo cp 'Menlo for Powerline.ttf' /usr/share/fonts
然后去vscode设置界面,搜索 terminal.integrated.fontFamily,在里面输入 Menlo for Powerline,重启vscode即可
参考:https://blog.zhaytam.com/2019/04/19/powerline-and-zshs-agnoster-theme-in-vs-code
p10k安装
首先安装推荐字体(不安装也可以,只不过少了很多图标和提示功能)
按照下图配置(源于p10k github截图),字体下载地址为这个 https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
然后配置终端和vscode
终端修改方式为:
然后安装p10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
再去 ~/.zshrc 设置主题 ZSH_THEME=“powerlevel10k/powerlevel10k”
重启zsh应该会弹出p10k的配置选项,如果没装字体的话这里的选项会少很多,如果没有弹出选项,则执行 p10k configure 即可。