Linux终端配置
Linux终端配置
Ubuntu默认的终端个人感觉有点难用的,最终换成了zsh,采用ohmyzsh+powerlevel10k
ohmyzsh
参考官方wiki安装:
1 | # 1.安装zsh |
如果github上的仓库拉取不下来,可以到国内镜像下载,方法:
-
从上述或 该原始github链接 下载安装脚本
install.sh
-
修改脚本一开始的几个宏:
1
2
3
4
5
6# 注释下面两个
# REPO=${REPO:-ohmyzsh/ohmyzsh}
# REMOTE=${REMOTE:-https://github.com/${REPO}.git}
# 修改为:
REPO=${REPO:-mirrors/oh-my-zsh}
REMOTE=${REMOTE:-https://gitee.com/${REPO}.git} -
通过install.sh脚本安装ohmyzsh:
1
sh install.sh
插件
参考官方wiki:Plugins,需要修改默认配置文件~/.zshrc
中的环境变量plugins
z
这个是oh-my-zsh默认就装好的,需要自己开启。还有一个autojump
的插件和z
功能差不多,autojump
需要单独装
z命令根据频率和最近访问的路径来匹配命令行中给定的目录名字,支持以下参数:
- -c:限制匹配到当前目录下的子目录
- -e:显示最佳匹配结果,但是并不会进入
- -h:显示简短的帮助信息
- -l:list
- -r:仅按排名匹配
- -t:仅通过最近访问匹配
- -x:从数据文件中删除当前目录
zsh-autosuggestions
官网,非常好用的一个插件,会记录你之前输入过的所有命令,并且自动匹配你可能想要输入命令,然后按→
键补全
安装
1 | # github下载安装 |
该插件可以自定义补全的快捷键,比如设置逗号补全:
1 | bindkey ',' autosuggest-accept |
- 在
.zshrc
文件添加上述代码即可修改
该插件默认的提示颜色可以更换,在 .zshrc
文件添加ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
宏即可替换想要的颜色:
1 | ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=6" |
-
fg:背景色
-
6:淡蓝色
-
有点终端仅仅只支持0-7共8种背景色,需要自己尝试
-
如果想要自己设置颜色,可以在bash中输入如下代码检测颜色:
1
2
3
4
5
6
7
8
9
10
11
12function clicolors() {
i=1
for color in {000..255}; do;
c=$c"$FG[$color]$color✔$reset_color ";
if [ `expr $i % 8` -eq 0 ]; then
c=$c"\n"
fi
i=`expr $i + 1`
done;
echo $c | sed 's/%//g' | sed 's/{//g' | sed 's/}//g' | sed '$s/..$//';
c=''
}然后调用该函数即可:
1
clicolors
-
zsh-syntax-highlighting
官网,命令太多,有时候记不住,等输入完了才知道命令输错了,这个插件直接在输入过程中就会提示你,当前命令是否正确,错误红色,正确绿色
安装
1 | git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting |
sudo
偶尔输入某个命令,提示没有权限,需要加sudo,这个时候按两下ESC,就会在命令行头部加上sudo
colored-man-pages
自带插件,添加规则同上,给 man 手册加上颜色
extract
自带插件,通过以下extract <filename>
命令可以自动解压大部分压缩文件
aliases
自带插件,支持以下两条命令:
acs
:按组显示所有别名acs <keyword>
:按<keyword>
过滤别名并突出显示。
docker
自带插件,增加自动补全和一堆docker的别名,具体可以通过aliases插件或者通过官方readme(ohmyzsh/plugins/docker)查看
-
默认情况下,选项堆叠会失效(即出现诸如
-it
等选项时不会自动补全),可以通过在.zshrc
中添加如下配置项来启动该功能:1
2zstyle ':completion:*:*:docker:*' option-stacking yes
zstyle ':completion:*:*:docker-*:*' option-stacking yes但是会带来相应的副作用:即使得
docker run -u<tab>
补全成docker run -uapprox
,这是错误的
cp
自带插件,引入带rsync
的cpv
命令,并增加以下选项:
-p
: 保留权限-o
: 保留所有者-g
: 保留组-b
: 如果原文件存在的话,就对其进行备份,而不是覆盖它-r
: 递归目录-hhh
: 以人类可读的格式输出数字,以 1024 为单位(K、M、G、T)--backup-dir="/tmp/rsync-$USERNAME"
: 将备份副本移动到“/tmp/rsync-$USERNAME”-e /dev/null
: 只对本地文件起作用(禁用远程shells)--progress
: 显示进度条
command-not-found
自带插件,如果找不到命令,此插件使用 zsh 的 command-not-found 包来提供建议安装的包
注意,该插件依赖系统对应的包:
1 | # Ubuntu |
colorize
自带插件。有了这个插件,你可以对超过300种支持的语言和其他文本格式的文件内容进行语法加亮
依赖(二选一即可):
默认该插件使用Pygmentize
来进行高亮,可以通过在.zshrc
中修改如下变量来切换成chroma
:
1 | ZSH_COLORIZE_TOOL=chroma |
Pygments
提供多种样式。默认情况下,使用 default
样式,但您可以通过设置 ZSH_COLORIZE_STYLE 环境变量来选择其他主题:
1 | ZSH_COLORIZE_STYLE="colorful" |
Chroma
支持 8 色、256 色和真彩色终端输出。如果您需要从标准 8 色输出更改默认终端输出样式,请设置 ZSH_COLORIZE_CHROMA_FORMATTER 环境变量:
1 | ZSH_COLORIZE_CHROMA_FORMATTER=terminal256 |
使用:
ccat <file> [files]
: 对文件(或文件,如果提供了多个文件)的内容进行着色。如果没有传递文件,它将对标准输入进行着色cless [less-options] <file> [files]
: 对文件(或文件,如果提供了多个文件)的内容进行着色,并打开 less。如果没有文件被传递,它将对标准输入进行着色。LESSOPEN 和 LESSCLOSE 将被覆盖,但只在本地范围内起作用
dircycle
用于循环浏览目录堆栈的插件
此插件支持目录导航,类似于在浏览器或常见文件浏览器(如 Finder 或 Nautilus)上使用后退和前进。它使用了一个小 zle 技巧,让您可以使用 Ctrl + Shift + Left / Right
向左或向右循环浏览目录堆栈。这在开发环境中的目录之间来回移动时很有用,并且可以被认为是一种非破坏性的 pushd/popd。
可以通过在.zshrc
中修改如下变量来修改快捷键:
1 | # 绑定到快捷键 Alt + Shift + Left / Right |
- 其中
'^[[1;2D'
和'^[[1;2C'
为对应快捷键 Alt + Shift + Left / Right 的快捷键序列(bindkey sequence) - 可以通过先按 Ctrl + V,之后再按任意快捷键的方式,获取对应快捷键的序列(bindkey sequence)
last-working-dir
追踪最后使用的工作目录,并在新的shells中自动跳转到该目录,除非起始目录不是$HOME。
添加了一个 lwd
函数来跳转到最后一个工作目录
web-search
该插件为使用 Google、Wiki、Bing、YouTube 和其他流行服务进行搜索添加了别名。能够通过以下两种形式进行搜索:
web_search <context> <term> [more terms if you want]
<context> <term> [more terms if you want]
其中context
包括:
Context | URL |
---|---|
bing |
https://www.bing.com/search?q= |
google |
https://www.google.com/search?q= |
yahoo |
https://search.yahoo.com/search?p= |
ddg or duckduckgo |
https://www.duckduckgo.com/?q= |
sp or startpage |
https://www.startpage.com/do/search?q= |
yandex |
https://yandex.ru/yandsearch?text= |
github |
https://github.com/search?q= |
baidu |
https://www.baidu.com/s?wd= |
ecosia |
https://www.ecosia.org/search?q= |
goodreads |
https://www.goodreads.com/search?q= |
qwant |
https://www.qwant.com/?q= |
givero |
https://www.givero.com/search?q= |
stackoverflow |
https://stackoverflow.com/search?q= |
wolframalpha |
https://wolframalpha.com/input?i= |
archive |
https://web.archive.org/web/*/ |
scholar |
https://scholar.google.com/scholar?q= |
可以通过在.zshrc
中添加如下变量来自定义搜索引擎:
1 | ZSH_WEB_SEARCH_ENGINES=( |
主题
参考官方wiki:Themes,需要修改默认配置文件~/.zshrc
中的环境变量ZSH_THEME
powerlevel10k
powerlevel10k是一个第三方的zsh主题,支持ohmyzsh,具体安装可以参考官方README文档:
-
安装推荐字体(可选)
- 官方推荐Meslo Nerd Font字体(包含Powerlevel10k可能需要的所有字形和符号,在所有主要操作系统上的数十个不同终端中经过了实际测试)
- 从以下链接下载(均为github,可能需要工具)并手动安装(双击即可)对应的字体文件:
- [MesloLGS NF Regular.ttf](https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS NF Regular.ttf)
- [MesloLGS NF Bold.ttf](https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS NF Bold.ttf)
- [MesloLGS NF Italic.ttf](https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS NF Italic.ttf)
- [MesloLGS NF Bold Italic.ttf](https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS NF Bold Italic.ttf)
- 针对不同的终端,配置对应的字体为
MesloLGS NF
- 更改终端字体后需要手动运行
p10k configure
。旧的~/.p10k.zsh
配置文件可能无法正确使用新字体。
-
安装powerlevel10k(仅仅针对ohmysh,其他方式详见官方readme文档)
-
下载主题
1
2
3
4# github下载安装
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
# gitee下载安装
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k -
设置zsh主题,修改默认配置文件
~/.zshrc
,修改以下环境变量设置主题为powerlevel10k:1
ZSH_THEME="powerlevel10k/powerlevel10k"
-
-
重启zsh
-
如果配置向导没有自动启动,输入
p10k configure
进行配置。