Deduplicating zsh Command History Automatically Once a Day

Automatically Deduplicating zsh Command History in zshrc

With daily terminal work, the same commands pile up in ~/.zsh_history over and over. History searches with peco / Ctrl-R end up full of noise, and the file tends to grow. The zshrc I use every day is part of a dotfiles repository where I keep all my dot files together under Git. This time I decided to touch that zshrc and add settings that cut down the duplicates. Deciding the requirements first Before doing any work, I settled on the following specification. [Read More]

How to Deal with Homebrew 6.0 Asking y/N on Upgrade

How to handle Homebrew 6.0's new interactive upgrade confirmation prompts

From Homebrew 6.0 onwards, running brew upgrade or brew install asks you to confirm whether to continue. Copy ==> This action will upgrade X formulae. Proceed? [y/N] Until now it went ahead automatically, so I imagine many people were caught off guard. In this article I summarize the ways to deal with it depending on the situation. Dealing with it on the spot If you do not need to change any settings in particular, all you do is type y and press Enter when the prompt appears. [Read More]

Powerlevel10k to Starship: Migration Steps and Customization

How to Migrate from Powerlevel10k to Starship Prompt

A Migration Guide from Powerlevel10k to Starship (2025 Edition) Introduction I migrated from Powerlevel10k, which I had used for years, to Starship. In this article I summarize the differences between the two, recent developments, the migration procedure, and how to customize it. Powerlevel10k vs Starship Powerlevel10k Features: A prompt theme for Zsh only Extremely fast startup time (under 10ms) Beginner-friendly setup through a configuration wizard (p10k configure) More than 10 built-in themes Advanced customization is possible Drawbacks: [Read More]

Four .zshrc Mistakes That Quietly Break Zsh, and How to Fix Them

What came out of reviewing my .zshrc: return $(...), LC_ALL, compinit order and heavy ls aliases

I had been happily using the zshrc I set up in Reviewing my Zsh and NeoVim configuration as a base, but I went over the configuration again with the help of generative AI (ChatGPT-5.2). What I improved Made the broken predicate functions correct (stopped using return $(…)) Left the locale alone (LC_ALL in particular is easy to get wrong) Made completion work from the very first shell (avoided the landmine of zinit lazy loading combined with the compinit order) Isolated the heavy listings into ll/la so that everyday ls does not get slow Background: with .zshrc, convenience and destruction are a hair apart When it comes to improving a zshrc, there are more landmines of the “writing it the wrong way quietly breaks things” kind than there is work on appearance or adding aliases. These were the four places I got stuck this time: [Read More]

Rebuilding My Zsh and Neovim Setup from Scratch in 2022

Zsh+zinit and NeoVim+vim-plug

I have been a fan of the Zsh shell on Linux and elsewhere for a long time, and lately I have even flirted with fish, but I took another look at my configuration files for the first time in ages. I had been managing my shared configuration files (dotfiles) on GitHub, and to my surprise the last update turned out to be about 10 years ago. (@_@) The configuration files were quite old too, and various helper tools and plugins have changed, so I reviewed everything from scratch. [Read More]

Installing Zsh 5.9 from Source on CentOS 7 and 8

zsh 5.9 manual install on CentOS

zsh5.9 is the latest right now, so I have updated this article The zsh on CentOS7/8 is old, so I installed the latest version at this point, 5.9, by hand Preparation Since we use commands such as wget and make, install the developer tools first Copy $ export LANG=C $ sudo yum groupinstall "Development Tools" $ sudo yum install ncurses-devel Downloading and installing /usr/bin/zsh and /bin/zsh already exist, so install into /usr/local [Read More]