用了这没久ubuntu了,才知道有oh-my-zsh这种东西,真是相见恨晚啊~
说到oh-my-zsh先要说一下zsh。zsh是linux的命令指示器类似于bash,我么平时使用的就是bash,支持的配置比较多方式比较多,使用起来跟bash也没啥区别,会使用bash就能直接上手没啥学习成本。
oh-my-zsh是一个配置zsh的项目,用于美化zsh界面,并提供一些智能插件,可以很大程度提升使用命令行的效率。
我用的是ubuntu系统,演示ubuntu安装的方法:
sudo apt-get install zsh
chsh -s /bin/zsh
这里要输入账号的密码,这样就zsh就安装成功了,注意:
github上的项目地址
确保你的电脑上有git,没有就装一个:
sudo apt-get install git
由于墙的缘故,github上提供的前两个下载方法我都不能使用,404,只能通过直接git clone的方法:
git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
到这里oh-my-zsh就安装成功了,需要将环境变量等信息配置到~/.zshrc
文件中。
大家使用zsh方便是一方面,美观也是一方面。
我们打开~/.zshrc
文件可以在下图位置设置,zsh使用的主题,默认的就挺好看的,配置成random
的话每次启动zsh都会更换主题,可以通过这个方式找到你心仪的那个主题样式。
配置完成保存文件执行source ~/.zshrc
,主题就更换了。
同样是在打开~/.zshrc
文件,在plugins那一行中的括号里添加要使用的插件。
插件要安装到~/.oh-my-zsh/custom/plugins
目录中
裂墙推荐三个插件:
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
sudo apt-get install autojump
除了在还要在~/.zshrc
中配置plugins,还要将下面这句写到文件中:
[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh
这个autojump真的nb,用了之后直接起飞,举个例子:
我之前访问的一个很长的地址/mnt/2D97AD940A9AD661/Projects/springSecurityJwt/webflux_jwt/WebFlux_Security/build/libs
,因为访问过有记录,使用autojump通过键入j libs
就可以匹配到之前访问的地址:
此外autojump还有一些处理地址数据库的一些方法:
j -a path
: 将path加入链接库j -d value
: 降低当前目录的权重j -i value
: 提升当前目录value数目的权重j -s
: 显示数据库中的统计数据j --purge
: 清除不再需要的目录在服务器上不能使用x-term,为了方便会使用screen这类软件作为代替,同样在screen中也可以使用以上配置,需要配置screen信息:
vim .screenrc
shell "/usr/bin/zsh"
保存source之后就可以使用
hardstatus alwayslastline "%{=b}%{-b}%{R}[%{=b B}%-w%{=b BK}%>%n %t%{-}%+w%{-b}%< %=%{R}][%{-b}%{M}%m-%d %D %{G}%c%{R}]"
termcapinfo xterm* ti@:te@
~/.zshrc
中添加如下设置:
#screen integration to set caption bar dynamically
function title {
if [[ $TERM == "screen" || $TERM == "screen.linux" ]]; then
# Use these two for GNU Screen:
print -nR $'\033k'$1$'\033'\\\
print -nR $'\033]0;'$2$'\a'
elif [[ $TERM == "xterm" || $TERM == "urxvt" ]]; then
# Use this one instead for XTerms:
print -nR $'\033]0;'$*$'\a'
#trap 'echo -ne "\e]0;$USER@$HOSTNAME: $BASH_COMMAND\007"' DEBUG
fi
}
#set screen title if not connected remotely
function precmd {
title "`print -Pn "%~" | sed "s:\([~/][^/]*\)/.*/:\1...:"`" "$TERM $PWD"
echo -ne '\033[?17;0;127c'
}
function preexec {
emulate -L zsh
local -a cmd; cmd=(${(z)1})
if [[ $cmd[1]:t == "ssh" ]]; then
title "@"$cmd[2] "$TERM $cmd"
elif [[ $cmd[1]:t == "sudo" ]]; then
title "#"$cmd[2]:t "$TERM $cmd[3,-1]"
elif [[ $cmd[1]:t == "for" ]]; then
title "()"$cmd[7] "$TERM $cmd"
elif [[ $cmd[1]:t == "svn" ]]; then
title "$cmd[1,2]" "$TERM $cmd"
else
title $cmd[1]:t "$TERM $cmd[2,-1]"
fi
}
# 列出所有实例
screen -ls
# 开启实例
screen -R [name]
# attach一个Detached的实例
screen -r [name]
# attach一个已经Attached的实例
screen -x [name]
# Detach一个Attached的实例
screen -d [name]
# Detached当前实例
ctrl+a, d
# kill当前实例
ctrl+a, k
exit
# 关闭当前焦点所在的屏幕区块
ctrl+a, X
# 关闭除当前区块之外其他的所有区块
ctrl+a, Q
# 创建名字为test的实例
screen -S test
# 改名
ctrl+a, A
# 左右分屏
ctrl+a, |
# 创建新窗口
ctrl+a, c
# 上下分屏
ctrl+a, S
# 切换屏幕
ctrl+a, tab