14 ms·
Oh My Zsh
- vorticalbox 3y agoI used ohmyzsh with powerlevel10k/powerlevel10k[0] for years though recently i've settled on fish [1] [0] https://github.com/romkatv/powerlevel10k https://github.com/romkatv/powerlevel10k [1] https://fishshell.com/ https://fishshell.com/
- cybrox 3y agoCan you summarize what made the switch worthwhile for you? I've been using zsh/omz with a customized powerlevel10k for years now and I see fish mentioned all the time but I didn't really find a compelling reason to try it out for myself.
- hiAndrewQuinn 3y agoMy niche use case is that since fish comes out of the box with a whole bunch of very nice features (syntax highlighting on the shell, really good autocompletion) it's easy for me to stick it into the set of shell scripts I use to turn a new Ubuntu VM into a dev productivity machine. [1] I could probably get Zsh to do all the same stuff I would want fish to do out of the box, but it would make reading through and reasoning about the shell scripts more difficult for third parties to audit, who may not be familiar with either tool before they try it. [1]: https://github.com/hiAndrewQuinn/shell-bling-ubuntu https://github.com/hiAndrewQuinn/shell-bling-ubuntu
- vorticalbox 3y agoonly a few things that are probally also possible in zsh fish functions are super easy to create on the fly from a command updating $path is fish_add_path {path here} setting global variable is easy set -Ux FOO bar adding -g makes it global most of these require me to update my .zshrc and source ~/.zshrc as far as i am aware
- TheRoque 3y agoYou just install it and it works. I change devices, or wipe out my devices often enough that just having a familiar shell installed in one line feels comfy. I usually don't customize things a lot, I pick something with good default and rarely change anything on it. I don't want to bother downloading plugins and addons, or fonts, or themes, just for a command interpreter.
- acdha 3y agoFor me it came down to speed and maintenance. Fish is incredibly fast and I spend almost no time configuring it, so it’s trivial to bring up on a new system and I don’t have to exercise self-control to avoid tweaking it (that’s a personal failing, not other shells).
- theshrike79 3y agoIt's easy to install. I used to have some fisher plugins, but gave up on those since none of them were really essential. When I set up a new computer I can just install fish and starship prompt and I'm mostly done. My fish configuration file is just aliasing and sourcing configs from other software, it's been a while since I had to touch it.
- evnix 3y agoI start using fish, really like its feature set, but then have to give up and switch back to zsh when I want to get anything done. Unlike zsh, Fish isn't compatible with bash syntax, so a lot of existing scripts and software just doesn't work right. Even today people write scripts as if bash already exists and they seem to always target it. I wish fish had some form of compatibility layer.
- osmsucks 3y agoI've been using it for years and most things I need nowadays just work (i.e. have Fish support out of the box). For all the rest, perhaps give https://github.com/edc/bass https://github.com/edc/bass a try.
- mulmen 3y agoCan you add a shebang and make the script executable or just run the script as an argument to the bash program?
- arbitrandomuser 3y agoThis . You just have to use fish for live interacting with the system aaand its great ,for everything else you can stick to bash. Don't even change your default shell with chsh ,rather just point your terminal emulator to launch fish
- jackhalford 3y agoAre sourcing bash scripts in a fish shell? If you can either run bash ./xyz or add the shebang #!/bin/bash to run scripts with the intended interpreter
- eviks 3y agofish has a compatibility layer, and existing scripts still can use bash
- markstos 3y agoFish runs bash scripts just fine, as it does any script with a shebang line. IT is increasingly compatible with random CLI commands copy and pasted from the internet. For those that don't work right away, just type `bash` to enter bash shell, run the command return back to Fish. If a significant part of your day is spent copying CLI command from the internet, then yes, perhaps Bash is a better choice for you.
- notso411 3y ago[dead]
- Keyframe 3y agozsh, oh-my-zsh, p10k, fzf, and as of recently zsh-autosuggestions plugin for oh-my-zsh is what I ride on. I keep hearing about fish, and I see what it's doing but I'm not sure what it would bring to the table compared to the setup?
- hibbelig 3y agoSo fish comes with nice defaults. It could happen that you have a complicated zsh setup, then migrate to fish and you find the defaults are fine. The fish scripting language is nicer (more logical) than the zsh one. That's because zsh needs to be Bourne-ish for historical reasons, and fish has decided to deviate from it. Existing sh, bash, zsh scripts will continue to work just fine. You can write new scripts in fish, or keep writing scripts in zsh or whatever.
- mplanchard 3y agoYeah I tried zsh a few times and never really thought it gave me that much relative to my existing bash config. Fish on the other hand has stuck, and I'm still discovering nifty new built in features, like the fact that if you type `kill`, you can tab-complete on process names, so like if I want to kill emacs, I can type `kill ema<tab>` and select from the following: > kill ema 3296 (.blueman-applet) 3595 (.blueman-tray-w) 9324 (emacsclient) 9327 (emacs) 9557 (emacsql-sqlite) If there's only one match it completes the PID for you, and of course if you start typing a PID and press tab it shows the process names along with the potential completions. I use starship for prompt customization, which is nice because my config transfers just fine from bash over to fish.
- wyclif 3y agoWhat I do is use zsh as my default shell and use oh-my-zsh, but keep a very simple config for my ~/.bashrc, something like: [ -f ~/.fzf.bash ] && source ~/.fzf.bash source /Users/wyclif/.config/broot/launcher/bash/br This gives me the best of both worlds.
- JNRowe 3y agoFWIW, that is also the default behaviour of zsh's standard completion subsystem for kill. You can try it yourself: "zsh -f" to get a shell without reading a fancy config, start compinit, "kill <Tab>". You can even disable verbose mode via zstyle, should you be the type of person that likes a simple pid list like bash's completion project provides. To me this level of customization is the main feature zsh provides, but not everyone incessantly turns every knob they see.
- mplanchard 3y agoNice! It's super useful in fish, good to know it's in zsh too
- cvdub 3y agofish has by far the best auto-completion out of the box. That’s what sold me. And the website is amazing. “Finally, a command line shell for the 90s”
- mrd3v0 3y agoTide is as close to powerlevel10k as one can get in Fish. https://github.com/IlanCosman/tide https://github.com/IlanCosman/tide
- msephton 3y agoPSA: simply installing this won't get you many benefits until you read about what it can do and then make an effort to use those things in your workflow.
- turblety 3y agoAny recommended reading? I found a cheatsheet [1] which seems useful, but there's not that much in there. 1. https://github.com/ohmyzsh/ohmyzsh/wiki/Cheatsheet https://github.com/ohmyzsh/ohmyzsh/wiki/Cheatsheet
- imdsm 3y agoBeen using it for years now, can't fault it, but I don't do too much with it
- yla92 3y agoRecently, I moved off from oh-my-zsh after many users, to vanilla zsh with https://starship.rs https://starship.rs, mainly due to the loading speed (used https://github.com/romkatv/zsh-bench https://github.com/romkatv/zsh-bench to measure the speed). Still wanting to try out fish and hopefully soon!
- _aaed 3y agoIf one of a product's main features is that it's written in Rust, it probably doesn't have anything unique compared to the competition
- rpigab 3y agoWhich is a major selling point. We do not want anything unique. Ripgrep accept most basic flags that grep uses and is way faster (when searching for code under VC), and that makes using it very convenient, even before considering the features on top. I would prefer that you also write your HN comments in Rust, if that's possible, for better performance and safety. In the future, there will only be Rust. You have to accept Rust into your life.
- markstos 3y agoFish has been great for years.The Rust rewrite will help the devs catch issues earlier in development. Hardly a main a feature. The awesome level tab-completion and auto-completion are the firs things to notice about Fish. Also, overall cleaner syntax and a several nice built-in commands that don't ship with Bash.
- bitwize 3y agoA memory-safe, fearlessly concurrent version of $thing is imho a huge win in and of itself. Soon a Rust userland will be table stakes.
- mplanchard 3y agoNot sure if you're talking about starship or fish, but starship is by far my favorite prompt customization tool, regardless of what language it's written in. It works across bash, zsh, fish, and others, so you can pretty easily get the same prompt in any shell on your system. It's easy to tweak as needed, but is pretty great out of the box.
- Charlie_32 3y agoI'm a developer of 10 years, and use the command line for Git, Brew and a few other things, though I'm normally an IDE developer. I believe the CL is as powerful as everyone says, but what are some useful things I can use it for? I use Zsh on a Mac some of the time.
- PrimeMcFly 3y ago> but what are some useful things I can use it for? I mean, surely you already know? Anything where feeding input between different tasks, or where you want to use regex, or similar things the cl will be superior.
- smcleod 3y ago10 years in tech and you haven’t optimised your shell?
- Brajeshwar 3y ago20+ years in tech and these days, the first thing that comes to my mind is usually, “Can I walk out of this?” :-) The idea is to be able to use any computer/system/devices easily instead of one perfectly.
- smcleod 3y agoGosh, I couldn’t think of anything worse than having to optimise myself for generalist systems
- kjellsbells 3y agoMight be a generational thing. Some folks grew up on systems that could fail at any time and leave them with nothing but the tools in /sbin to fix it with. No /usr, no bash/zsh, just sh and vi if you were lucky. You learn to love the cool new things, but you still have a mental bag packed with fsck and ed in case you need to bug out. It's silly, really because no systems are like that any more, but the things you learned at 2am when you were 22 tend to stick with you.
- Zizizizz 3y agoZsh autosuggestions Zsh syntax highlighting Fzf-tab Paired with zoxide and fzf for the zsh keyboard shortcuts are all I need to be very productive. Starship.rs is very useful as well as a theme but pure and pl10k are also great.
- notso411 3y ago[dead]
- radimm 3y agoAll good until your ZSH gets heavyweight and slow. Started using fish and never looked back
- kekebo 3y agoZSH + Zimfw + Powerlevel10k is probably the fastest "bling"-y shell I managed to put together. Would usually smoke Fish, but I haven't compared recently
- deleted 3y ago[deleted]
- FlyingSnake 3y agoCame here to say this. Fish shell is such a fresh beeeze compared to zsh. Now it’s even rewritten in Rust!
- csmattryder 3y agoYou've got to install Fisher, then get z, sponge and a few others from the awsm.fish list. Then you get trapped by the utility and struggle when you land on some remote server's bash shell. https://github.com/jorgebucaran/fisher https://github.com/jorgebucaran/fisher https://github.com/jorgebucaran/awsm.fish#readme https://github.com/jorgebucaran/awsm.fish#readme
- jeroenhd 3y agoOMZ is fast even on my phone. It turned slow for a whole after I installed anaconda. If you use conda and your shell is slow, try commenting out the code that loads conda, because it's probably that. nvm likes to slow things down too. Not as bad as conda, but I did add some code to delay load it. Do you know how fish would prevent getting slowed down by external scripts in its configuration file? Or does it just not support those scripts perhaps?
- mitemte 3y ago
- Jackevansevo 3y agoThe defaults it ships out of the box makes the shell actually usable. Unsure I could ever go back to a regular bash/zsh prompt. A lot of people will tell you this is slow and you've got to use X,Y,Z instead. If you're new, I'd strongly recommend just sticking with this, it's much easier to configure.
- peauc 3y agoI would actually recommend using fish with budspencer theme which is really great https://github.com/oh-my-fish/theme-budspencer https://github.com/oh-my-fish/theme-budspencer
- h4ch1 3y agozsh autosuggestions has been pretty slow for me compared to fish out of the box, switched a year or so back and have been pretty happy. maybe something has changed now :thinking-emoji: oh-my-fish is pretty much similar in capabilities and has a good assortment of themes. All I used that came with zsh were git shortcuts like gc -m "comment", gst for git status which i just recreated in my fish config.
- funkyreg1 3y ago[flagged]
- jackhalford 3y agoAre you ok man?
- wirrbel 3y agoGrml zsh is all I need https://grml.org/zsh/ https://grml.org/zsh/
- MissTake 3y agoI use omz primarily with the Kubernetes addons - which are now integral to my existence. Does fish support something similar? If so then I could be encouraged to give it a whirl.
- alxndr13 3y agofunny coincidence, just finished re-modding my zsh. Removing omz, adding antidote and starship. feels (and measureably is) faster and snappier.
- pprotas 3y agoDo yourself a favor and try to configure your shell without ohmyzsh first. You’d be surprised at how few plugins actually require it, and you save yourself from horrible performance.
- BytesAndGears 3y agoYeah I have a ton of customization including a really sweet looking prompt (that includes branch name & even git remote project name). Shortcut aliases and custom functions for everything that I use often. Atuin for Ctrl+R history searching. All without using any “plugins” or ohmyzsh. All just within my .zshrc, and a few extra files that get “sourced” depending which computer I’m on. Only occasional copy-pasting a few things I liked from StackOverflow. Basically instantaneous speed. Don’t even notice any performance penalties from all of the customization and styling. I did have a performance issue early on, but I profiled my zsh startup time and saw 97.5% of my shell startup was consumed by NVM (node version manager), and another 2.4% was RVM (ruby). Switched to FNM and Chruby instead, and it was zippy. And it’s all mine, so there are no “updates” to break anything. Throw it all in source control and you can keep improving it without risk of losing your previous working config.
- sshine 3y agoCustomizing my prompt was a reason to stick to zsh instead of oh-my-zsh. But lately I've become really happy with just installing spaceship. Sure, it doesn't look exactly like I want it to. But it shows git status. Various features just "pop up" if I install the right things on the system.
- tough 3y agostarship is the new spaceship, yo https://starship.rs/ https://starship.rs/
- nunez 3y ago100%. This is dotfiles on super easy mode. PS1 and PROMPT_COMMAND are your friends!
- ivanhoe 3y agoOMZ and zsh are great in many ways, but I still miss my CTRL + W from the bash, deleting the whole word regardless of the chars...
- vault 3y agoworks perfectly fine for me. maybe you have misconfigured your terminal application?
- JNRowe 3y agoLike practically everything zsh, it can be configured. The select-word-style zle widget¹ ships with zsh, and has a bash compatible setting(among others). The interface is super powerful, and given that you can change it in individual zle widgets you can make it context aware if you wish too. ¹ https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#Widgets https://zsh.sourceforge.io/Doc/Release/User-Contributions.ht...
- poochkoishi728 3y agoOne time, I was cowboy coding and ended up writing `grhh` (`git reset --hard`) and hit enter before I realized that it was a mistake.
- ivanjermakov 3y agoReflog to the rescue: https://git-scm.com/docs/git-reflog https://git-scm.com/docs/git-reflog
- enw 3y agoThe following goes a long way: setopt PROMPT_SUBST HISTFILE=~/.zsh_history HISTSIZE=100000 SAVEHIST=100000 PROMPT='%B%(?..%F{red}%?%f )%F{blue}%~ %F{green}%#%f%b ' RPROMPT='%B%F{red}$(git branch --show-current 2> /dev/null)%f%b' And if you want autosuggestions: brew install zsh-autosuggestions Then add the following to your ~/.zshrc: source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
- Brajeshwar 3y agoHey, I must have copied something similar from somewhere but yes my first base setup of my shell is PROMPT='%{%F{red}%}%~ %{%F{yellow}%}% › %{%F{reset_color}%}%' Anything after (besides the path and the GPG setup) that is an add-on that I can remove and still function well. I've learned to live without Git info. But this is very personal and I have not been into active development for quite a while.
- dsego 3y agoOne neat alternative is ohmyposh.dev
- dogmayor 3y agoohmyposh is a prompt theming engine, not a plugin manager. But it is a great way to find a good prompt or create your own.
- blentrop 3y agoOne option I really like liquid prompt[0]. Simple design which just shows the info I need without getting on my way [0] https://github.com/liquidprompt/liquidprompt https://github.com/liquidprompt/liquidprompt
- nunez 3y agoNote that most of ohmyzsh can be done in pure Bash
- flaxton 3y agoLoading time is not an issue for me. I run tmux so my sessions stay alive and performance is very quick. M2 MacBook Air with 16GB RAM, using Warp terminal. Using OMZ with Dracula Theme and mosh for remote servers.
- andirk 3y agoAm I the only one with almost nothing custom in my bash/zsh?
- al_borland 3y agoI add in a folder to my path where I keep scripts I wrote, that’s about it.
- encom 3y agoNo, I've used vanilla Bash for two decades now. The only thing I change is make autocomplete not case sensitive, and set up an ls alias alias ll='ls -lvX --almost-all --group-directories-first --human-readable' I can sit at any machine and feel right at home.
- rnd0 3y agoI don't either. -hell, since I found out that "set -o emacs" gives me history and autocompletion I go even further and usually only use /bin/sh on NetBSD. I'm not sure what the use case for zsh and fish are, but I'm guessing it's different than mine. (edit/update: apparently, judging by a quicky netbsd 10 vm install, you don't even need to explicitly "set -o emacs". /bin/sh does it by default)
- joejag 3y agoI followed this advice and my shell went from 1530ms to 35ms startup time. Main culprits were language switchers (nvm, jabba, pyenv). Which I moved to lazy loading. If I drop the ohmyzsh plugins startup time is 11ms. But, I want some quality of life. There's a nice benchmarking command in the article if you want to test yours: for i in $(seq 1 10); do /usr/bin/time $SHELL -i -c exit; done
- wrboyce 3y agoThat benchmark command isn’t great: https://github.com/romkatv/zsh-bench#how-not-to-benchmark https://github.com/romkatv/zsh-bench#how-not-to-benchmark
- eigenvalue 3y agoI use and like omyzsh, but find it super annoying how it deals with updating. It either nags you constantly to update, or if you set it to "auto," then it's constantly spamming you about how it's updating, and when you create a new shell session (say, in tmux), it causes significant lag before you can use the new shell and pollutes the console with tons of output. There has to be a better way, like some optional mode that just runs an update service in 3am silently using systemd.
- cbarrick 3y agoI never understood how omz was useful. Zsh already has a module system (autoload), a prompt framework (promptinit), and Git integration (vcs_info) builtin. I have a pretty extensive Zsh setup in vanilla Zsh: https://github.com/cbarrick/dotfiles https://github.com/cbarrick/dotfiles
- Ingaz 3y agoYou're correct: omz adds not a lot to vanilla zsh. It consists of: - collection of plugins/themes - auto update - way to customize them Everything could be done directly in .zshrc, it's just a bit more convinient
- sshine 3y agoI used zsh for a few years before oh-my-zsh became a thing. I have to admit that I don't find it more convenient. It takes an ecosystem where things have a way of working, and establishes new conventions on top of those using a new set of environment variables. So if you know zsh, you don't know oh-my-zsh. A vanilla zsh will feel very bare. A vanilla oh-my-zsh will feel very feature rich. If you end up configuring zsh anyways, I don't see the point at all.
- sshine 3y agoFor comparison, here is my Zsh configuration in NixOS: { programs.starship = { enable = true; }; programs.zsh = { enable = true; enableCompletion = true; enableBashCompletion = true; enableGlobalCompInit = true; syntaxHighlighting.enable = true; syntaxHighlighting.highlighters = [ "main" "brackets" ]; histSize = 100000; # See `man zshoptions` for more details. setOptions = [ # Remove duplicates continuously from command history (preserve newest entry). "HIST_IGNORE_DUPS" # Instantly share command history between all active shells. "SHARE_HISTORY" # Alternative to: "APPEND_HISTORY", "INC_APPEND_HISTORY", # Disable ^S and ^Z for less accidental freezing. "FLOW_CONTROL" # Save timestamp and duration of each command in command history. "EXTENDED_HISTORY" ]; shellAliases = { rm = "rm -iv"; ls = "ls -F --color=auto"; gs = "git status"; gd = "git diff"; gdc = "git diff --cached"; gap = "git add -p"; gl = "git log"; gpr = "git pull --rebase"; }; interactiveShellInit = '' bindkey '^[[7~' beginning-of-line bindkey '^[[8~' end-of-line bindkey '^R' history-incremental-search-backward eval "$(starship init zsh)" ''; }; } My .zshrc used to be bigger, but I've slimmed it down to see what I actually use from it.
- mbrumlow 3y agoJust use fish.
- dogmayor 3y agoI prefer sheldon[1] for the few plugins I use [1] https://github.com/rossmacarthur/sheldon https://github.com/rossmacarthur/sheldon
- KolenCh 3y agoZprezto is a good alternative which is also faster. I eventually migrated to zim because of its minimalist approach. I think starting from Oh My Zsh or zprezto can be a good choice. Once you get a feel of what zsh can accomplish, eventually probably you’ll one day find it too slow and/or too complicated and then would switch to something like zim to only load the things you know is useful from then.
- firexcy 3y agoThese days I stick to a minimal profile for the default shell (zsh on macOS and bash on Linux), adding no further than some aliases. When I need more “friendly” interactive features I launch fish which is… friendly and interactive, and exit when I’m done. Thus I get the best of both worlds.
- highmastdon 3y agoDo yourself a favour and install fish-shell with starship.rs and call it a day. Make sure to put everything prompt related in a `if status --is-interactive` block. Blazing fast versatile fancy prompt and interactive human friendly shell. What does a man need more?