macOS 终端配置:Ghostty + Oh My Zsh + Starship

这是一套偏日常开发使用的 macOS 终端配置:使用 Ghostty 作为终端模拟器,使用 Oh My Zsh 管理 Zsh 配置和插件,最后用 Starship 接管命令行提示符。 目标 Ghostty:终端应用,启动快,默认配置已经足够可用。 Oh My Zsh:管理 Zsh 配置、插件和常用别名。 Oh My Zsh plugins:补全、建议、高亮、Git、sudo 等效率插件。 Starship:跨 shell 的命令行提示符,替代 Oh My Zsh 主题。 准备 确认当前 shell 是 Zsh: echo $SHELL zsh --version 如果当前不是 Zsh,可以切换为 macOS 自带的 Zsh: chsh -s /bin/zsh 安装 Homebrew 后,后续工具都可以统一用 brew 管理: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew update 安装 Ghostty Ghostty 的 macOS 版本可以直接下载安装,也可以通过 Homebrew Cask 安装: brew install --cask ghostty 启动 Ghostty: ...

May 9, 2026 · 3 min · 631 words · Jiang Jun Jie

Powerlevel10k

macOS 安装 Powerlevel10k Powerlevel10k 是一个 Zsh 主题,特点是速度快、可定制程度高,并且自带交互式配置向导。 准备 确认当前 shell 是 Zsh: echo $SHELL 如果输出不是 /bin/zsh,可以切换为 Zsh: chsh -s /bin/zsh 安装推荐字体 Powerlevel10k 推荐使用 MesloLGS NF 字体,否则图标可能显示为乱码或方块。 使用 Homebrew 安装: brew install --cask font-meslo-lg-nerd-font 安装完成后,在终端应用里把字体切换为 MesloLGS NF。 常见终端字体设置位置: Terminal.app:设置 -> 描述文件 -> 文本 -> 字体 iTerm2:Settings -> Profiles -> Text -> Font VS Code:设置 terminal.integrated.fontFamily 为 MesloLGS NF 方式一:使用 Homebrew 安装 brew install powerlevel10k 安装完成后,把主题加载语句写入 ~/.zshrc: echo 'source $(brew --prefix)/share/powerlevel10k/powerlevel10k.zsh-theme' >> ~/.zshrc 重新加载配置: ...

May 9, 2026 · 1 min · 206 words · Jiang Jun Jie

Logback Spring

logback-spring.xml <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <contextName>logback</contextName> <property name="LOG_HOME" value="log"/> <!-- 彩色日志依赖的渲染类 --> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> <!-- 彩色日志格式 --> <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }) [%t]{magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex"/> <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex"/> <!--输出到控制台--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> </appender> <!--输出到文件--> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/logback.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!--info 级别的日志--> <!-- 按照每天生成日志文件 --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!--WARN 级别的日志--> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/warn.%d{yyyy-MM-dd}.log</fileNamePattern> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <!--ERROR 级别的日志--> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <MaxHistory>30</MaxHistory> </rollingPolicy> </appender> <!-- 测试环境+开发环境. 多个使用逗号隔开. --> <springProfile name="dev,test"> <root level="info"> <appender-ref ref="console"/> <appender-ref ref="file"/> </root> <logger name="com.szht" level="debug"/> </springProfile> <!-- 生产环境. --> <springProfile name="prod"> <root level="info"> <appender-ref ref="INFO"/> <appender-ref ref="WARN"/> <appender-ref ref="ERROR"/> </root> </springProfile> </configuration>

June 15, 2021 · 1 min · 181 words · Jiang Jun Jie

Charles

Charles监听localhost请求 访问http://localhost.charlesproxy.com:port 浏览器代理,监听端口8888

April 2, 2021 · 1 min · 3 words · Jiang Jun Jie

Cas

install docker run --rm -p 8080:8080 apereo/cas-initializr:6.3.0 curl http://localhost:8080/starter.tgz -o cas.tgz tar -zxvf cas.tgz chmod +x docker-build.sh chmod +x docker-run.sh ./docker-build.sh

March 25, 2021 · 1 min · 21 words · Jiang Jun Jie

nodeJS

nvm setting macOS 使用 Homebrew 安装 nvm: brew install nvm 创建 nvm 工作目录: mkdir ~/.nvm 把下面配置加入 ~/.zshrc: export NVM_DIR="$HOME/.nvm" [ -s "$(brew --prefix nvm)/nvm.sh" ] && \. "$(brew --prefix nvm)/nvm.sh" [ -s "$(brew --prefix nvm)/etc/bash_completion.d/nvm" ] && \. "$(brew --prefix nvm)/etc/bash_completion.d/nvm" 重新加载 shell 配置: source ~/.zshrc 验证: nvm --version 安装 Node.js LTS: nvm install --lts nvm use --lts nvm alias default lts/* 查看版本: node -v npm -v Linux 官方安装脚本方式: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash 重新打开终端,或加载 shell 配置: source ~/.bashrc 如果使用 zsh: source ~/.zshrc 安装 Node.js LTS: ...

March 25, 2021 · 1 min · 120 words · Jiang Jun Jie

Git

cmd # 下载子模块代码 git submodule update --init --recursive error Git报错解决:OpenSSL SSL_read: Connection was reset, errno 10054 错误解决 git config --global http.sslVerify "false"

March 25, 2021 · 1 min · 22 words · Jiang Jun Jie

Conda

cmd conda info --envs conda info -e conda create -n env-name python=X.X activate env-name deactivate conda remove -n env-name --all

March 25, 2021 · 1 min · 20 words · Jiang Jun Jie