用iterm2和oh-my-zsh美化Mac终端

Posted by Lanzhou on March 19, 2021

公司的电脑早就配置好了,最近突然想用自己的Mac电脑做一些小项目,但terminal用着实在不顺手,而且没有色彩,难以阅读。感觉terminal有可爱的主题和缤纷的色彩用起来心情会好一些!今天花了一些时间忙活用oh-my-zsh强化和美化终端这件事。

关于iTerm2

iTerm2是一款非常好用的终端管理器,可以直接在iTerm2官网下载安装。

修改色彩主题

打开iTerm2,菜单栏点击iTerm2 -> Profiles -> Colors -> Color Presets

修改字体样式

打开iTerm2,菜单栏点击iTerm2 -> Profiles -> Text

安装oh-my-zsh

oh-my-zsh官网 : Install oh-my-zsh

image-20210319201507039

通过curl安装:

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

然后可以在terminal中看到oh my zsh is now installed!的提示。

修改默认的shell

首先查看当前环境shell

echo $SHELL

查看系统自带哪些shell

cat /etc/shells

结果:

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

Mac系统自带了zsh,可以通过Homebrew来安装最新的版本。

brew install zsh

查看zsh的版本:

zsh --version

然后将zsh设置为默认的shell:

chsh -s /bin/zsh

修改主题风格

oh-my-zsh官网 : THEMES oh-my-zsh themes 点进去可以看到海量主题效果,个人最喜欢cloud

cloud

(有小云朵☁️和闪电⚡️!)

cloud

agnoster

(看起来很帅气的一个主题)

agnoster

如果想设置主题先cd into root directory,然后code .打开vscode,打开.zshrc文件,设置新的主题值:

ZSH_THEME="cloud"

保存,在terminal里运行:

source ~/.zshrc

就可以看到新的cloud主题了。

如果还不确定喜欢哪种主题想随便试试看,可以根据.zshrc文件中的comment提示修改:

ZSH_THEME="random"

这样每次load oh-my-zsh 都会出现新的主题。(每次关掉iTerm2都会跳出新的主题,超开心!)

如果想知道当前使用的主题名称可以运行:

echo $RANDOM_THEME

这些都是oh-my-zsh自带的主题,可以在~/.oh-my-zsh/themes目录中看到。

使用非自带主题

除了这些自带的主题还有很多好看的定制主题 External Themes list (推荐emoji,powerlevel10k)。 根据各个主题的docs使用就好。

Trouble shooting

配置zsh时遇到的error(1和2都是在source ~/.zshrc的时候出现的):

  1. Insecure completion-dependent directories detected https://github.com/ohmyzsh/ohmyzsh/issues/6835

    类似这个问题。

    解决方法stack overflow solution

    The first solution: change the ownership of the problematic directories (doesn’t work)

    The second solution:set ZSH_DISABLE_COMPFIX=true (or "true" in quotes) in your .zshrc file, to tell ZSH to not check for insecure directories. (works for me)

  2. compinit:498: no such file or directory: /usr/local/share/zsh/site-functions/_docker-machine

    解决方法https://docs.docker.com/machine/completion/

    (参考Zsh部分)

    Place the completion script in your a completion file within the ZSH configuration directory, such as ~/.zsh/completion/.

     mkdir -p ~/.zsh/completion
     curl -L https://raw.githubusercontent.com/docker/machine/v0.16.0/contrib/completion/zsh/_docker-machine > ~/.zsh/completion/_docker-machine
    

    Include the directory in your $fpath, by adding a like the following to the ~/.zshrc configuration file.

     fpath=(~/.zsh/completion $fpath)
    

    Make sure compinit is loaded or do it by adding in ~/.zshrc:

     autoload -Uz compinit && compinit -i
    

    Then reload your shell:

     exec $SHELL -l
    
  3. 发现使用zsh后没办法使用.bash_profilez中的设置

    解决方法

    .zshrc文件中加入:

     #source bash profile
     source ~/.bash_profile
    

其他参考文章: