大多数 Linux 发行版中的默认 Shell 是 Bash。Bash 是一个可靠的和传统的工具。然而,它缺乏一些自定义功能,比如漂亮的颜色、光标支持、代码自动补全等等,这里安装oh-my-zsh。
一、什么是oh-my-zsh
诸位大佬都知道,Linux
下shell
默认是bash
,但还有一种shell
,叫做zsh
它比bash
更加强大,功能也更加完善,zsh
虽说功能强大,但是配置比较复杂导致流行度不是很高。
之后经robbyrussell
大佬的开源项目 oh-my-zsh 吧,从此使用zsh
也就几行命令的事情。它提供了200多个可选插件(rails,git,OSX,hub,capistrano,brew,ant,php,python等),以及超过140个主题供你选择,安装后你将享受以下特性:
- 首先兼容bash
- 自动
cd
:只需输入目录的名称即可 - 命令选项补齐,比如输入
git
,然后按Tab
,即可显示出git
都有哪些命令 - 目录一次性补全:比如输入
Doc/doc
按Tab
键会自动变成Documents/document/
- 插件和主题支持(插件能进一步提升效率)
二、安装oh-my-zsh
首先安装zsh
sudo apt-get install -y zsh
切换shell为zsh
chsh -s /bin/zsh
重启终端,查看当前shell
echo $SHELL
输出/bin/zsh
表示安装成功。
zsh
默认情况下,鼠标右击为粘贴
下面安装oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
输出如下表示安装成功,命令提示符也变了.
## 三、配置oh-my-zsh
和bash
不同,zsh
的配置文件是~/.zshrc
,实际上oh-my-zsh
的默认配置也够我们使用了,但是这样其真正的强大之处并不能得到很好的体现,因此我们可以继续看看对应的插件和主题功能.
1.主题
oh-my-zsh
的主题非常丰富,可以用如下命令查看已有主题:
ls .oh-my-zsh/themes
选定一个主题,进入.zshrc
配置文件进行修改。
vim ~/.zshrc
找到ZSH_THEME="XXX"
表述,作相应更改即可,ys``steeef``powerlevel10k
都不错,也可改为randon
,将随机更换。更改后退出vi
,在终端中输入:
source ~/.zshrc
你会发现你的zsh主题变了。
2.插件
- incr
incr
是一款自动提示插件,功能非常强大。安装如下:
wget http://mimosa-pudica.net/src/incr-0.2.zsh
mkdir ~/.oh-my-zsh/plugins/incr
mv incr-0.2.zsh ~/.oh-my-zsh/plugins/incr
echo 'source ~/.oh-my-zsh/plugins/incr/incr*.zsh' >> ~/.zshrc
source ~/.zshrc
- syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
- zsh-autosuggestion
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
- autojump
在终端操作里面比较常用的算是文件夹之间的切换,这款插件极大地简化了路径跳转的操作,实现一键直达。
使用apt-get install sutojump
无法安装,只能手动安装。首先下载源码压缩包,解压到home/wudi
目录下,需要提前安装Python
安装gcc
安装GCC,运行如下程序:
apt-get update
sudo apt install build-essential
进入autojump-master文件夹,
chmod 777 /usr/local/autojump-master/install.py
cd /usr/local/autojump-master
python3 ./install.py
安装成功。
### 3.解决界面粘贴卡顿问题
参照解决方法
把下面的代码复制到 ~/.zshrc
文件中:
pasteinit() {
OLD_SELF_INSERT=${${(s.:.)widgets[self-insert]}[2,3]}
zle -N self-insert url-quote-magic # I wonder if you'd need `.url-quote-magic`?
}
pastefinish() {
zle -N self-insert $OLD_SELF_INSERT
}
zstyle :bracketed-paste-magic paste-init pasteinit
zstyle :bracketed-paste-magic paste-finish pastefinish
保存退出后,执行:source ~/.zshrc
。
参考资料:
1.oh-my-zsh:让终端飞
2.oh-my-zsh国内安装及配置
3.搞机: oh-my-zsh + autojump + screen 让你的终端起飞
4.autojump Git源码