Tmux / zsh / oh-my-zsh教程

shell优化工具

Posted by YuCong on February 8, 2018

关于linux命令行终端shell改造与美化方案,以及tmux脚本工具。

赐予你强大的壳–tmux/zsh/oh-my-zsh

Created 2018.02.13 by William Yu; Last modified: 2018.08.13-V1.0.3

Contact: windmillyucong@163.com

Copyright ©2018 William Yu. All rights reserved.


oh_my_zsh

我依稀记得在哪里看到过命令终端的各种配置主题,见,惊艳,目流连。非得找到那篇博文才罢休:

http://blog.csdn.net/gatieme/article/details/52741221

以下记录源自于这篇博文

安装zsh

然后开始安装配置 :

1
sudo apt-get install zsh

然后把bash的配置文件(~/.bash_prorile或者~/.profile等)

我的是~/.bashrc拷贝到zsh的配置文件~/.zshrc里,因为zsh兼容bash)

每次进入是都使用命令zsh进入, 而输入exit退出

或者直接设置成默认shell(但是这里我并不需要执行,因为我的默认shell其实想设置成tmux,后文再说,然后使用tmux来调用zsh)命令行输入:

1
2
3
4
5
6
7
8
#取代bash,设为默认shell
sudo usermod -s /bin/zsh username
#或者
chsh -s /bin/zsh
chsh -s `which zsh`

#如果要切换回去bash:
chsh -s /bin/bash

安装oh-my-zsh

直接用zsh会很难受,因为zsh功能很强大但是太复杂,所以需要oh-my-zsh来将它简单化

1
2
3
4
5
6
7
8
9
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

备份已有的zshrc, 替换zshrc
cp ~/.zshrc ~/.zshrc.orig
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

直接使用脚本安装
cd .oh-my-zsh/tools
./install.sh

直接最终的~/.zshrc内容备份一哈:

https://github.com/YuYuCong/Ubuntu

配置主题

oh-my-zsh 集成了大量的主题, 位于oh-my-zsh/theme

配置主题, 可以通过修改~/.zshrc中的环境变量ZSH_THEME来完成,我最后挑中了bira

1
ZSH_THEME="bira"

如果觉得主题太多,可以选择使用随机模式, 不过这就比较刺激了。

1
ZSH_THEME="random" # (...please let it be pie... please be some pie..)

主题介绍

配置插件

修改~/.zshrcplugins

1
plugins=(git bundler osx rake ruby)

详细的插件信息, 可以参见zsh插件Plugins介绍

更新oh-my-zsh

默认情况下, 您将被提示检查每几周的升级. 如果你想我ZSH自动升级本身没有提示你, 修改~/.zshrc

1
disable_update_prompt = true1

禁用自动升级, 修改~/.zshrc

1
disable_auto_update = true1

当然你也可以选择手动更新

如果你想在任何时间点升级(也许有人刚刚发布了一个新的插件,你不想等待一个星期?)你只需要运行:

1
upgrade_oh_my_zsh1

卸载oh-my-zsh

脚本为啥 如果你想卸载oh-my-zsh, 只需要执行uninstall_oh_my_zsh zsh, 从命令行运行. 这将删除本身和恢复你以前的bash或者zsh配置.

1
uninstall_oh_my_zsh zsh1

配置tmux默认调用oh-my-zsh

但是感觉装完之后,有一种很不实用的感觉,就只是主题比较多?我想tmux的分屏和zsh的漂亮界面融合起来。

1.在 ~/.tmux.conf文件中加了

“set -g default-shell /bin/zsh”

设置tmux的默认shell为zsh。

2.然后重新刷新tmux的配置文件

1
tmux source-file ~/.tmux.conf

终端默认启动tmux

到目前为止,我都是启动命令行之后会直接bash,需要输入tmux,才能开启tmux,然而我已经想直接抛弃bash了,所以默认启动tmux吧。

看看我现在都有些什么shell:

1
cat /etc/shells

结果

/bin/sh /bin/dash /bin/bash /bin/rbash /usr/bin/tmux /bin/zsh /usr/bin/zsh

然后:

1
 chsh -s /usr/bin/tmux

重启电脑生效。

结束。


tmux

安装配置

因为很久之前就安装了tmux,当时没有写笔记,今天趁机会备注一下我的博文http://blog.csdn.net/williamyuyuyu/article/details/79283374

主要是tmux的配置文件:

1
vim ~/.tmux.conf

记得配置完了之后刷新tmux的配置文件

1
tmux source-file ~/.tmux.conf

我借用了别人的配置,当然也备份到github了:https://github.com/YuYuCong/Ubuntu

脚本

tmux里面的脚本:

写一个脚本在~/.tmux/dev,脚本名字就叫dev,放在~/.tmux/目录下

1
2
3
4
cd ~
mkdir .tmux
cd .tmux
vim dev

写入

1
2
3
4
5
6
selectp -t 0 #选择第一个标签
splitw -h -p 50 #分割成两半

selectp -t 1 # 选择第二个标签
splitw -v -p 50 'typora' #分割成两半
selectp -t 0 # 返回第一个标签

然后tmux的配置文件里面补上

bind b source-file ~/.tmux/dev 使用前缀+b按键调用此脚本。

可能需要重启一遍之后脚本配置才可以生效。

注意一点,因为第三个标签调用的是typora,不是终端程序,无法运行typora。无X服务。

解决方法自然很简单

1
2
3
4
5
6
7
8
selectp -t 0 # 选择第一个标签
splitw -h -p 50 # 竖着分割成两半
selectp -t 1 # 选择第二个标签
splitw -v -p 20 #水平分割成两个,新分割出来的占20%
selectp -t 2 # 选择第三个标签
send-keys -t 2 'typora ./daily_record/2018.md' #向标签2输入typora
#send-keys -t 2 'typora ./daily_record/2018.md' C-m #向标签2输入命令,并回车确定  
#selectp -t 0 # 返回第一个标签

然后会自动分割成3个标签,并且向第三个标签输入typora,并且指向我的记录文档,刚好如果我想记录,直接Enter,如果不想开typora,那就重新输入命令即可。 >_<

当然注意,启动typora后的那个标签会进入运行状态,除非typora已经关闭,才能再输入命令。

### [注意]tmux比较权威的说明书:

《tmux: Productive Mouse-Free Development》https://www.kancloud.cn/kancloud/tmux/62464

CSDN上很多博客都是在灌水,关乎脚本的只字不提,只说了快捷键部分。但是感觉脚本脚本脚本真的真的真的是tmux比较重要的是一部分哇!

当然这个脚本中所述的方法是用bash下运行tmux脚本,所以每一条命令前面都有一句tmux,既然我已经设置了tmux为默认shell,已经是tmux环境了,所以我的脚本是不用每一句命令之前加tmux的。以上已经完成了一个快捷键调用我要的脚本 的配置。

总结一哈

用了tmux的分割标签,快捷键,脚本运行;

配置文件在 .tmux.conf 其中一个插件 ~/.tmux/dev;

用了zsh的主题;

配置文件在~/.zshrc

References