# zsh **Repository Path**: asddfdf/zsh ## Basic Information - **Project Name**: zsh - **Description**: 快捷安装和使用zsh的vim模式 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-02-27 - **Last Updated**: 2023-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: Zsh, Bash ## README # Oh-my-zsh 这是oh-my-zsh的配置文件,使用gitee镜像服务。一键安装 # 安装脚本 > 安装之前请确保安装`git`和`curl`,`zsh` > > 此命令会安装到当前用户的家目录下的`$HOME/.oh-my-zsh`的文件下 ## 1. 一键脚本 ```bash cd $HOME \ && curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh \ | sed 's/github.com/gitee.com/g' \ | sed 's/ohmyzsh\/ohmyzsh/mirrors\/oh-my-zsh/g' \ | bash \ && git clone https://gitee.com/asddfdf/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting \ && git clone https://gitee.com/asddfdf/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions \ && sed -i 's/(git)/(\ngit\nzsh-autosuggestions\nzsh-syntax-highlighting\n)/g' $HOME/.zshrc \ && sed -i 's/robbyrussell/agnoster/g' $HOME/.zshrc \ && chsh -s /bin/zsh ``` ## 2. 手动安装 > 如果一键安装不成功,可以使用手动安装 - 更新并安装依赖 ```bash sudo apt update && sudo apt install zsh git curl -y ``` - 指定使用`zsh` ```bash chsh -s /bin/zsh ``` - 下载zsh脚本文文件 ```bash curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh | sed 's/github.com/gitee.com/g' | sed 's/ohmyzsh\/ohmyzsh/mirrors\/oh-my-zsh/g' | bash ``` ### 2.1 下载插件 - 高亮插件 ```bash git clone https://gitee.com/asddfdf/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting ``` - 命令补全插件 ```bash git clone https://gitee.com/asddfdf/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions ``` 添加插件到zsh启动文件 ```bash sed -i 's/(git)/(\ngit\nzsh-autosuggestions\nzsh-syntax-highlighting\n)/g' $HOME/.zshrc ``` ### 2.2 切换zsh主题 ```zsh sed -i 's/robbyrussell/agnoster/g' $HOME/.zshrc ``` ### 2.3 刷新zshrc配置文件 ```bash source $HOME/.zshrc ``` # 高级配置 ## Vim模式 > 常见的使用模式都是Emacs的操作,在zsh中也可以使用VIM模式操作命令行 ### 添加VIM插件 编辑文件`$HOME/.zshrc`在plusins插件中添加`vi-mode` ```shell plugins=( git zsh-autosuggestions zsh-syntax-highlighting vi-mode ) ``` > 但是这会遇到切换编辑模式和命令模式下,终端没有任何反馈。 > > 当输入命令时,用户并不知道自己是在编辑模式下还是在命令模式下,所以你可能需要这些脚本。 ### 光标反馈 > 借助光标的形状,告诉用户zsh正在处于什么模式下 - 仅适用于了解DECSCUSR的终端和终端仿真器。 ```sh zle-keymap-select () { if [ $KEYMAP = vicmd ]; then printf "\033[2 q" else printf "\033[6 q" fi } zle -N zle-keymap-select zle-line-init () { zle -K viins printf "\033[6 q" } zle -N zle-line-init bindkey -v ``` - 适用于iTerm2 ```zsh function zle-keymap-select zle-line-init { # change cursor shape in iTerm2 case $KEYMAP in vicmd) print -n -- "\E]50;CursorShape=0\C-G";; # block cursor viins|main) print -n -- "\E]50;CursorShape=1\C-G";; # line cursor esac zle reset-prompt zle -R } function zle-line-finish { print -n -- "\E]50;CursorShape=0\C-G" # block cursor } zle -N zle-line-init zle -N zle-line-finish zle -N zle-keymap-select ``` ### 提示符反馈 > 借助命令提示符告诉用户`zsh`处于什么状态下 - 命令模式下显示`N`,编辑模式下显示`I` ```sh bindkey -v KEYTIMEOUT=1 function zle-line-init zle-keymap-select { case ${KEYMAP} in (vicmd) BULLETTRAIN_PROMPT_CHAR="N" ;; (main|viins) BULLETTRAIN_PROMPT_CHAR="I" ;; (*) BULLETTRAIN_PROMPT_CHAR="I" ;; esac zle reset-prompt } zle -N zle-line-init zle -N zle-keymap-select ``` - 提示符颜色变化,命令模式下变成红色,编辑模式下变成白色 ```sh bindkey -v function zle-line-init zle-keymap-select { case ${KEYMAP} in (vicmd) PROMPT=$'%{\e[0;32m%}%~%{\e[0m%} %{\e[0;31m%}$%{\e[0m%} ' ;; (main|viins) PROMPT=$'%{\e[0;32m%}%~%{\e[0m%} $ ' ;; (*) PROMPT=$'%{\e[0;32m%}%~%{\e[0m%} $ ' ;; esac zle reset-prompt } zle -N zle-line-init zle -N zle-keymap-select ``` > 这些脚本都来自于这个网址:https://qastack.cn/unix/547/make-my-zsh-prompt-show-mode-in-vi-mode > > 以上都是手动添加脚本,在zsh中也有优秀的插件来完成这些操作,甚至做的更好。 ## Vim插件 > To do 待完成 https://github.com/jeffreytse/zsh-vi-mode # 可能的遇到问题 ## 安装依赖字体 缺失字体文件会导致显示乱码。 ```bash # arch sudo pacman -S ttf-fira-code # debian/ubuntu sudo apt install fonts-firacode ``` - 可能要安装包`powerlines` ```bash # arch sudo pacman -S powerline # debian/ubuntu sudo apt install powerline sudo apt install fonts-powerline ```