Ubuntu用Terminator+ZSH打造好用的终端开发环境
键盘相对于鼠标是高效的,可以多使用。
好用的终端环境不仅要好看,更加要高效,键盘虽然是高效的,但是还是要减少手指的移动和敲击。
一 终端的选择:Terminator
在ubuntu下,相比于系统自带的终端,更加好用的终端应该是
Terminator
,它具备一些好用的特性可以提高我们的开发效率。下面开始介绍。
1 安装
通过Ubuntu包管理工具
apt
安装即可:
sudo add-apt-repository ppa:gnome-terminator
sudo apt update
sudo apt install terminator
2 设置为默认终端
安装完成后我们设置其为默认终端,通过快捷键
Ctrl+Alt+T
即可唤起。 网上有不同的配置方法,推荐使用以下方法:
gsettings set org.gnome.desktop.default-applications.terminal exec /usr/bin/terminator
gsettings set org.gnome.desktop.default-applications.terminal exec-arg "-x"
如果想换回默认的设置(感谢 @蒋Andy 帮忙指正):
gsettings reset org.gnome.desktop.default-applications.terminal exec
gsettings reset org.gnome.desktop.default-applications.terminal exec-arg
修改系统设置的时候,了解如何恢复、给默认配置备份都是极好的习惯。
通过以上设置之后,通过终端启动快捷键打开的就是
Terminator
了。
但是在文件夹内右键选择在终端打开,还是会使用系统默认的终端,这是因为: nautilus-open-terminal uses GAppInfo to launch the terminal process, which uses a hard coded list of terminal emulator
3 推荐配置
快捷键启动Terminator,右键选择 首选项设置 打开设置界面进行配置。
在Preferences->Profiles->General中
修改字体为等宽字体,推荐
DejaVu Sans Mono
和
Hack
(没有则安装即可),也可以按自己的需修改。
勾选开启: 选中时复制(Copy on Selection) ,这样选择想要复制的内容再也无需其他操作,粘贴的时候按鼠标中键即可粘贴,这要比右键复制粘贴岂不快上几倍!
笔者一开始也只会用右键复制,再右键粘贴;然后是使用快捷键Ctrl+Shift+C复制,Ctrl+Shift+V粘贴;直到现在是选择即复制,中键粘贴。 这种高频操作,不要小看省下的几秒钟,提升效率也在细微之处。
在Preferences->Profiles->Colors中
可以选择自己喜欢的背景颜色和终端颜色schemes,原则是
对眼睛友好
。不同的元素的颜色分明,比如通过
ls -al
列出文件时,不同类型的文件一目了然。笔者使用的是:
- 前景背景色:Solarized Dark
- 调色板(Color palette):Ambience
在Preferences->Profiles->Background中
笔者喜欢将背景设置为半透明,数值为
0.85-0.9
最佳。
为什么?在终端输入命令时,如果要参照网页,与其切换窗口,不如透过终端直接看到后面网页上的命令:)。
4 选择、复制、粘贴
再强调一遍: 选中即复制,鼠标中键粘贴 。对于单词,双击即可选中,三击选中一行。
5 快捷键
-
新建窗口:
Ctrl+Shift+T -
关闭窗口:
Ctrl_Shift+W -
水平划分窗口:
Ctrl+Shift+O -
垂直划分窗口:
Ctrl+Shift+E -
窗口切换:
Ctrl+Tab或者Alt+方向键
可以修改快捷键为自己熟悉的,比如关闭tab窗口,浏览器和IDE通常都是Ctrl+W,为了保持习惯一致,可以将其修改为Ctrl+W。
Terminator多窗口示例如下:
要在窗口上方显示路径,可以右键配置文件首选项->设置->一般设定->勾选显示标题栏
二 SHELL的选择:ZSH
早期的shell是
sh
,由Steve Bourne编写(名为Bourne shell),目前很多Linux版本的系统默认shell为
bash
,由Brain Fox编写(名为Bourne Again Shell),它是对sh的增强改进版本。
bash更加符合posix标准,因此bash更适合做脚本解释器。
而从交互式终端的角度来讲,专为交互而设计的zsh更为强大,它包含其他shell(bash/ksh/csh)的优秀特性;所以笔者在使用终端的时候选择zsh,但是在写脚本的时候,声明的解释器往往是bash。
zsh被称为终极shell,它非常强大,最为实用的功能有几点:
- 色彩高亮 不同的颜色表明当前命令的类型 ,并且 路径有无下划线表示路径是否存在 ;这可以快速帮助我们发现错误。
- 命令提示/补全 提示和补全有不同实现机制,好用之处在于补全,输入命令会根据输入的历史自动补全,并且随着输入不断修正,如果补全是你期望的结果,按下右方向键接受,再回车即可。
- 智能补全 在使用cd切换路径时,按下tab会列出当前目录下的目录和文件,如果是bash,它会提示你手动输入,但是zsh中你可以继续按一下tab进入 选择模式 ,继续使用tab选择,或者使用方向键选择目标目录而不需手动输入。
以上几个功能便足以说服笔者使用zsh替换bash。下面是一个简单的示例:
可以看到:
- 对于不存在的命令,显示为红色,输入时就可以发现;
- 在输出到文件时,没有下划线说明会新建此文件,如果文件存在,我们可能就需要把写入(>)改为追加(>>);
- 如果是复制到不存在的目录,自然是会报错的;
- 一直按tab,可以进入 选择模式 ,无需手动输入文件夹名,输入速度更快。
1 安装
通过下面的命令可以查看系统安装了的shell以及当前的shell:
-> cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/bin/zsh
/usr/bin/zsh
-> echo $SHELL
/usr/bin/zsh
如果列出的shell中没有zsh,通过以下命令安装:
sudo apt update
sudo apt install zsh -y
2 设置zsh为默认shell
通过命令设置:
chsh -s /bin/zsh
三 配置zsh
配置zsh略微复杂,可以直接使用 Oh-My-Zsh 进行配置。
1 安装
根据Oh-My-Zsh Gitlab仓库WiKi或者官网 https:// ohmyz.sh/ 的命令进行安装:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
github在国内访问可能会很慢,清华有对应的镜像,可以参考: ohmyzsh.git | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 。
安装完后,我们只需要简单设置自己喜欢的主题和常用的插件即可。
有的主题必须使用powerline字体,通过以下命令安装:
sudo apt install powerline fonts-powerline
安装之后设置终端的字体,就可以正常使用主题了。 推荐使用
Source Code Pro for Powerline Regular
或者
Ubuntu mono derivative Powerline Regular
,后者像是前者的微胖版本。
如果遇到主题乱码问题,请保持耐心,可以换一个字体库,确保字体安装对,没有那么难。
上述命令安装字体如果有问题,可以clone仓库: https:// github.com/powerline/fo nts ,执行项目根目录的install.sh安装字体。
2 主题
Oh-My-Zsh默认安装了很多主题,位于目录
.oh-my-zsh/themes
下。 通过zsh配置文件
~/.zshrc
中的主题设置为自己喜欢的主题名字即可:
ZSH_THEME="robbyrussell"
推荐主题:agnoster / agnosterzak。 agnoster默认安装,agnosterzak需要手动安装:
cd ~/.oh-my-zsh/themes
wget https://raw.githubusercontent.com/zakaziko99/agnosterzak-ohmyzsh-theme/master/agnosterzak.zsh-theme
这两个是带有git prompt的主题,安装后进入git仓库目录,效果如下:
笔者选择它的原因在于可以直观看到当前的分支名称,可以看到仓库的状态:有几个文件没有追踪,添加了几个文件,改动了几个文件。
如果是很大的项目,在进入项目时会比较费时,这时可以禁止oh-my-zsh读取git status:git config --add oh-my-zsh.hide-status 1
使用工具的目的是提高效率, 如果给我们的效率带来损耗,也要毫不犹豫地禁用 。
如果设置ZSH_THEME="random",那么每次打开新的终端窗口时会随机选择一个主题使用,
echo $RANDOM_THEME
可获取当前主题名称。
如果想从限定的主题列表中随机选择,那么同时设置
ZSH_THEME_RANDOM_CANDIDATES
即可,例如:
ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
。
3 推荐插件
默认安装的插件位于路径
.oh-my-zsh/plugins/
。 插件配置通过zsh配置文件
~/.zshrc
中的
plugins
即可:
plugins=(
zsh-syntax-highlighting
zsh-autosuggestions
autojump
extract
)
命名高亮:zsh-syntax-highlighting
zsh语法高亮就是通过这个插件实现的,默认应该是安装的,如果没有使用下面的命令安装:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
命令补全:zsh-autosuggestions
如图所示,输入命令时可提示自动补全(灰色部分),然后 右方向键 即可补全:
同样应该是默认安装,如果没有使用命令:
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
git操作加速:git
主要是提供了很多alias,很多常用的git命令的简写。通过命令
alias | grep git
查看。 熟记常用命令的缩写对于提高效率不言而喻。以下是笔者常用的git命令:
g=git
ga='git add'
gaa='git add --all'
gb='git branch'
gbD='git branch -D'
gcb='git checkout -b'
gd='git diff'
gl='git pull'
glog='git log --oneline --decorate --graph'
gp='git push'
gpf='git push --force-with-lease'
grb='git rebase'
grba='git rebase --abort'
grbc='git rebase --continue'
同时笔者也给git的子命令也设置了alias,通过
git alias
,或者修改配置文件
~/.gitconfig
:
[alias]
st = status