搞机: oh-my-zsh + autojump + screen 让你的终端起飞

2020/08/21 17:27
阅读数 8.1K

在这里插入图片描述

用了这没久ubuntu了,才知道有oh-my-zsh这种东西,真是相见恨晚啊~

1. oh-my-zsh安装使用

说到oh-my-zsh先要说一下zsh。zsh是linux的命令指示器类似于bash,我么平时使用的就是bash,支持的配置比较多方式比较多,使用起来跟bash也没啥区别,会使用bash就能直接上手没啥学习成本。

oh-my-zsh是一个配置zsh的项目,用于美化zsh界面,并提供一些智能插件,可以很大程度提升使用命令行的效率。

1.1 zsh安装

我用的是ubuntu系统,演示ubuntu安装的方法:

  1. 通过apt安装zsh
sudo apt-get install zsh
  1. 将shell改成使用zsh
chsh -s /bin/zsh

这里要输入账号的密码,这样就zsh就安装成功了,注意:

  • 使用zsh后之前设置的一些快捷键环境变量都不能用了,即在.bashrc文件中的设置作废,因为这是bash的配置,现在要将你需要的快捷键环境配置到.zshrc文件中。

1.2 oh-my-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文件中。

1.2.1 设置主题

大家使用zsh方便是一方面,美观也是一方面。

我们打开~/.zshrc文件可以在下图位置设置,zsh使用的主题,默认的就挺好看的,配置成random的话每次启动zsh都会更换主题,可以通过这个方式找到你心仪的那个主题样式。

在这里插入图片描述

配置完成保存文件执行source ~/.zshrc,主题就更换了。

1.2.2 设置插件

同样是在打开~/.zshrc文件,在plugins那一行中的括号里添加要使用的插件。

在这里插入图片描述

插件要安装到~/.oh-my-zsh/custom/plugins目录中

裂墙推荐三个插件:

  • autojump 根据访问记录模糊地址跳转
  • zsh-syntax-highlighting 高亮提示
  • zsh-autosuggestions 根据访问记录进行提示

1.2.2.1 zsh-autosuggestions安装

git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

1.2.2.2 zsh-syntax-highlighting安装

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

1.2.2.3 autojump安装

sudo apt-get install autojump

除了在还要在~/.zshrc中配置plugins,还要将下面这句写到文件中:

[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh

2. autojump使用

这个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: 清除不再需要的目录

3. 配合screen使用

在服务器上不能使用x-term,为了方便会使用screen这类软件作为代替,同样在screen中也可以使用以上配置,需要配置screen信息:

3.1 创建screen配置文件

vim .screenrc

3.2 添加更改使用shell

shell "/usr/bin/zsh"

保存source之后就可以使用

3.3 screen 添加下标和滚动

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
}

3.4 screen常用命令

# 列出所有实例
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

总结

  • 工欲善其事,必先利其器;
  • 磨刀不误砍柴工;
  • 君子性非异也,善假于物也
  • 赶紧看啊,用着干嘛[狗头]
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部