首页 > 系统相关 >Ubuntu的Bash终端美化 + 添加Git分支显示 + Zsh终端 + Zint代码补全功能

Ubuntu的Bash终端美化 + 添加Git分支显示 + Zsh终端 + Zint代码补全功能

时间:2024-08-10 15:26:06浏览次数:16  
标签:Zint git 补全 yammie sudo fcitx 终端 zsh bash

一、下载 Git

# 从远程仓库克隆 git 文件到/opt 目录
yammie@my-pc >/home/yammie
$ cd /opt


yammie@my-pc >/opt
$ git clone https://github.com/git/git.git

二、复制 git-completion.bash 和 git-prompt.sh 到 home/yammie 的目录下

yammie@my-pc >/opt
$ cd ./git

yammie@my-pc >/opt/git
$ cp ./contrib/completion/git-completion.bash ~/

yammie@my-pc >/opt/git
$ cp ./contrib/completion/git-prompt.sh ~/

三、命令提示符颜色参考代码

# 定义颜色
txtblk=\e[0;30m # 黑色
txtred=\e[0;31m # 红色
txtgrn=\e[0;32m # 深绿色
txtylw=\e[0;33m # 黄色
txtblu=\e[0;34m # 绿色(写着是蓝色,但实际是绿色)
txtpur=\e[0;35m # 紫色
txtcyn=\e[0;36m # 蓝色
txtwht=\e[0;37m # 白色
bldtxtblk=\e[1;30m # 黑色
bldtxtred=\e[1;31m # 红色
bldtxtgrn=\e[1;32m # 深绿色
bldtxtylw=\e[1;33m # 黄色
bldtxtblu=\e[1;34m # 绿色(写着是蓝色,但实际是绿色)
bldtxtpur=\e[1;35m # 紫色
bldtxtcyn=\e[1;36m # 蓝色
bldtxtwht=\e[1;37m # 白色
bakblk=\e[40m # 背景黑色
bakred=\e[41m # 背景红色
txtrst=\e[0m # 文本重置


# 使用自定义颜色
echo -e "${bldtxtgrn}这是绿色文本的粗体文本${txtrst}"
echo -e "${bldtxtpur}这是紫色文本的粗体文本${txtrst}"

四、将以下内容加入到/etc/bash.bashrc 里面,实现 Git 分支的官方显示

注 意 : 因 为/etc/bash.bashrc 是 终 端 的 系 统 文 件 , 修 改 过 程 中 若 出 现 问 题 , 终 端 会 崩 溃 。 权 限 问 题 会 使 得 etc/bash.bashrc 难以修改。所以我们直接给/etc/bash.bashrc 授予 777 权限,这样即便在修改过程中导致终端崩溃,我们也能接着修改 etc/bash.bashrc,使得终端恢复正常。

1. 授予/etc/bash.bashrc 777 权限

yammie@my-pc >/home/yammie
$ sudo chmod 777 /etc/bash.bashrc

2. 打开/etc/bash.bashrc,写入以下内容

yammie@my-pc >/home/yammie
$ gedit /etc/bash.bashrc
# Git 分支官方实现
# 引用 git 官方的自动补全脚本
source ~/git-completion.bash
GIT_PS1_SHOWDIRTYSTATE=true # 显示分支后面的 *
GIT_PS1_SHOWCOLORHINTS=true # 使用 git-prompt.sh 的__git_ps1_colorize_gitstring 给分支上色
if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
if [ -f ~/git-completion.bash ]; then
source ~/git-prompt.sh # 引用分支显示脚本
PS1='${debian_chroot:+($debian_chroot)}' # 终端名称
PS1+='\n\[\e[0;36m\]\u@\h\[\e[0m\]\[\e[0;30m\] >\[\e[0;33m\]\w\[\e[0m\]' #用户名@主机名 >(路径名)
PS1+='$(__git_ps1 " (%s)")' #使用 git-prompt.sh 原生的分支上色,换行后显示$,$ 后面的命令全部为黑色
PS1+='\n\[\e[0;30m\]\$ '
fi
fi
# 注释原来的命令头
# if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
# PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' # ($debian_chroot) 是终端名;\w 是文件路径
# fi

注意:如果复制过去执行出错,大概率是单引号的格式有问题,你可以自己手打引号,而不是选择复制。

3. 打开终端,创建 test_dir 本地版本库

可见 master 分支会通过 #、+、* 标记不同状态。

五、更改终端的背景颜色

点击【未命名】→内置方案:自定义→文本:黑色(#000000)→背景:#E6F5F7

效果如下:

六、设置复制与粘贴快捷键

点击【快捷键】→ 双击【复制】,键入 Ctrl+C

→ 双击【粘贴】,键入 Ctrl+V

→ 双击【复制为 HTML】,键入 Shift+Ctrl+C

七、下载并安装 CaskaydiaMono Nerd Font

1. 下载 CaskaydiaMono Font

下载链接:CaskaydiaMono Nerd Font

2. 把字体复制粘贴到 /usr/share/fonts/truetype/ubuntu

解压到当前下载目录。把字体复制粘贴到 /usr/share/fonts/truetype/ubuntu。

yammie@my-pc >/home/yammie/下载
$ cp ./CascadiaMono/* /usr/share/fonts/truetype/ubuntu

3. 打开终端,选择 CaskaydiaMono Nerd Font Mono

八、安装 Zsh 和 Zinit 插件管理软件

1.因为 ubuntu24.04 的仓库不再有 zsh 的安装包,我们需要到官网下载源码

zsh下载icon-default.png?t=N7T8https://zsh.sourceforge.io/Arc/source.html

下载 zsh-5.9.tar.xz
或者通过以下命令下载,提取到此处

# 下载
$ wget https://jaist.dl.sourceforge.net/project/zsh/zsh/5.9/zsh-5.9.tar.xz ~/下载

# 解压
$ tar xvf zsh-5.9.tar.xz

2. 编译安装

(1) 安装依赖

sudo apt install libncurses5-dev

(2) 编译安装

# 进入源码目录
$ cd zsh-5.9

# 执行配置
$ ./configure # 默认安装在:/usr/local/bin/zsh

# 编译和安装
$ make && make install

# 添加信息
$ vim /etc/shells

# 在最后一行加上:/usr/local/bin/zsh

注意:若 make && make install 报错:ubuntu 权限不够 /usr/bin/install:无法创建普通文件。请 sudo su,以 root 用户的层级进行编译和安装。因为 configure 已经指定 zsh 的安装位置,不用担心它会安装到 root 目录下。

3、验证结果

打开 Linux 的终端,输入 zsh

yammie@my-pc >~
$ zsh


yammie@my-pc >/home/yammie
$ zsh --version
zsh 5.9 (x86_64-pc-linux-gnu)

4、编辑 etc/bash.bashrc,添加 zsh 命令,开启终端即登录 zsh 终端界面

yammie@my-pc >/home/yammie
$ sudo chmod 777 /etc/bash.bashrc # 授予 777 权限,避免终端崩溃后无法修改

yammie@my-pc >/home/yammie
$ npp /etc/bash.bashrc

5、安装 zint

(1) 在主目录创建.zinit 文件夹,克隆源文件到~/.zinit/bin 中

yammie@my-pc >/home/yammie
$ mkdir ~/.zinit

yammie@my-pc >/home/yammie
$ git clone https://github.com/zdharma/zinit.git ~/.zinit/bin

(2) 在~/.zshrc 中配置 zint 和它的插件

打开~/.zshrc

yammie@my-pc >/home/yammie
$ gedit ~/.zshrc
# 加载 zint 及其插件
source ~/.zinit/bin/zi.zsh

autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit

zinit ice wait "0";

# zinit light <zsh 插件在 github 中的项目名>
zinit light zsh-users/zsh-autosuggestions # 自动补全插件
zinit light zsh-users/zsh-syntax-highlighting # 语法高亮插件

zinit snippet OMZ::lib/git.zsh # 加载 OMZ 的 git 库
zinit snippet OMZ::plugins/git/git.plugin.zsh # 加载 OMZ 的 git 插件

(3) 重新开启终端,自动加载~/.zshrc; 或者 source ~/.zshrc

yammie@my-pc >/home/yammie
$ source ~/.zshrc

6. 在~/.zshrc 中自定义 zsh 终端初始化命令提示符的主题样式

添加如下代码:

# 引用分支显示脚本
source ~/git-prompt.sh

# 显示分支的 *
GIT_PS1_SHOWDIRTYSTATE=true

NEWLINE=$'\n' # 换行符
precmd () { __git_ps1 "$NEWLINE%F{cyan}%n@%m >%F{yellow}%d %F{blue}" "%F{reset_color}$NEWLINE$ " "(%s)" }

注意:
(1) 开启该命令,会默认使用 git-prompt.sh 的 __git_ps1_colorize_gitstring 函数。调用%s 显示分支名时,会给分支名上色。但是自己添加的括号上色不均匀。
(具体看~/.bashrc 方案一对分支的上色)
# GIT_PS1_SHOWCOLORHINTS=true


(2) .zshrc 配置文件只能通过 precmd()获取 git-prompt.sh 脚本中的分支内容。
使用 PS1="$( __git_ps1 "%s" )",.zshrc 读不出分支名。
另外,git-completion.bash 无法被.zshrc 引用,表示 git 官方的自动补全脚本已经过时。

(3) precmd() 函数的解释
precmd () { __git_ps1 "var1" "var2" "var3" }
"var1":预编译的参数,始终显示在 Shell 窗口。
"var2":跟在 var1 后面。
"var3":打印格式化的内容,插入 var2 前面。


例子:
precmd () { __git_ps1 "%n@%m:%d" "$NEWLINE$ " " (%s)" }
zsh 显示的样子:

7. 将/etc/bash.bashrc 的配置复制到~/.zshrc 中

(1) 设置 Notepad--别名

#Notepad--设置别名
# sudo 后面的那个空格将会告诉 bash,去检查跟在空格后面的命令是否也是一个别名。
alias sudo='sudo '

#结合上面的 sudo 别名,可以写成 sudo notepad--,sudo np,也可以按变量名书写:sudo
Notepad--
alias notepad--='/opt/Notepad--/notepad--'
alias npp='notepad--'

(2) fcitx 配置,使得 sudo 开启的文件也能使用输入法

# fcitx 配置,使得 sudo 开启的文件也能使用输入法
export XMODIFIERS=“@im=fcitx”
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx


# vim 使用的是终端(键盘)输入,vim 或者 sudo vim 都支持 fcitx。
# 但是 gedit 和 Notepad-- 在用 sudo 开启时,是不支持 fcitx 的,需要先关闭用户层级的 fcitx,接着开启 sudo 组的 fcitx
# 方可使用 fcitx 输入法。
# 下面把开启 sudo fcitx 和关闭 sudo fcitx 的操作写成了两个可执行脚本。
# 每当运行 sudo gedit 或者 sudo np 时,请先开启 osf: osf|sudo gedit <filename>
# 退出编辑后,运行 csf 来关闭 sudo 组的 fcitx,开启用户层级的 fcitx。

alias osf='/opt/linux 简易执行脚本/sudo_fcitx/open_sudo_fcitx.sh' # 开启 sudo fcitx 的运行脚本
alias csf='/opt/linux 简易执行脚本/sudo_fcitx/close_sudo_fcitx.sh' # 关闭 sudo fcitx 的运行脚本

# 导入 anaconda3 的运行目录,然后在终端 sudo su ,source /etc/bash.bashrc 导入
export PATH=$PATH:/home/yammie/anaconda3/bin

上面只是fcitx配置而已,要想使用该功能,请参考以下的文章进行完整配置。

sudo 启动应用程序无法使用fcitx输入法的解决方案icon-default.png?t=N7T8https://blog.csdn.net/qq_33653203/article/details/138623401?spm=1001.2014.3001.5502

(3) 设置别名

#设置别名
#文件显示颜色
#ls 命令里面,01 表示粗体。文件夹:紫色;txt 文件:黑色;mp3 文件:蓝绿色

export LS_COLORS="di=01;35:*.txt=01;30:*.mp3=01;36"
alias ls='ls --color=auto'
alias ll='ls -l --color=auto'
alias l.='ls -d .* --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'

8. 输入 exit,会退出 zsh 终端,回到 bash 终端

 

可见zsh终端结合了zint插件后,命令会自带颜色,而bash终端是没有颜色的,为默认的黑色。

标签:Zint,git,补全,yammie,sudo,fcitx,终端,zsh,bash
From: https://blog.csdn.net/qq_33653203/article/details/141034301

相关文章

  • C# & Unity 面向对象补全计划 七大原则 之 合成/聚合复用原则( CARP)难度:☆☆☆☆ 总结:
    本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正本系列作为七大原则和设计模式的进阶知识,看不懂没关系请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺1.合成/聚合复用原则(CARP)        合成/聚合复用原则就是在一个新的对象里面使用一些已有的......
  • IntelliJ IDEA 2024.2 发布:Spring Data JPA即时查询、自动补全cron表达式
    今早看到,IntelliJIDEA2024.2发布的邮件提示,看了一眼这个版本更新的新特性真的太适合我了!也许这些能力对关注DD的小伙伴也有帮助,所以搞篇博客介绍和推荐一下。下面就来一起看看这个版本中推出的几个强大新特性。SpringDataJPA的即时查询在2024.2Ultimate版本中,对Spring......
  • Windows Remote Desktop Licensing (RDL) 服务起源于 Microsoft 的远程桌面服务(Remote
    WindowsRemoteDesktopLicensing(RDL)服务起源于Microsoft的远程桌面服务(RemoteDesktopServices,RDS),最初被称为终端服务(TerminalServices)。以下是一些关键的历史背景和发展过程:1. 早期背景WindowsNT4.0TerminalServerEdition:在1998年,微软推出了WindowsNT4.0......
  • Linux远程终端MobaXterm下载安装配置使用(详细)
    今天给伙伴们分享一下Linux远程终端MobaXterm下载安装配置使用,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎大家......
  • 远程终端 XShell 下载安装配置使用(超详细)
    今天给伙伴们分享一下VMwareWorkstation17安装Windows10操作系统,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,......
  • 配电室电能无线采集终端 #技术部发文#
     随着全球能源消耗的不断增长和可再生能源的推广,有效的能源管理变得至关重要。作为安科瑞电气股份有限公司的一款物联网无线电能计量装置,ADW300无线计量仪表为低压网络设计,用于准确测量三相有功电能。其小巧设计、高精度和丰富功能使其在能源管理中非常实用。支持多种通讯方......
  • 将终端输出重定向到文件
    我有一个python程序,我在树莓派4上从控制台运行。在程序中,有一些事件会在终端上生成一些输出。第一个问题:是否有任何选项可以显示所有我的python程序的列表框中的终端输出?也许将控制台输出写入文件,然后从文件中读取它以将其显示在我的程序上。我读到了......
  • 常用游戏运行库 v4 下载、安装教程 (游戏DLL补全包)
    前言游戏运行库包含了VC++运行库合集,.NET2.0到.NET4.8合集,DirectX9.0Rapture3D等游戏必备的系统组件,如果你的游戏安装后无法运行,那么安装这些组件基本上就可以解决。本必备运行库安装包集成32位和64位运行库,是目前互联网上最新最全的常用运行库合集,能自动识别系统版本以......
  • vscode C++ 自动补全失效
    设置搜索这几个,并设置为对应值。 如果没解决,可能是clangd的问题。禁用clangd,然后去看看c_cpp_properties.json。看complierPath是不是clang。如果是,改成g++/gcc。再看一下intelliSenseMode是不是clang。如果是,改为default。 linux下c_cpp_properties.json的配置 ......
  • 视野修炼-技术周刊第95期 | 终端里展示图片
    欢迎来到第95期的【视野修炼-技术周刊】,下面是本期的精选内容简介......