如何打造一个惊艳的终端
最近发现了一个不错的插件zsh-autosuggestions,这是oh-my-zsh的一个试用插件,可以实现在终端下动态显示历史输入记录的效果。
在 OSX 和 linux 下默认是bash,但是提示功能不够强大。zsh的功能极其强大,只是配置过于复杂,起初只有极客才在用。后来,程序员robbyrussell创建了一个名为oh-my-zsh的开源项目,然后出现了oh-my-zsh的一个试用插件zsh-autosuggestions。
所以安装 zsh-autosuggestions的步骤 是:安装zsh->安装oh-my-zsh->安装zsh-autosuggestions。本文以 mac 为例进行介绍。
1 安装 zsh
使用命令cat /etc/shells
可以查看系统安装了哪些 shell。在 mac 中默认安装了zsh,所以将默认 shell 修改为 zsh。
1 | echo $SHELL #查看默认shell |
2 安装 oh my zsh
安装 oh my zsh 之前必须安装zsh,否则会收到如下提示:Zsh is not installed! Please install zsh first!
1 | git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh |
3 配置 oh my zsh
oh my zsh的配置文件是~/.zshrc,该文件默认是没有的,可以直接拷贝oh-my-zsh中的模板。命令如下:
1 | cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc |
在模板文件zshrc.zsh-template中,默认使用的是robbyrussell主题。
通过命令ls ~/.oh-my-zsh/themes
可以查看oh my zsh的所有主题。
1 | ls ~/.oh-my-zsh/themes |
4 安装配置 zsh-autosuggestions
首先 clone zsh-autosuggestions。
1 | git clone git://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions |
然后配置zsh-autosuggestions。在~/.zshrc文件中添加如下代码:
1 | source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh |
5 配置zsh的命令提示符主题
oh-my-zsh默认的命令提示符样式比较繁琐,可以根据自身需要在robbyrussell主题中配置oh-my-zsh命令提示符的样式。需要注意的是,对于bash,其命令提示符配置在.bashrc文件中。
此外,为了避免oh-my-zsh 更新对我们自定义的配置造成影响,所以可以拷贝一份主题进行配置。
1 | cp ~/.oh-my-zsh/themes/robbyrussell.zsh-theme ~/.oh-my-zsh/themes/my_robbyrussell.zsh-theme |
在my_robbyrussell.zsh-theme中,PROMPT变量就是用来配置命令提示符的格式的,而在 bash 中,PS1变量是用来配置命令提示符格式的。可以修改PROMPT的值如下:
1 | PROMPT='%{$fg_bold[magenta]%}%n%{$fg_bold[cyan]%}@%{$fg[green]%}%m %{$fg_bold[green]%}%p%{$fg[cyan]%}%1d %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$fg[magenta]%}%(?..%?%1v)%{$fg_bold[blue]%}? %{$fg[yellow]%}# ' |
上面代码中出现的变量,如下表所示:
变量 | 含义 |
---|---|
%% | 一个’%’ |
#%). | 一个’)’ |
%y | 当前的tty名 |
%l | 当前的tty名,如 pts/1 |
%M | 完整主机名 |
%m | 主机名(在第一个句号之前截断) |
%n | 当前用户名 |
%. %c %C | 前两个显示相对路径的当前文件夹名,最后一个是绝对路径(也就是说,前两个在家目录下显示’~’,最后那个显示你的用户名),’%’后的数字表示显示几层路径 |
%N | zsh 正在执行的脚本/函数名。如果’%’后跟了数字,似乎还有其他作用 |
%L | 当前shell的层数,可以参考《盗梦空间》的层数 |
%j | 当前正在进行的工作数量 |
%i | 与%!类似:The line number currently being executed in the script, sourced file, or shell function given by %N. This is most useful for debugging as part of $PS4. |
%! | 显示当前历史事件号码(也就是打开shell后第几条命令) |
%/ %d | 显示当前工作路径($pwd)。如果’%’后面是一个整数,它指定显示路径的元件的数量;没有数字就显示整个路径。一个负整数就是指定主目录,即%-1d代表第一部分 |
%~ | 目前的工作目录相对于~的相对路径 |
%? | 返回最后命令的执行结果的代码 |
%# | 用户组,#(普通用户)/%(超级用户) |
然后在.zshrc 文件中修改主题:
1 | ZSH_THEME="my_robbyrussell" |
大功告成!