遇见时光

Keep Looking , Don't Settle
Stay Hungry , Stay Foolish

WSL + oh-my-zsh终端方案

本方案是在Win10 1903版本、WSL 1.13及Ubuntu 20.04上实现的


安装和配置WSL

Windows本地需要先在微软应用商店安装WSL,然后可以看此处的教程进行配置


安装和配置oh-my-zsh

  1. 安装zsh

    1
    sudo apt-install zsh

  2. 查看当前系统可使用的shell

    1
    cat /etc/shells

  3. 查看当前系统默认的shell

    1
    echo $SHELL

  4. 将默认的bash改成zsh,然后保存

    1
    sudo vim /etc/passwd     
    • 第一行的/bin/bash换成/bin/zsh,这个是root用户
    • 本系统中你的用户账号下那一行将/home/account:/bin/bash也换成/home/account:/bin/zsh

  5. 安装oh-my-zsh

    使用 curl 下载安装

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

  6. 修改oh-my-zsh默认主题

    • 配置主题可以通过修改~/.zshrc 中的环境变量ZSH_THEME来完成

    rocky

    使用source ~/.zsh使配置文件生效。

    注意此时终端可能会出现乱码,使用以下方式解决


    • 打开本地的Git bash终端下载字体

      1
      2
      # windos 下需先安装 git
      git clone https://github.com/powerline/fonts.git --depth=1

      克隆下来的文件里有个使用Power Shell打开的文件,使用右击Power Shell打开就会自动安装字体。


    • 安装完成后在WSL中进行配置

      rocky

    rocky

    重新打开WSL就可以看到字体显示正常了。


  7. 安装oh-my-zsh插件

    • 安装自动提示插件zsh-autosuggestions

      1
      git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

      使用方法:输入命令时观察指令,若出现淡色提示则可以使用->进行所有补全,使用CTRL + ->进行单词补全。


    • 安装语法高亮插件zsh-syntax-highlighting

      1
      git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

    • 安装The fuck插件

      1
      2
      3
      sudo apt update
      sudo apt install python3-dev python3-pip python3-setuptools
      sudo pip3 install thefuck

      然后将eval $(thefuck --alias)添加到~/.zshrc,此时就配置完成了。

      使用方法:输入ppthon,得到错误停止,然后再输入fuck进行修正。


    • 安装completions插件

      1
      git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions

      通过在source "$ZSH/oh-my-zsh.sh"之前添加以下行,将其添加到.zshrc中的fpath

      1
      fpath+=${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions/src

      注意:每次Zsh调用时重新构建两次完成缓存


    • 安装autojump插件

      1
      sudo apt-get install autojump

      除了在还要在~/.zshrc中配置plugins,还要将下面这句写到文件中:

      1
      2
      # 放在source "$ZSH/oh-my-zsh.sh"之前
      [[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh

      autojump的使用:

      命令example
      d在终端输入d,可以显示刚刚走过的路径,然后按数字选择进入哪一个目录
      j libs可以匹配到之前访问的地址
      j {foo}跳转到一个包含foo字符串的目录
      jc {foo}跳转到一个包含foo字符串目录的子目录
      jo {foo}在终端直接打开包含foo字符串目录的文件管理器(必须安装有Linux桌面环境,如GNOME,通过XShell/SecureCRT远程连的服务器那么这个不可用)
      jco {foo}在终端直接打开包含foo字符串目录的子目录的的文件管理器
      j {w} {foo}那么j bar会跳转到权重最大的目录,
      你也可以通过j w bar跳转到权重相对较小的目录
      j --purge清除不再需要的目录

      注意:只有打开过的目录 autojump 才会记录,所以使用时间越长,autojump 才会越智能;可以使用 autojump 命令,或者使用短命令 j.


    • 当我们输入命令需要管理员身份时,不必让光标回到开始打一个sudo,可以直接按两次Esc,就会自动帮你加上sudo

      注意:Thefuck 也绑定了快捷键Esc-Esc,我们需要使用bindkey命令进行更改。

    使用cat指令,接着敲击Esc-Esc来查看其编码,将^[^[更改到模板中,并将如下命令添加到.zshrc的最后:

    1
    2
    # bindkey
    bindkey '^[^[' sudo-command-line

    • 最后我们打开文件.zshrc配置插件:

      rocky

    然后使用source ~/.zshrc使配置生效。


  8. 在zsh中配置命令的别名

    打开配置文件vim ~/.zshrc,将别名配置到后面:

    1
    2
    3
    4
    5
    6
    7
    alias gcm="git commit
    alias gck="git checkout"
    alias gbr="git branch
    alias gss="git status
    alias gmg="git merge"
    alias gpullo="git pull origin"
    alias gpusho="git push origin"

    重新执行文件source ~/.zshrc

    到git仓库下看看,使用gck master验证成功,可以节省很多开发时间。


  9. 卸载oh-my-zsh

    • 卸载

      1
      sudo sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/uninstall.sh)"
    • 将/bin/bash变成/bin/zsh

      1
      sudo vim /etc/passwd   //打开将第一行和最后变成/bin/zsh
大爷,赏点?