一、概述

前段时间在B站上看到有UP主在Manjaro Linux上使用了zsh并且配置一个超级炫酷的主题powerlevel9k:传送门。看了之后非常跃跃欲试,想在我的iMac上也配置一下,但是网上找了一下powerlevel的最新版本是powerlevel10k,而且10k的运行效率比9k提高很多,因此在这篇博文中记录一下我在MacOS中使用iTerm2终端配置zsh和powerlevel10k主题的过程。最终显示的效果如下(下文多图预警):

二、配置过程

1. 安装iTerm2并配置颜色字体

iTerm2相对于苹果原生的terminal具有更多的个性化定制和快捷键绑定,是MacOS终端的不二选择。可以在iTerm2的官网进行下载。下载完后可以选择一个颜色主题,我配置的是Solarized Dark,如下图。

配置完颜色主题后为了防止后面powerlevel10k主题乱码,可以安装nerd字体。访问nerd fonts官网,下载DejaVuSansMono Nerd Font(当然你也可以选择你喜欢的字体),下载完后双击安装即可,然后在iTerm2的text配置项中选择这个字体,如下图。

2. 安装oh my zsh

在安装oh my zsh前可以先输入zsh --version判断一下本机是否已经安装了zsh(MacOS一般默认都会安装),如果有输出的话可以将zsh设置为默认shell:chsh -s /bin/zsh

oh my zsh是一个zsh的一个框架,它提供了很多zsh内建函数,并提供插件管理、主题管理等功能。安装它能够使zsh的使用体验更加完美。安装方式也很简单,通过curl或者wget就行了。

# 使用curl下载安装脚本并执行
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"# 使用wget下载安装脚本并执行
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

3. 配置 Powerlevel10k

Powerlevel10k是oh my zsh的一个外部主题,托管在GitHub上,想要使用该主题只需要将该项目克隆下来:

# 将项目克隆到~/.oh-my-zsh/custom/themes/powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k# 使用gitee可以更加快速
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

克隆下来之后,在 zsh 的配置文件 ~/.zshrc 中设置 ZSH_THEME=powerlevel10k/powerlevel10k 即可,然后命令行输入p10k configure进行初始化。若要实现第一小节中图片的效果可以将下面脚本复制到~/.zshrc中的最后。每段代码的含义可以访问项目的GitHub,我下面就不再展开了。

COLOR=(004
#   005 006
#   010007)
COLOR_ARRAY=(004 067 059
#   005 062 059 006 073 109
#   010 070 115007 249 240)
# THEME_COLOR=$(( $RANDOM % 3 ))
THEME_COLOR=1
DEFAULT_BACKGROUND=235
DEFAULT_FOREGROUND="${COLOR[$(( $THEME_COLOR + 1 ))]}"POWERLEVEL9K_MODE="nerdfont-complete"#####################################[ prompt ]######################################
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╭─"
POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\ue0b4'
POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\ue0b0'
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%F{$DEFAULT_FOREGROUND}╰─%F{${COLOR_ARRAY[$(( $THEME_COLOR * 3 + 2 ))]}}\uf054%F{$DEFAULT_FOREGROUND}\uf054"
typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION=$'\uf054'
typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=124
typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=70
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(user device virtualenv dir vcs newline prompt_char)
#POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(command_execution_time background_jobs status history time ssh)#####################################[ vcs: git status ]######################################
POWERLEVEL9K_VCS_CLEAN_BACKGROUND="green"
POWERLEVEL9K_VCS_CLEAN_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND="yellow"
POWERLEVEL9K_VCS_MODIFIED_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_VCS_UNTRACKED_BACKGROUND=166
POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND="$DEFAULT_BACKGROUND"##################################[ dir: current directory ]##################################
POWERLEVEL9K_DIR_HOME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_DIR_HOME_SUBFOLDER_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SHORTEN_DIR_LENGTH=16
POWERLEVEL9K_SHORTEN_STRATEGY="truncate_absolute"
POWERLEVEL9K_SHORTEN_DELIMITER='...'
POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=240##################################[ status ]##################################
POWERLEVEL9K_STATUS_OK_FOREGROUND="green"
POWERLEVEL9K_STATUS_OK_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"
POWERLEVEL9K_STATUS_ERROR_FOREGROUND="red"
POWERLEVEL9K_STATUS_ERROR_BACKGROUND="$(( $DEFAULT_BACKGROUND + 4 ))"POWERLEVEL9K_HISTORY_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HISTORY_BACKGROUND="$(( $DEFAULT_BACKGROUND + 2 ))"POWERLEVEL9K_VIRTUALENV_BACKGROUND="$((  $DEFAULT_BACKGROUND - 2 ))"
POWERLEVEL9K_VIRTUALENV_FOREGROUND="$DEFAULT_FOREGROUND"POWERLEVEL9K_OS_ICON_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_OS_ICON_BACKGROUND="$DEFAULT_BACKGROUND"POWERLEVEL9K_TIME_FORMAT="%D{%T}" #  15:29:33
POWERLEVEL9K_TIME_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_TIME_BACKGROUND="$DEFAULT_BACKGROUND"POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_BACKGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
#POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BACKGROUND_JOBS_BACKGROUND="$DEFAULT_FOREGROUND"POWERLEVEL9K_ROOT_ICON=$'\uF198'  # POWERLEVEL9K_SSH_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_SSH_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_SSH_ICON="\uF489"  # POWERLEVEL9K_HOST_LOCAL_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_LOCAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_HOST_REMOTE_FOREGROUND="$DEFAULT_FOREGROUND"
POWERLEVEL9K_HOST_REMOTE_BACKGROUND="$DEFAULT_BACKGROUND"POWERLEVEL9K_LOAD_CRITICAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_WARNING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_NORMAL_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND="red"
POWERLEVEL9K_LOAD_WARNING_FOREGROUND="yellow"
POWERLEVEL9K_LOAD_NORMAL_FOREGROUND="green"
POWERLEVEL9K_LOAD_CRITICAL_VISUAL_IDENTIFIER_COLOR="red"
POWERLEVEL9K_LOAD_WARNING_VISUAL_IDENTIFIER_COLOR="yellow"
POWERLEVEL9K_LOAD_NORMAL_VISUAL_IDENTIFIER_COLOR="green"POWERLEVEL9K_BATTERY_LEVEL_BACKGROUND_COLOR="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGING_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_CHARGED_BACKGROUND="$DEFAULT_BACKGROUND"
POWERLEVEL9K_BATTERY_DISCONNECTED_BACKGROUND="$DEFAULT_BACKGROUND"function prompt_user() {p10k segment -b  $DEFAULT_BACKGROUND -f $DEFAULT_FOREGROUND -i $'\uf2be' +r -t '%n'
}
function prompt_device() {p10k segment -b "$(( $DEFAULT_BACKGROUND + 2 ))" -f $DEFAULT_FOREGROUND -i $'\uf108' +r -t '%m'
}

三、插件

oh my zsh提供了相当多插件供你使用,不过我配置的插件并不是很多,就只有以下四种,不过可以满足我对命令行的基本需求了,而且太多插件的话也会拖慢zsh的启动速度,所以大家可以根据自己的喜好在zshrc中配置插件。若要浏览oh my zsh的官方插件可以访问它的GitHub插件wiki

plugins=(gitzzsh-syntax-highlightingzsh-autosuggestions)
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=240'

1. git

git插件主要提供了很多git命令行缩写别名,以及一些有用的函数,详情可以访问oh-my-zsh Git插件。同时在powerlevel主题下进入一个Git仓库,你的命令提示符也会发生变化哦~

2. z

z插件的主要功能就是快速跳转,当我们使用bash的时候进入一个目录必须输入它完整的路径名,使用z插件后它会记忆你cd过的目录,当你使用z [dir]的时候,它会快速跳转到该目录,再也不用手动输入一长串路径了。

3. zsh-syntax-highlighting

该插件的功能是提供命令行的语法高亮,所谓的语法高亮指的是你输入的命令会产生一个颜色效果,如下图

不过该插件是非官方的第三方插件所以需要下载,下载方式也很简单:

# 将项目克隆到~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

克隆完成后在~/.zshrc中配置该插件就行了,就像第三小节中的示例一样。

4. zsh-autosuggestions

该插件的功能是提供命令行的自动提示,虽然bash可以通过tab键的方式进行自动补全,但是该插件提供了一个可视化的方式提示你后面可能会输入的命令,如下图。当它给出的自动提示符合你的期望的时候你可以按方向键的→键进行补全。

同样地,这个插件是非官方的第三方插件,像上一个插件一样从GitHub克隆后,在~/.zshrc中配置即可激活使用。

# 将项目克隆到~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

【MacOS】命令行配置zsh以及powerlevel10k主题相关推荐

  1. macOS终端命令行配置网络代理

    一.前言:   在下载一些需要vpn下载公司内网的源码或者认证时,必不可少的需要使用代理,与普通的网页及应用代理不同,在mac的终端中并没有开启默认的代理模式,所以需要手动进行设置,设置分为两部分:设 ...

  2. manjaro 配置zsh以及powerLine主题安装

    配置zsh以及powerLine主题安装 安装 zsh 安装 oh-my-zsh 安装 powerline及字体 查看命令 查看已有的shell 查看当前shell 使用zsh替换bash(重新打开终 ...

  3. spring boot通过命令行配置属性

    spring boot通过命令行配置属性 命令:java -jar xxx.jar --server.port=8888,通过使用–-server.port属性来设置xxx.jar应用的端口为8888 ...

  4. .NET Core开发实战(第9课:命令行配置提供程序)--学习笔记

    09 | 命令行配置提供程序:最简单快捷的配置注入方法 这一节讲解如何使用命令行参数来作为配置数据源 命令行配置(提供程序的)支持三种格式的命令 1.无前缀的 key=value 模式 2.双中横线模 ...

  5. linux命令行配置代理_Linux命令行乐趣,顶级配置工具,Kubeflow等

    linux命令行配置代理 上周我们在24天有趣的Linux命令行技巧中的文章再次占据了我们的前10名. 读者还想了解有关开源配置管理工具,Kubeflow,AI入门等更多信息. 您想在新的一年开始为O ...

  6. mac命令行配置网络

    mac命令行配置网络 今天终于找到了Mac OS X通过命令行修改ip的方式了,记录如下: 修改mac地址,重启后失效 sudo ifconfig en0 lladdr d0:67:e5:2e:07: ...

  7. mysql命令行配置

    一.命令行配置mysql密码 1.配置环境变量,MYSQL_HOME和path 2)生成data文件 以管理员身份运行cmd 进入E:\python\mysql\mysql-8.0.12-winx64 ...

  8. 使用命令行配置启动windows服务

    使用命令行配置启动windows服务 转载自:http://blog.csdn.net/wuliao009/article/details/7203219 使用命令行启动服务 1. 打开"命 ...

  9. 第九章 思科IOS与华为VRP系统及命令行配置

    思科IOS与华为VRP系统及命令行配置 1.路由器交换机的硬件组成以及文件系统 PCA-SW1-R1-SW2-PCB 初次连接好一个网络,路由器和终端接口需要配置好IP地址 路由器交换机,本质上就是一 ...

最新文章

  1. python储存在ftp_python实现FTP
  2. 安装ftp连接linux服务器配置,Linux下FTP安装及配置(VSFTPD服务器安装配置、FTP客户端安装配置)...
  3. C++之stdafx.h的用法说明
  4. android sharedpre,Android SharedPreferences四种操作模式使用详解_Android_脚本之家
  5. Office安装源损坏
  6. WebApi client 的面向切面编程
  7. docker compose mysql_docker-compose部署MySQL
  8. 洛谷——P1706 全排列问题
  9. MySQL中Checkpoint技术
  10. 怎样在安卓中实现在锁屏状态下弹出对话框,并可以震动和铃声,就像闹钟似的?...
  11. 如何在PR中同步音频和视频
  12. AI机器人AI源码营销机器人电销机器人智能电话机器人拨号机器人语音机器人空号识别FreeSWITCH呼叫中心中间ipbxIPBX科大识别阿里识别语音识别语音翻译
  13. 三相全桥整流电路_什么是三相桥式全控整流电路,三相桥式全控的工作原理是什么,三相桥式全控电路电路图...
  14. Hbase_Hbase 中 bloom filter 的设计与概念
  15. Java Rest path_java – 具有多种类型的REST PathParam
  16. 牛客网计算机考研机试真题-abc
  17. 视频教程-软考系统集成项目管理工程师视频教程(上)-软考
  18. Java okhttp 实现对有道翻译的爬取
  19. 蚂蚁金服更名 一场有关数字科技的阳谋!
  20. 【多传感器融合】激光雷达与相机前融合

热门文章

  1. ios沙箱模式开启_iOS的沙箱机制 是否应该清理后台
  2. 网络安全“全面防”,应对难以察觉的网络威胁!
  3. 基于C++的OpenCV(八)图像处理
  4. 关于Left Join On的使用
  5. 如何在MSDN上下载操作系统
  6. 抓取WebSocket推送的消息
  7. 【JavaScript】VUE前端实现微信版录制音频wav格式转化成mp3格式和Base64
  8. Angular4-在线竞拍应用-开发环境的搭建
  9. C++类对象的创建与释放过程
  10. 细粒度图像分析综述2019