安装 on-my-zsh 和常用插件,配置常用命令

  最近之前买的三年服务器到期了,新买了腾讯云的服务器,Cent OS 7.6,记录下安装oh-my-zsh及常用插件的过程,MacOS 通用。

一、安装

1、查看当前 shell

1
echo $SHELL

2、安装 zsh

1
yum install zsh -y

3、查看已经安装的 shell

1
cat /etc/shells

4、切换 zsh

1
chsh -s /bin/zsh

5、安装 git

1
yum install git -y

6、安装 oh-my-zsh

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

  由于网络原因,上述命令可能无法执行,此时新建一个install.sh脚本文件,复制 ohmyzsh/install.sh 的内容,然后执行bash install.sh命令即可。

二、配置

1、下载插件

  oh-my-zsh 有很多的插件:plugins,我常用的有 z、cp、zsh-autosuggestions、zsh-syntax-highlighting,它们的功能分别是跳转常用目录、cp 通过rsync命令提供带进度条的复制文件命令、自动提示、错误命令高亮。

1
2
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

  自带的插件:git、zcp

z 查看历史记录
–add 添加目录到记录里
-c 只查看当前目录
-t 按最近使用的匹配

rsync
-r 递归文件夹
-h 显示常见的文件大小单位
-P 显示进度条

2、编辑配置文件

1
vim ~/.zshrc

  我常用的主题是 ys,日常配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
export ZSH="$HOME/.oh-my-zsh"

ZSH_THEME="ys"
plugins=(git z cp zsh-autosuggestions zsh-syntax-highlighting)

source $ZSH/oh-my-zsh.sh
source ~/.bash_profile

# node n 第三方镜像
export N_NODE_MIRROR=https://npmmirror.com/mirrors/node

# pnpm
alias p="pnpm"

  可能执行source ~/.zshrc后会报错:/etc/bashrc "command not found: shopt",编辑~/.bashrc,将. /etc/bashrc替换成bash -c ". /etc/bashrc",保存后退出,再次执行source ~/.zshrc即可。

3、卸载 oh-my-zsh

1
uninstall_oh_my_zsh

三、常用别名

1、查看电池状态

  笔记本电脑安装了 CentOS 7.6,使用 upower 命令可以查看电池状态,这里配置一个 power 快捷命令,方便查看电池状态。

1
2
# 查看笔记本电脑电量
alias power='upower -i $(upower -e | grep BAT) | grep --color=never -E "state|to\ full|to\ empty|percentage"'

2、删除 node_modules

  使用 Monorepo 架构后,工程内很多地方都有了 node_modules 文件夹,在不希望有缓存干扰调试时,快速清理所有 node_modules 是有必要的,可以借助 npkill 这类工具包,可以配置下方的命令,通过执行 remove 命令快速删除当前路径下所有 node_modules。

1
2
# 删除当前目录的 node_modules
alias remove="pwd; echo 'Deleting all node_modules in the current directory ...'; find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +; echo 'Delete done!'; "
1
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
  • find . 表示从当前目录(.)开始搜索
  • -name 'node_modules' 表示搜索名为 node_modules 的文件或目录
  • -type d 限定查找类型为目录 (d)
  • -prune 跳过当前目录下的匹配项及其子目录。这意味着当 find 发现一个名为 node_modules 的目录时,不会再进入这个目录递归查找
  • -exec 对匹配到的每一个文件或目录执行指定的命令
  • rm -rf 递归强制删除文件或目录
  • {} 代表当前匹配到的文件或目录
  • + 表示以批处理方式执行命令,而不是对每个匹配项分别执行一次 rm -rf,这在有大量匹配项时可以提高效率

四、自定义主题

1
2
3
cd ~/.oh-my-zsh/themes
cp ys.zsh-theme ys1.zsh-theme
vim ys1.zsh-theme

  进入 ~/.oh-my-zsh/themes 目录,以 ys 主题为模板复制一个自定义的主题文件,暂且命名为 ys1,文件名以.zsh-theme结尾,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# Clean, simple, compatible and meaningful.
# Tested on Linux, Unix and Windows under ANSI colors.
# It is recommended to use with a dark background.
# Colors: black, red, green, yellow, *blue, magenta, cyan, and white.
#
# Mar 2013 Yad Smood

# VCS
YS_VCS_PROMPT_PREFIX1=" %{$reset_color%}on%{$fg[blue]%} "
YS_VCS_PROMPT_PREFIX2=":%{$fg[cyan]%}"
YS_VCS_PROMPT_SUFFIX="%{$reset_color%}"
YS_VCS_PROMPT_DIRTY=" %{$fg[red]%}x"
# YS_VCS_PROMPT_CLEAN=" %{$fg[green]%}o"
YS_VCS_PROMPT_CLEAN=""

# node version
local node_info='$(ys_node_prompt_info)'
ys_node_prompt_info() {
if command -v node &> /dev/null; then
echo " %{$fg[green]%}$(node -v)"
fi
}

# Git info
local git_info='$(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="${YS_VCS_PROMPT_PREFIX1}git${YS_VCS_PROMPT_PREFIX2}"
ZSH_THEME_GIT_PROMPT_SUFFIX="$YS_VCS_PROMPT_SUFFIX"
ZSH_THEME_GIT_PROMPT_DIRTY="$YS_VCS_PROMPT_DIRTY"
ZSH_THEME_GIT_PROMPT_CLEAN="$YS_VCS_PROMPT_CLEAN"

# SVN info
local svn_info='$(svn_prompt_info)'
ZSH_THEME_SVN_PROMPT_PREFIX="${YS_VCS_PROMPT_PREFIX1}svn${YS_VCS_PROMPT_PREFIX2}"
ZSH_THEME_SVN_PROMPT_SUFFIX="$YS_VCS_PROMPT_SUFFIX"
ZSH_THEME_SVN_PROMPT_DIRTY="$YS_VCS_PROMPT_DIRTY"
ZSH_THEME_SVN_PROMPT_CLEAN="$YS_VCS_PROMPT_CLEAN"

# HG info
local hg_info='$(ys_hg_prompt_info)'
ys_hg_prompt_info() {
# make sure this is a hg dir
if [ -d '.hg' ]; then
echo -n "${YS_VCS_PROMPT_PREFIX1}hg${YS_VCS_PROMPT_PREFIX2}"
echo -n $(hg branch 2>/dev/null)
if [[ "$(hg config oh-my-zsh.hide-dirty 2>/dev/null)" != "1" ]]; then
if [ -n "$(hg status 2>/dev/null)" ]; then
echo -n "$YS_VCS_PROMPT_DIRTY"
else
echo -n "$YS_VCS_PROMPT_CLEAN"
fi
fi
echo -n "$YS_VCS_PROMPT_SUFFIX"
fi
}

# Virtualenv
local venv_info='$(virtenv_prompt)'
YS_THEME_VIRTUALENV_PROMPT_PREFIX=" %{$fg[green]%}"
YS_THEME_VIRTUALENV_PROMPT_SUFFIX=" %{$reset_color%}%"
virtenv_prompt() {
[[ -n "${VIRTUAL_ENV:-}" ]] || return
echo "${YS_THEME_VIRTUALENV_PROMPT_PREFIX}${VIRTUAL_ENV:t}${YS_THEME_VIRTUALENV_PROMPT_SUFFIX}"
}

local time=" %{$reset_color%}[%*]"
local exit_code="%(?,,C:%{$fg[red]%}%?%{$reset_color%})"

# Prompt format:
#
# PRIVILEGES USER @ MACHINE in DIRECTORY on git:BRANCH STATE [TIME] C:LAST_EXIT_CODE
# $ COMMAND
#
# For example:
#
# % ys @ ys-mbp in ~/.oh-my-zsh on git:master x [21:47:42] C:0
# $
PROMPT="
%{$terminfo[bold]$fg[blue]%}#%{$reset_color%} \
%(#,%{$bg[yellow]%}%{$fg[black]%}%n%{$reset_color%},%{$fg[cyan]%}%n) \
%{$reset_color%}@ \
%{$fg[green]%}%m \
%{$reset_color%}in \
%{$terminfo[bold]$fg[yellow]%}%~%{$reset_color%}\
${hg_info}\
${git_info}\
${svn_info}\
${venv_info}\
${node_info}\
${time}\
\
$exit_code
%{$terminfo[bold]$fg[red]%}$ %{$reset_color%}"
以上

随笔标题:安装 on-my-zsh 和常用插件,配置常用命令

随笔作者:刘先玉

发布时间:2022年11月11日 - 20:31:23

最后更新:2024年06月06日 - 11:32:35

原文链接:https://liuxianyu.cn/article/on-my-zsh.html