终端 zsh 配置指南

loskyertt Unknown

一、终端代理设置

建议加上,在进行通过终端的下载、更新系统、conda下载或者git clone时,能走代理来提高下载速度。但是docker需要单独配置一套代理。zshbash都可以用这种方式。

1
kate ~/.zshrc

bash需要在.bashrc中修改。

  • .zshrc中添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
# where proxy
proxy(){
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
echo "HTTP Proxy on"
}

# where noproxy
noproxy(){
unset http_proxy
unset https_proxy
echo "HTTP Proxy off"
}

根据实际情况填写自己的代理端口。

1
source ~/.zshrc

通过在终端输入proxy或者noproxy来开启或关闭代理。

输入下面指令,可以查看终端代理地址:

1
env | grep -i proxy

二、zsh配置

2.1 切换 zsh 为默认终端

要确保已经安装了zsh

1
chsh -s $(which zsh)

通常要重启系统才会生效。

验证默认shell

1
echo $SHELL

2.2 zsh prompt

Code Info
%T 系统时间(时:分)
%* 系统时间(时:分:秒)
%D 系统日期(年-月-日)
%n 用户名称(即:当前登陆终端的用户的名称,和whami命令输出相同)
%B 开始到结束使用粗体打印
%b 开始到结束使用粗体打印
%U 开始到结束使用下划线打印
%u 开始到结束使用下划线打印
%d 你当前的工作目录
%~ 你目前的目录相对于~的相对路径
%M 计算机的主机名
%m 计算机的主机名(在第一个句号之前截断)
%l 你当前的tty
%F{色码} 用来设定某个颜色的开始
%f 用来设定成预设的样式, 也可以说是设定好的颜色结束

2.2.1推荐配置

关于自定义git prompt。参考这两篇文章:

关于自定义conda prompt。参考这篇论坛:

  • how to modify the anaconda environment prompt in zsh?
    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
    # ~/.zshrc
    # Find and set branch name var if in git repository.
    function git_branch_name()
    {
    branch=$(git symbolic-ref HEAD 2> /dev/null | awk 'BEGIN{FS="/"} {print $NF}')
    if [[ $branch == "" ]];
    then
    :
    else
    echo '- ('$branch')'
    fi
    }

    # Enable substitution in the prompt.
    setopt prompt_subst

    precmd_get_conda_env_name() {
    if [[ -n $CONDA_PREFIX ]]; then
    if [[ $(basename $CONDA_PREFIX) == "miniconda3" ]]; then
    CONDA_ENV="base"
    else
    CONDA_ENV="$(basename $CONDA_PREFIX)"
    fi
    else
    CONDA_ENV=""
    fi
    }
    precmd_functions+=( precmd_get_conda_env_name )
    precmd_update_prompt() {
    PROMPT=$'\n'"%B%F{119}[%F{green}%D{%m/%d %H:%M}%F{119}] %F{red}%n%F{blue}@%F{yellow}%m%F{black}:%F{cyan}%~%B%F{70}$(git_branch_name)"$'\n'"%F{magenta}$CONDA_ENV%F{119} ➜ %f%b"
    }
    precmd_functions+=( precmd_update_prompt )

2.3 插件配置

  • 备份(避免配置失败,最好备份下):

    1
    cp ~/.zshrc ~/.zshrc.backup
  • 创建配置文件夹:

1
mkdir -p .zsh/plugins
1
mv .zshrc .zsh/
1
mv .zsh_history .zsh/

注:若没有.zsh_history,那么需要用touch指令创建。

1
touch .zsh_history
  • 然后编辑文件夹.zsh中的.zshrc,加上:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ### ZSH HOME
    export ZSH=$HOME/.zsh

    ### ---- history config ----------
    export HISTFILE=$ZSH/.zsh_history

    # How many commands zsh will load to memory.
    export HISTSIZE=10000

    # How maney commands history will save on file.
    export SAVEHIST=10000

    # History won't save duplicates.
    setopt HIST_IGNORE_ALL_DUPS

    # History won't show duplicates on search.
    setopt HIST_FIND_NO_DUPS
  • 安装插件:

进入安装插件的目录:

1
cd ~/.zsh/plugins

插件一:

1
git clone  https://github.com/zdharma-continuum/fast-syntax-highlighting.git

插件二:

1
git clone https://github.com/zsh-users/zsh-autosuggestions.git

插件三:

1
git clone https://github.com/zsh-users/zsh-completions.git
  • .zshrccopy中添加:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    source $ZSH/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh
    fpath=($ZSH/plugins/zsh-completions/src $fpath)

    # zsh-autosuggestions:config
    source $ZSH/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
    ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#ff00ff,bg=cyan,bold,underline"
    ZSH_AUTOSUGGEST_STRATEGY=(history completion)
    ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20

    # end config
  • 链接:
    最后就是创建符号链接,这样我们就可以通过更改~/.zshrcCopy来同步更改.zsh/.zshrcCopy配置文件了。首先需要确认~目录下没有.zshrc文件,如果有,就rm .zshrc

此时可以开始创建符号链接了:

1
ln -s ~/.zsh/.zshrc ~/.zshrc

重新加载配置文件:

1
source ~/.zshrc

可以通过ls -la来查看是否链接成功。

三、问题汇总

3.1 历史命令问题

出现这种情况zsh: corrupt history file /home/sky/.zsh/.zsh_history。有的时候系统因为默写原因强行启动的时候会破坏zsh的历史文件。
解决办法:

1
2
3
4
cp ~/.zsh_history ~/.zsh_history_backup
rm ~/.zsh_history
strings -eS ~/.zsh_history_backup > ~/.zsh_history
fc -R ~/.zsh_history

如果上述步骤没有解决问题,可能是因为.zsh_history文件严重损坏。在这种情况下,需要放弃旧的历史记录并创建一个新的文件。

3.2 安装 oh my zsh 可能会出现的问题

注意: 如果是安装oh my zsh可能会出现下面的问题:

1.发现安装完oh my zsh后终端中有些命令不能使用:
编辑.zshrc发现里面内容都被替换掉了,之前的配置内容都被转移到一个叫.zshrc.pre-oh-my-zsh文件中。

  • Title: 终端 zsh 配置指南
  • Author: loskyertt
  • Created at : 2024-07-19 21:40:05
  • Updated at : 2024-11-13 03:07:10
  • Link: https://redefine.ohevan.com/2024/07/19/zsh配置/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments