超级好用的Terminator+ZSH终端开发环境(完美适配ROS和ROS2双系统)

目录

一、可分屏的终端利器Terminator

1. 安装Terminator

2. 设置Terminator为默认终端

3. 推荐配置

4. 常用快捷键

5. 常见问题

5.1 如何切换终端?

5.2 横向分屏快捷键ctrl+shift+E不灵

二、终端交互神器——zsh

1. zsh的几大使用功能

2.  安装zsh

3. 查询位置并设置zsh为默认shell

三、配置zsh

1. 下载zsh

 2. 创建 .zshrc 配置文件

 3. 设置主题

 4. 设置常用插件

5. 可能出现的问题

5.1 无法下载zsh插件

5.2 主题乱码

5.3 no such file or directory: zsh-autosuggestions.zsh^M

四.ROS适配


只要你接触过Ubuntu,必定对它的默认终端GNOME Terminal不陌生。

它的底色和字符配色大概是下图的样子。(图中蓝色箭头属于zsh的主题配置,后面会讲)

但是,这个终端工具无法实现分屏,配色也比较单一,不利于提高终端调试的效率。

基于这种需求,我们整合了一款用Terminator和zsh打造的终端利器,分享给大家。

其中,终端选择Terminator,shell工具选择zsh。

一、可分屏的终端利器Terminator

1. 安装Terminator

sudo apt update
sudo apt install terminator

2. 设置Terminator为默认终端

由于默认终端可以用Alt+Ctrl+T唤起,我们将默认终端改为Terminiator。

网上有不同的配置方法,推荐使用以下方法:

gsettings set org.gnome.desktop.default-applications.terminal exec /usr/bin/terminator
gsettings set org.gnome.desktop.default-applications.terminal exec-arg "-x"

哪天想念Gnome Terminal,用下面的方法换回:

gsettings reset org.gnome.desktop.default-applications.terminal exec
gsettings reset org.gnome.desktop.default-applications.terminal exec-arg

注意:在文件夹内右键选择在终端打开,还是会使用系统默认的终端。

3. 推荐配置

启动Terminator,右键选择“首选项设置”,打开设置界面进行配置。

主要是在Preferences->Profiles对应的选项页中修改。

3.1 General中修改字体为等宽字体

推荐DejaVu Sans Mono。

建议自己试试,找一款看着舒服,而且能轻松识别数字0和字符O就好。

3.2 General中勾选开启:选中时复制(Copy on Selection)

之后,对于想要复制的内容,选择即复制,粘贴则使用按鼠标中键。

这要比右键复制粘贴更方便,肉眼可见地提升了效率。

还有贴心的小技巧:对于单词,双击即可选中,三击选中一行。

4. 常用快捷键

新建窗口:Ctrl+Shift+T

关闭窗口:Ctrl_Shift+W

水平划分窗口:Ctrl+Shift+O

垂直划分窗口:Ctrl+Shift+E

窗口切换:Ctrl+Tab或者Alt+方向键

建议修改快捷键为自己熟悉的,比如关闭tab窗口,浏览器和IDE通常都是Ctrl+W,为了保持习惯一致,可以将其修改为Ctrl+W。

5. 常见问题

5.1 如何切换终端?

Ubuntu有一个方便的命令行实用程序,叫做update-alternatives,它可以处理默认的应用程序。当然也可以使用它来更改默认的命令行文本编辑器,终端等。

例如,修改默认的命令行文本编辑器的命令:

sudo update-alternatives --config x-terminal-emulator

它将显示系统上存在的所有终端,当前的默认终端标有星号。

如上图,有6个候选项可用于替换x-terminal-emulator。每个候选项提供序号、路径、优先级和状态等信息。其中,状态分为自动模式和手动模式两种。如果选择自动模式,则在安装或删除软件包时,系统可能会自动决定默认应用程序。该决定受优先级数字的影响。

假设Ubuntu系统上安装了2个终端,并且删除了默认的终端。那么,系统将检查哪些终端处于自动模式。如果有多个,它将选择优先级最高的一个作为默认终端。

5.2 横向分屏快捷键ctrl+shift+E不灵

考虑Ubuntu系统中有其他程序占用了快捷键ctrl+shift+E。

例如,如果安装了搜狗输入法, ctrl+shift+E是它的中英文输入法切换的快捷键。可以试试看看按了ctrl+shift+E以后输入法是不是只能输入英文了。

点击“高级”选项卡的“系统功能快捷键”按钮,弹出如下界面。

取消选择“英文输入法”的勾选,或者更改快捷键组合,都可以。

二、终端交互神器——zsh

早期的shell是sh,而现在很多Linux版本(包括Ubuntu)的系统默认shell为bash,它是对sh的增强改进版本。bash更加符合posix标准,因此更适合做脚本解释器;而从交互式角度来讲,专为交互而设计的zsh更为强大,并包含其他shell(bash/ksh/csh)的优秀特性。

所以推荐在使用终端时选择zsh,而在写脚本声明解释器时选bash。

1. zsh的几大使用功能

zsh被称为终极shell,它非常强大,比较实用的功能如下:

1)色彩高亮

如果你是颜控,相信你在第一眼就会喜欢上zsh。

除了可以变得很好看以外,不同的颜色表明当前命令的类型,并且路径有无下划线表示路径是否存在;这可以快速帮助我们发现错误。

2)命令提示

命令提示的好用之处在于帮助补全。

输入命令会根据输入的历史自动补全,并且随着输入不断修正,如果补全是你期望的结果,按下右方向键接受,再回车即可。

3)智能补全

在使用cd切换路径时,按下tab会列出当前目录下的目录和文件,如果是bash,它会提示你手动输入,但是zsh中你可以继续按一下tab进入选择模式,继续使用tab选择,或者使用方向键选择目标目录而不需手动输入。

2.  安装zsh

安装前,先查查系统已安装的shell及当前的shell。

cat /etc/shells
echo $SHELL

如果列出的shell中没有zsh,通过以下命令安装:

sudo apt update
sudo apt install zsh -y

3. 查询位置并设置zsh为默认shell

which zsh
chsh -s /bin/zsh

同理,你可以用类似命令换回bash。

which bash
chsh -s /bin/bash

三、配置zsh

直接配置zsh比较繁琐,建议直接使用Oh-My-Zsh进行配置。

1. 下载zsh

直接根据Oh-My-Zsh Gitlab仓库WiKi或者官网https://ohmyz.sh/的命令进行安装:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

直接安装可能因为网络连接不稳定而失败,建议使用git clone源码。

# 国外源
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

# 国内源
git clone https://gitee.com/who7708/oh-my-zsh.git ~/.oh-my-zsh

 2. 创建 .zshrc 配置文件

cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

 3. 设置主题

Oh-My-Zsh默认安装了很多主题,位于目录.oh-my-zsh/themes下。通过zsh配置文件~/.zshrc中的主题设置为自己喜欢的主题名字即可:

ZSH_THEME="robbyrussell"

如果设置ZSH_THEME="random",那么每次打开新的终端窗口时会随机选择一个主题使用,echo $RANDOM_THEME可获取当前主题名称。

如果想从限定的主题列表中随机选择,那么同时设置ZSH_THEME_RANDOM_CANDIDATES即可,例如:

ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )

关于主题,还是选择自己喜欢的就好,可以试试网友推荐的Source Code Pro for Powerline Regular或者Ubuntu mono derivative Powerline Regular,后者像是前者的微胖版本。

有的主题必须使用powerline字体,通过以下命令安装:

sudo apt install powerline fonts-powerline

推荐主题: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仓库目录,可以直观看到当前的分支名称,可以看到仓库的状态:有几个文件没有追踪,添加了几个文件,改动了几个文件。

对于大型的git仓库,因为oh-my-zsh进入git目录会检查git的各种状态,所以在跳转的时候会明显变慢,可以禁止oh-my-zsh读取git status,使用如下命令关闭检查功能:

#针对特定git仓库
git config --add oh-my-zsh.hide-status 1
git config --add oh-my-zsh.hide-dirty 1

#全局设置:
git config --global oh-my-zsh.hide-status 1
git config --global oh-my-zsh.hide-dirty 1

 4. 设置常用插件

默认安装的插件位于路径.oh-my-zsh/plugins/。

自己下载的插件存放位置稍有不同,位于~/.oh-my-zsh/custom/plugins。

插件配置通过zsh配置文件~/.zshrc中的plugins即可:

plugins=(
    zsh-syntax-highlighting
    zsh-autosuggestions
    zsh-completions
    history-substring-search
    git
    autojump
    extract
)

常用插件的github操作如下:

​cd ~/.oh-my-zsh/custom/plugins

github地址:
git clone https://github.com/zsh-users/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-completions
git clone https://github.com/zsh-users/zsh-history-substring-search

#国内
git clone https://gitee.com/who7708/zsh-syntax-highlighting
git clone https://gitee.com/who7708/zsh-autosuggestions
git clone https://gitee.com/who7708/zsh-completions
git clone who7708/zsh-history-substring-search

若提示插件不存在,可使用如下命令单独获取:

4.1 命名高亮:zsh-syntax-highlighting

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

4.2命令补全:zsh-autosuggestions

输入命令时可提示自动补全(灰色部分),然后右方向键即可补全

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

4.3目录跳转:autojump

可使用包管理器直接安装:

sudo apt-get install autojump

这个插件会自动统计我们经常cd的目录,不同目录会有不同的权重。在我们想要进入某个目录时,使用j <dir-name>即可以帮助我们快速跳转到目标目录;即使我们给出的目录不准确,它也会启动模糊匹配,根据权重,往往也能跳转到我们想要进入的目录;如果进入的不对,执行同样的命令它会继续搜索。

4.4文件解压:extract

Linux系统对于不同类型的压缩格式:.tar、.tar.gz、.tar.bz2、.tar.xz、.rar、.zip,解压命令各不相同。有了这个插件就不用纠结了,一律使用

x <archived file>

5. 可能出现的问题

5.1 无法下载zsh插件

选择国内源,或者使用vpn访问github。

5.2 主题乱码

可以换一个字体库,确保字体安装正确。

5.3 no such file or directory: zsh-autosuggestions.zsh^M

错误提示说找不到zsh-autosuggestions.zsh文件,但明明这个文件是存在的。核对文件名,也不存在^M字符。思考下来,可能它只是无法识别,也就是说zsh-autosuggestions.zsh文件里可能存在了隐藏字符^M,导致它认不出来该文件。

这种情况可能发生在你用windows系统git clone源文件,但使用却在Linux中。有可能git clone下载这插件时,git是按照windows的标准进行clone的,导致Linux无法识别,报这个^M的识别错误。

如果你有这种多系统中git提交代码的需求,可以对git进行如下设置:

git config --global core.autocrlf true

意思是,提交时转换为LF,检出时转换为CRLF,而CRLF是Windows的换行符。

四.ROS适配

我们在装完zsh重启后发现已经可以自动提示并右键补全了,但是我们在roscore的时候却提示commond not found,这其实比较好理解,因为我们之前在通过chsh -s /bin/zsh指令时终端解释器已经变更为zsh ,故之前在~/.bashrc中的设置需要重新在~/.zshrc中配置。我们设置如下指令即可。

source /opt/ros/noetic/setup.zsh

如果是ros和ros2的双系统,建议在~/.zshrc增加如下内容。

然后重新source zsh,完成zsh的适配,值得注意的是,我们以后所有需要在bashrc修改的需要全部移植到zshrc中了。

后面的话

Terminator是命令行终端的UI,解决快速分屏和色彩搭配问题。

Zsh是shell交互工具,能进一步提升交互效率。

无论是图个新鲜,或是想提高终端工作效率,都值得尝试一下Terminator+zsh的神器组合。

参考链接

ohmyzsh/ohmyzsh: A delightful community-driven

Ubuntu用Terminator+ZSH打造好用的终端开发环境 - 知乎 (zhihu.com)

oh-my-zsh 安装 - 简书 (jianshu.com)

猜你喜欢

转载自blog.csdn.net/slampai/article/details/128074102