r/zsh Jan 23 '25

Fixed Join the Zsh Discord!

Thumbnail discord.gg
1 Upvotes

r/zsh Nov 20 '24

Join the Discord server!

Thumbnail discord.gg
2 Upvotes

r/zsh 9h ago

Live Git updates in a Zsh prompt

Enable HLS to view with audio, or disable this notification

37 Upvotes

I’ve been experimenting with live Git updates in the shell prompt.

The idea is simple: if an IDE, coding agent, or another shell changes the repository, every open shell session updates its Git state automatically — even while the prompt is idle.

This is especially useful when several tools are working with the same repository at the same time.

I implemented it in Cobalt Spark, my compact Zsh theme. The new release is mostly focused on Git improvements: Live Git updates, richer status, prefetch indication, and smart branch shortening. It also adds official support for popular Zsh plugin managers.

More details are in the README.


r/zsh 2d ago

Novo plugin para atalhos e automatizações do git flow.

0 Upvotes

Fala pessoal, beleza?

Subi hoje um plugin Zsh que automatiza boa parte das tarefas repetitivas do Git Flow: zsh-git-flow-shortcuts.

Ele agiliza coisas como criar branches de release com bump de tag SemVer automático e fazer stash/pop transparente ao alternar contextos. Além disso, deixei na pasta bonus uma skill para o Claude Code operar essas rotinas direto pelo agente.

Se puderem testar e mandar feedbacks sobre usabilidade ou melhorias, agradeço! 🚀


r/zsh 4d ago

Announcement ze.sh: frecency-based file tracking alongside directory jumping

7 Upvotes

ze.sh is a frecency-based directory jumper (rupa/z-style, implemented as portable ksh/bash/zsh — no compiled binary), using an event-clock + continuous exponential decay scoring model (weight decays smoothly per recorded event, no fixed-size step/threshold aging pass). This release adds an independent frecency database for files, using that same scoring, alongside the existing one for directories.

Some context on prior art: z, autojump, and zoxide are directories-only. fasd did do frecency-based file tracking years ago, but clvv/fasd has been archived/unmaintained since 2022, and its community forks aren't widely adopted. So this isn't a first, but it's not something the actively maintained tools in this space currently do. Separately, elseawhy/lazy — a small, low-visibility z-fork — adopted ze's event-clock/exponential-decay scoring before ze.sh itself had file tracking, and uses a two-database (separate dirs/files) design on top of it. I came across that split there and drew on it when adding file tracking to ze.sh in turn.

What's new, specifically:

The -o option switches ze into file tracking/opening mode:

  • ze -o foo looks up previously opened text files by pattern, opens the best match in $VISUAL/$EDITOR.

  • ze -of foo does the same via an interactive fzf picker listing the score-sorted db content.

  • ze -od ... discovers files not yet in the db via fd-based file system scan, adds your fzf selection to db, and opens the file.

  • Directory and file histories are separate databases, scored independently.

  • Opt-in and explicit: plain $EDITOR/$VISUAL invocations aren't touched or intercepted.

Repo: https://github.com/jghub/ze

Anyone here using frecency for files rather than just dirs — and if so, what's your current setup?


r/zsh 7d ago

Announcement Deja v0.4.1 - smarter zsh autosuggestion (now a lot lighter)

138 Upvotes

Hi everyone, back with a new version of deja.

Quick recap: 

Deja is an open-source zsh autosuggestion tool. Instead of only surfacing

commands that start with what you've typed, it predicts what you actually want to run using fuzzy matching, which directory you're in, and which command usually follows the one you just ran.

No account. No sync server. No TUI.

https://github.com/Giammarco-Ferranti/deja 

Any star would be amazing ❤️

Almost all of the new release came from https://github.com/Serubin. Huge thank you ❤️

The binary is 34% smaller. 7.1 MB → 4.7 MB. Deja was pulling in a full ORM to run six queries against three tables. That's now sqlc, which keeps type safety but reduces the weight. 

Every keystroke went from ~30 ms to ~3 ms. zsh used to fork a deja query process on every single character you typed. It now talks to the daemon directly over zsh's built-in socket module.

Your shell opens faster. Deja no longer blocks startup on a daemon liveness ping, no longer regenerates its init script on every shell.

And then more stuff, if you want to check here’s the PR: https://github.com/Giammarco-Ferranti/deja/pull/91 

One favour to ask. If you've been running Deja for a while, I'd love to hear how it's going what's annoying, what you turned off, where the suggestions are just dumb. The HIST_IGNORE_SPACE fix in 0.4.0 only exists because someone told me. Reply here or open an issue.

Thank you for all the support ❤️


r/zsh 6d ago

Made a launcher for the Homebrew tools I forgot I had — built it with Claude Code as an experiment

Thumbnail
0 Upvotes

r/zsh 9d ago

I built a zsh completion that learns your habits instead of shipping 50k-line completion scripts

10 Upvotes

Adaptive watches how you actually use your shell and predicts the next token — no per-tool completion scripts to install or maintain.

- Inline ghost text: git checkout fea → feature/completion-engine, claude --dang → --dangerously-skip-permissions, even an empty prompt ghosts what you usually run next in that directory

- Tab/Shift-TAB lists everything valid at the position: subcommands, flags, enum values — discovered on the fly from each tool's own --help (handles cobra tables, kubectl's grouped sections, even Symfony's weird hidden-list help), then cached against the binary fingerprint

- Context-aware values: your GitHub/GitLab/Codeberg repos after git clone https://github.com/you/, npm scripts from package.json, docker containers, ssh hosts

- It learns: frequency + recency (21-day half-life), per-directory habits, accept/reject feedback. Global priors get you good suggestions on day one; your habits outrank them immediately

- Privacy: everything local, no telemetry, history sanitized (token-shaped strings/credentials rejected before disk)

- New in v0.3.0: a Bash frontend over the same protocol (eval "$(adaptive init bash)")

Rust binary, MIT, one-line install.

Check it out, leave a star!

GitHub: https://github.com/jacobpowaza/adaptive-zsh-completions


r/zsh 11d ago

Discussion Long time Fish user thinking about Zsh

34 Upvotes

I used to use Zsh when I was new to command line and Mac switched to Zsh, at the time I only did the basics such as searching for files, modifing files in Nano, create directories etc. No scripting yet.

Around 2018, I was impressed with co-worker using the terminal and he showed me some tips and tricks and he was using Fish shell so I switched over to it . Have been pretty happy with it with the auto suggestions, history look up etc, and ghost text, the only plugins I installed for Fish was:

  • Z directory
  • FZF
  • Done - notification when a task is finished.

I have been curious about Zsh as I see it's much bigger community, so I am creating my own zsh config, but "oh my zsh" seems bit overwhelming. I am using zinit for the plugin manager and these are the plugins I have:

  • zsh-autosuggestions
  • zsh-syntax-highlighting
  • zsh-completions
  • zsh-autosuggestions
  • fzf-tab

I am still not sure about fzf-tab yet, still trying it out. My question is, what other plugins that help you and you find extremely useful?

Also are you running bash scripts in the command line? I keep hearing reasons to stay on the zsh is POSIX while Fish isn't. I just run the scripts from bash and seems to work fine for me.

What things do you find better than Fish?


r/zsh 11d ago

Showcase a little framework to organize zsh aliases, functions and scripts

Thumbnail
github.com
23 Upvotes

hi!

i want to share shellbox, a little framework i made to organize my zsh aliases, functions and scripts

i used oh my zsh for years and i was happy with it, but i stopped using it and created this because at some point i wanted to understand more deeply how shells like bash and zsh work, and what things like aliases, functions and scripts actually are (and the best way to understand is by doing ahaha)

the idea is just to group helpers into domains and load everything from one line in .zshrc. everything is normal shell files and easy to inspect

in my opinion, the project is very simple and transparent. it isn't trying to replace oh my zsh or create another big plugin manager. this is just a small/toy project that works well for my setup and helps me organize my custom scripts, functions and aliases; so maybe is useful for someone o:

any feedback is welcome!


r/zsh 12d ago

Discussion PSA: don‘t name a loop variable `path` in zsh

7 Upvotes

lost half an hour to this yesterday, so.

i had a cleanup script doing roughly:

git worktree list --porcelain | while read -r path rest; do
...
git worktree remove "$path"
done

first iteration ran fine. every command after that died with

(eval):3: command not found: git

git. the binary i had successfully called one line earlier. i went looking at whether something had clobbered my shell init, then at whether the heredoc was eating things.

zsh ties the lowercase array `path` to the scalar `$PATH`. assign to it and you've replaced your PATH with whatever you just read, which in my case was a worktree directory. same for `cdpath`, `fpath`, `manpath`.

bash doesn't do this, which is probably why it never occurred to me.

the tell in hindsight: it wasn't one command failing, it was every command failing after a specific point. one missing binary is an install problem. all of them at once is PATH.

`dir` or `wt` or literally anything else. `status` will bite you in a different way.


r/zsh 14d ago

zsh-autosuggestions remove ghost text after ignoring it

4 Upvotes

here is an example where I did not use a suggestion, I just hit return after typing `do`. Is there a setting to make the `cker` suggestion go away after not accepting it?


r/zsh 17d ago

Announcement my best zsh config soo far!

75 Upvotes

After spending a long time tweaking my zsh config, I ended up with no plugin manager and no custom prompt!

Everything is native, lazy-loaded, and deferred.

Minimal native prompt, fast startup, and modular config.

btw, I'm loading 9 plugins and multiple config files for fzf, function, etc..

Only 11 lines in .zshrc

Here are my zsh-bench measurements on login:

first_prompt_lag_ms=16.963
first_command_lag_ms=17.380
command_lag_ms=13.187
input_lag_ms=3.318
exit_time_ms=15.100

feel free to check the repo:
https://github.com/houssamouhra/zsh-config


r/zsh 17d ago

Writing history out before starting (some specific) sub-shell command

3 Upvotes

Kubie and several other commands I use sometimes create a sub-shell when they're executed. I'd like to wrap such commands in an alias such that history gets flushed before they run, so that history is maintained. I'd also like the `kubie` command to appear int he history, so from my sub-shell history PoV it's like I'm still in the parent shell.

Ideally I'd like to write the child shell history on exit and read it back in the parent shell too, though that's a lower priority.

Can anybody give me any guidence / pointers please?

Much appreciated


r/zsh 19d ago

Showcase Update on EasyAlias – alias import, suggestions, Homebrew and now the Mac App Store

Thumbnail
gallery
4 Upvotes

About a month ago I shared EasyAlias here and got some useful feedback, so I wanted to post a small update on what has changed since then.

EasyAlias is an open-source GUI for creating and managing terminal aliases. On macOS it integrates with zsh, so you can manage your aliases without manually editing .zshrc.

Since my last post I’ve added:

  • Import of existing aliases
  • Built-in alias suggestions for Git, Docker, Maven, Gradle and common shell commands
  • Native file and folder pickers
  • Linux support
  • Homebrew installation
  • Several smaller UI and usability improvements

And as of recently, EasyAlias is also available on the Mac App Store 🎉

You can still install it with Homebrew:

brew tap hannesgnann-hub/tap
brew trust hannesgnann-hub/tap
brew install --cask easyalias

Website:
https://easyalias.org

GitHub:
https://github.com/hannesgnann-hub/easyalias

Mac App Store:
https://apps.apple.com/de/app/easyalias/id6794944241?mt=12

A lot of the changes so far came from feedback, so if you’re a zsh user and see something that could be improved, I’d be interested to hear it.


r/zsh 20d ago

Showcase zhist: Smarter shell history for zsh

Thumbnail
github.com
29 Upvotes

r/zsh 21d ago

Zsh plugins

7 Upvotes

Hola!! Me podrían comentar los mejores plugins para zsh??


r/zsh 22d ago

[beginner tips] Demystifying interactive comments in scripts & command line

1 Upvotes

A addendum for readers who are learning zsh anew, or brushing up on it:

I never used "interactive" comments before but ran into it when working with a function call where I wanted a unquoted # as a parameter. I wanted to fully flesh out what was going on, as it has been on my zsh learning bucket list for a while, just never got around to it. I found out pretty quick that they are treated differently depending on whether the shell is in interactive mode or not, and some things were not quite what I expected:

This is probably beginner level material, so If you are versed in scripting under zsh, you probably already know this stuff. Personally I am not all that intelligent compared to others, but if you are like me, some explanation on what would probably had been super easy for me 10 years ago, now explained. Things like this remind me that maybe I shouldn't have tried to learn EVERY language 😹

#!/bin/zsh
# 

if [[ ...something ]]]; then  
   function_name some paramaters # this is an interactive comment, or is it?
fi

Actually, that is not an interactive comment. 😦

But this might be....

that1user@why.net:~# some_program some_args # THIS is an interactive comment!!

but only after you do this...

that1user@why.net:~# setopt in_tera_c__tiveCOMmentS

and just for fun, a bit of double negativity...

that1user@why.net:~# unsetopt no___in_tera_c__tiveCOMmentS

(note: zsh does not care about case nor the existence of underscores and reverses the meaning when "no" comes first) :3

Use comments on the command line, in scripts, and use of setopt interactivecomments can be somewhat misleading. For one, it has NO EFFECT in executed file scripts.

When I talk about "executed scripts" some examples are:

  • /bin/zsh /path/to/scriptname- script executed directly with zsh
  • ./scriptname - script executed from same directory with +x permissions
  • scriptname ("scriptname" is in your PATH and marked executable).

Not to be confused with "sourcing", some examples which are:

  • source scriptname - using the 'source' built-in keyword
  • . scriptname - using the '.' builtin syntax (space required after, must be first)

The interactivecomments option is only for interactive mode. Comments within scripts will not ignore comments on the same line because executed scripts are ALWAYS running with the interactive option turned off (and it cannot be turned on by force).

This is misleading for two reasons:

Firstly, because interactivecomments can be turned on and off even within scripts where interactive cannot be turned on!! The word 'interactive' is easily misunderstood here to mean the fact that the comments are interacting with the command on the same line. Instead, it is referring to the state of the interactive flag which is always ON when sourcing or in the prompt, and always OFF when running scripts.

Secondly, and this is the crux, it is misleading because what is actually happening is that any characters following the $HISTCHARS[3] single-character are treated as comments. It doesn't care if it is a hash (#) or not, the hashtag just happens to be the default value for $HISTCHARS[3] This means to REALLY disable it, you have to set that to something you won't be using (like a null, $'\0' for example).

A quick warning about the side effects of using HISTCHARS

Though it may be obvious, some might not realize what disabling a comment character is going to do, should you have already, actual comments in the script (chances are, you do). So I decided to write this extra bit to ensure everyone knows of one of the biggest caveats to using the HISTCHARS method.

Changing HISTCHARS[3] in scripts means that any comments outside the shebang --a line which is discarded before actual script interpretation-- are going to treated as REGULAR commands, not comments! I want to stress that this is probably not the best idea unless you just don't use comments. That said, the next person managing your script might. You have the following options available to you:

  1. Don't change HISTCHARS[3] (safest route) however inline comments will still be read in scripts
  2. Use another comment character, which you'll want to be 8-bit to keep compatibility with other character sets. UTF-8 is a multi-byte encoded set (meaning usually they are 8-bit, but when higher codes are needed, they can span as far as 6 bytes in width or more). Probably not very portable, especially on legacy machines.
  3. Do it anyway and leave a comment about what you did... (can you see the problem with this choice?)

On the other hand, if you are a disgruntled employee, maybe this is for you :3 After all, that new guy might not make the connection that HISTCHARS has anything to do with comments. You can sit at home each night toasting champagne as you evilly laugh and wait for your ex-boss to leave a voicemail pleading for you to take your job back and fix the issues. Don't hold your breath though :3

The rest of the documentation will assume you actually read the above warning....

More on INTERACTIVE_COMMENTS and $HISTCHARS[3] (or $histchars[3])

Again, the interactivecomments could be written INTERACTIVE_COMMENTS, or interACTIVEcOMEnTs, zsh doesnt care about _ or case in options and negates the option if any form of 'no' preceeds it.

It enables/disables evaluation of $HISTCHARS[3] ONLY when said shell also has the interactive shell option set. Obviously, you can't set that option in an executing script, which is why it ignores you when you set it there:

#!/bin/zsh
someprogram arg # these would  be ignored

would launch "someprogram arg"

Versus:

#!/bin/zsh
histchars[3]=$'\0'
# yikes, this gets executed, too!
someprogram arg # these are not ignored

would launch "someprogram arg # these are not ignored"

You will want to be sure to slap in a 'noglob' if you have glob characters in there.

#!/bin/zsh
histchars[3]=$'\0'
# yikes this line is executed!
<NUL> this would be a real comment at this point
noglob someprogram arg # these are not ignored???<- because we dont want globbing here

This way you don't cause a no glob match error should you use special glob characters like the question mark, etc. Be sure to note that ALL #comments above become invalid once you modify histchars (or HISTCHARS).

ZSH does not straightforwardly address this. Rather they kinda beat around the bush, eventually addressing stuff but only if you look each thing up in turn, and piece it together like you are diagnosing an A/C unit.

In closing, another equally frustrating we will cover at some point that is much like HISTCHARS, is IFS (stands for Input Field Separators) which is used to control (final) word splitting on the command line, in arrays, and a bunch of other places. Like HISTCHARS, it can be a power but also a disaster-causing variable if misused.

"this thing reads like stereo instructions" is so true when it comes to the zsh documentation.

This is an AI-free post. No AI was used to make it or research it. I value human created content even if it is considered silly by many to do so. We live our lives the way that makes us happy, nothing wrong with that. Hope this was somehow useful for you. No responses are expected or required, I am happy to just make this info available. Have a nice day!


r/zsh 22d ago

Showcase Another Bash Prompt Generator...but better!

Thumbnail
promptr.sh
0 Upvotes

r/zsh 23d ago

Tracking down a Zsh history data loss bug 🐞

Thumbnail michael.stapelberg.ch
14 Upvotes

r/zsh 23d ago

[Narzędzie] Zbudowałem plugin Oh My Zsh do zarządzania wieloma chmurami OpenStack, automatycznego venv i fuzzy-find SSH / VNC console

0 Upvotes

r/zsh 29d ago

Help Backgrounding macOS /usr/bin/script from zsh breaks input for interactive terminal apps

Post image
2 Upvotes

I am working on a zsh launcher that runs interactive terminal applications through the macOS version of /usr/bin/script, so the full session can be recorded.

My setup is: - MacBook Air: M3, 2024 - Chip: Apple M3 - Architecture: arm64 - macOS: 26.5.2 (25F84) - Terminal: iTerm2 3.6.11 - Shell: zsh - Applications tested: Claude Code 2.1.220 and OpenAI Codex CLI

The part I think is causing the problem looks like this: ``` set +e /usr/bin/script -q "$log_path" "$command" "${args[@]}" & script_pid="$!"

wait "$script_pid"
status="$?"
set -e

```

Both programs start, and they can draw part or all of their terminal interface, but input becomes corrupted after that.

I see terminal control sequences such as [[ printed as normal text, keyboard input is ignored or misread, and the application does not stay properly interactive. Claude Code does this on both its workspace safety page and its normal already trusted project page. Codex also prints raw terminal sequences when started through the same launcher.

Running either application directly from iTerm2 works normally.

I backgrounded /usr/bin/script because the launcher needs to inspect the process tree and save both the script PID and the PID of the interactive child while it is still running.

I think the background process may no longer have the right access to the controlling terminal, or it may no longer be part of the foreground process group. However, I am not sure how zsh handles this exact case when the command is started from a non-interactive script.

I am trying to understand a few things. 1. What happens to stdin and the controlling terminal when /usr/bin/script is placed in the background from a zsh script? 2. Could SIGTTIN or foreground process group handling explain why the output still appears, but the input stops working correctly? 3. Why would responses to terminal queries appear as literal text inside the application? 4. Should /usr/bin/script stay in the foreground while a different background process watches the process tree and saves the child PID? 5. What is the safest way to keep the real exit status from the interactive child?

Any ideas?


r/zsh Aug 01 '26

Announcement Deja v0.4.0 - smarter zsh autosuggestion (now knows when to shut up)

57 Upvotes

Hi everyone, I’m very excited to launch the new version of deja.

Quick recap: Deja is an open-source zsh autosuggestion tool. Instead of only surfacing

commands that start with what you've typed, it predicts what you actually want to run using fuzzy matching, which directory you're in, and which command usually follows the one you just ran.

No account. No sync server. No TUI.

https://github.com/Giammarco-Ferranti/deja 

Any star would be amazing ❤️

One big feedback I got on previous posts was that deja was not respecting the HIST_IGNORE_SPACE and this led to a security issue.

First of all thank you to https://www.reddit.com/user/polaroid_kidd for reporting this. ❤️

Deja now works correctly and respects HIST_IGNORE_SPACE and HISTORY_IGNORE.

If you've been running Deja for a while, the old entries are still in your database:

rm ~/.local/share/deja/deja.db && deja import

The command above will clean it up.

Another big change is that now we have a new ‘deja empty’ command, which lets you choose whether Deja shows the ghost suggestion on empty prompts. It came out of this thread: https://github.com/Giammarco-Ferranti/deja/pull/69

Few other smaller things has been fixed, if anyone interested you can review it here: https://github.com/Giammarco-Ferranti/deja/pull/73 

Thank you all for the support and looking forward to make this the smartest zsh autosuggestion tool.


r/zsh Jul 30 '26

starship-ftl: A "faster-than-light" instant prompt knock off for starship prompts

27 Upvotes

I'm a satisfied user of the starship prompt when I'm in bash or fish, but powerlevel10k (and in particular its instant prompt feature) has kept me tied to it in Zsh. Had a little free time the past couple evenings and figured I'd give implementing an instant prompt for starship a whirl: https://github.com/mattmc3/starship-ftl

This is super experimental, but if there's anyone in the community that's interested in giving it a try and submitting any bugs, we can see if this has legs. If nothing else, my own personal ZDOTDIR benefitted:

~ ❯❯ zsh-bench
==> benchmarking login shell of user matt ...
creates_tty=0
has_compsys=1
has_syntax_highlighting=1
has_autosuggestions=1
has_git_prompt=1
first_prompt_lag_ms=41.171
first_command_lag_ms=320.101
command_lag_ms=307.880
input_lag_ms=2.773
exit_time_ms=211.784

Credit to u/romkatv who basically handed us a proof of concept years ago and no one ever made a go of it: https://gist.github.com/romkatv/8b318a610dc302bdbe1487bb1847ad99


r/zsh Jul 30 '26

Help zsh stucking for a while

0 Upvotes

when i open my terminal for couple of seconds my prompt bar didnt shows and after wards it does show this also happens after i execute something the next prompt bar gets stuck for sometime and then it shows whats the issue here and also when i clear screen 2 prompt bar
first one without the github branch and next one with i think the problem is of the branch fetching if anybody knows whats the issue plz help below is my .zshrc

# If you come from bash you might have to change your $PATH.

# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH

# Path to your Oh My Zsh installation.

export ZSH="$HOME/.oh-my-zsh"

# Set name of the theme to load --- if set to "random", it will

# load a random theme each time Oh My Zsh is loaded, in which case,

# to know which specific one was loaded, run: echo $RANDOM_THEME

# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

ZSH_THEME="spaceship"

# Spaceship settings

SPACESHIP_PROMPT_ASYNC=true

SPACESHIP_PROMPT_ADD_NEWLINE=false

SPACESHIP_PROMPT_SEPARATE_LINE=false

SPACESHIP_CHAR_SYMBOL="⇸"

# Minimal spaceship sections for performance

SPACESHIP_PROMPT_ORDER=(

time

user

dir

git

#line_sep

char

)

# Set list of themes to pick from when loading at random

# Setting this variable when ZSH_THEME=random will cause zsh to load

# a theme from this variable instead of looking in $ZSH/themes/

# If set to an empty array, this variable will have no effect.

# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )

# Uncomment the following line to use case-sensitive completion.

# CASE_SENSITIVE="true"

# Uncomment the following line to use hyphen-insensitive completion.

# Case-sensitive completion must be off. _ and - will be interchangeable.

# HYPHEN_INSENSITIVE="true"

# Uncomment one of the following lines to change the auto-update behavior

# zstyle ':omz:update' mode disabled # disable automatic updates

# zstyle ':omz:update' mode auto # update automatically without asking

# zstyle ':omz:update' mode reminder # just remind me to update when it's time

# Uncomment the following line to change how often to auto-update (in days).

# zstyle ':omz:update' frequency 13

# Uncomment the following line if pasting URLs and other text is messed up.

# DISABLE_MAGIC_FUNCTIONS="true"

# Uncomment the following line to disable colors in ls.

# DISABLE_LS_COLORS="true"

# Uncomment the following line to disable auto-setting terminal title.

# DISABLE_AUTO_TITLE="true"

# Uncomment the following line to enable command auto-correction.

# ENABLE_CORRECTION="true"

# Uncomment the following line to display red dots whilst waiting for completion.

# You can also set it to another string to have that shown instead of the default red dots.

# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"

# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)

# COMPLETION_WAITING_DOTS="true"

# Uncomment the following line if you want to disable marking untracked files

# under VCS as dirty. This makes repository status check for large repositories

# much, much faster.

# DISABLE_UNTRACKED_FILES_DIRTY="true"

# Uncomment the following line if you want to change the command execution time

# stamp shown in the history command output.

# You can set one of the optional three formats:

# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"

# or set a custom format using the strftime function format specifications,

# see 'man strftime' for details.

# HIST_STAMPS="mm/dd/yyyy"

# Would you like to use another custom folder than $ZSH/custom?

# ZSH_CUSTOM=/path/to/new-custom-folder

# Which plugins would you like to load?

# Standard plugins can be found in $ZSH/plugins/

# Custom plugins may be added to $ZSH_CUSTOM/plugins/

# Example format: plugins=(rails git textmate ruby lighthouse)

# Add wisely, as too many plugins slow down shell startup.

plugins=(git

zsh-autosuggestions

zsh-syntax-highlighting

)

source $ZSH/oh-my-zsh.sh

# User configuration

# export MANPATH="/usr/local/man:$MANPATH"

# You may need to manually set your language environment

# export LANG=en_US.UTF-8

# Preferred editor for local and remote sessions

# if [[ -n $SSH_CONNECTION ]]; then

# export EDITOR='vim'

# else

# export EDITOR='nvim'

# fi

# Compilation flags

# export ARCHFLAGS="-arch $(uname -m)"

# Set personal aliases, overriding those provided by Oh My Zsh libs,

# plugins, and themes. Aliases can be placed here, though Oh My Zsh

# users are encouraged to define aliases within a top-level file in

# the $ZSH_CUSTOM folder, with .zsh extension. Examples:

# - $ZSH_CUSTOM/aliases.zsh

# - $ZSH_CUSTOM/macos.zsh

# For a full list of active aliases, run `alias`.

#

# Example aliases

# alias zshconfig="mate ~/.zshrc"

# alias ohmyzsh="mate ~/.oh-my-zsh"

ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#663399"

ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE="20"

ZSH_AUTOSUGGEST_USE_ASYNC=1

install(){

sudo dnf install $@

}

remove(){

sudo dnf remove $@

}

pip12(){

python3.12 -m pip install $@

}

alias upall="sudo dnf update"

alias cl="clear"

alias ippi="sudo arp-scan --localnet"

export PATH="$HOME/.local/bin:$PATH"

#export NVM_DIR="$HOME/.nvm"

#[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

#[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

export PATH="$HOME/.cargo/bin:$PATH"

#pokemon-colorscripts --no-title -s -r

alias ff="pokemon-colorscripts --no-title -s -r | fastfetch -c $HOME/.config/fastfetch/config.jsonc --logo-type file-raw --logo-height 10 --logo-width 5 --logo -"

# 1. Lock standard backspace behavior so it never deletes full words

bindkey '^?' backward-delete-char

# 2. Map Ctrl + Backspace to delete a full word

bindkey '^H' backward-kill-word

# 3. Map Ctrl + A followed by Ctrl + Backspace to clear the entire line

#bindkey '^A^H' backward-kill-line

compdef _files java