Add post 'Why I dropped fish in favour of Zsh'

This commit is contained in:
Ariejan de Vroom 2014-11-20 13:29:54 +01:00
parent 4593bf83f9
commit a40828f20d
2 changed files with 124 additions and 42 deletions

View File

@ -4,29 +4,33 @@ GEM
adsf (1.2.0) adsf (1.2.0)
rack (>= 1.0.0) rack (>= 1.0.0)
builder (3.2.2) builder (3.2.2)
celluloid (0.15.2) celluloid (0.16.0)
timers (~> 1.1.0) timers (~> 4.0.0)
celluloid-io (0.15.0) chunky_png (1.3.3)
celluloid (>= 0.15.0)
nio4r (>= 0.5.0)
chunky_png (1.3.0)
coderay (1.1.0) coderay (1.1.0)
coffee-script (2.2.0) coffee-script (2.3.0)
coffee-script-source coffee-script-source
execjs execjs
coffee-script-source (1.7.0) coffee-script-source (1.8.0)
colored (1.2) colored (1.2)
compass (0.12.4) compass (1.0.1)
chunky_png (~> 1.2) chunky_png (~> 1.2)
fssm (>= 0.2.7) compass-core (~> 1.0.1)
sass (~> 3.2.17) compass-import-once (~> 1.0.5)
cri (2.5.0) rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
sass (>= 3.3.13, < 3.5)
compass-core (1.0.1)
multi_json (~> 1.0)
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
cri (2.6.1)
colored (~> 1.2) colored (~> 1.2)
execjs (2.0.2) execjs (2.2.2)
ffi (1.9.3) ffi (1.9.6)
formatador (0.2.4) formatador (0.2.5)
fssm (0.2.10) guard (2.7.1)
guard (2.6.0)
formatador (>= 0.2.4) formatador (>= 0.2.4)
listen (~> 2.7) listen (~> 2.7)
lumberjack (~> 1.0) lumberjack (~> 1.0)
@ -37,52 +41,52 @@ GEM
nanoc (>= 3.6.3) nanoc (>= 3.6.3)
haml (4.0.5) haml (4.0.5)
tilt tilt
i18n (0.6.9) hitimes (1.2.2)
i18n (0.6.11)
json (1.8.1) json (1.8.1)
listen (2.7.1) listen (2.7.11)
celluloid (>= 0.15.2) celluloid (>= 0.15.2)
celluloid-io (>= 0.15.0)
rb-fsevent (>= 0.9.3) rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9) rb-inotify (>= 0.9)
lumberjack (1.0.5) lumberjack (1.0.9)
method_source (0.8.2) method_source (0.8.2)
mime-types (2.2) mime-types (2.4.3)
mini_portile (0.5.3) mini_portile (0.6.0)
multi_json (1.9.2) multi_json (1.10.1)
nanoc (3.6.8) nanoc (3.7.3)
cri (~> 2.3) cri (~> 2.3)
nanoc-cachebuster (0.3.1) nanoc-cachebuster (0.3.1)
nanoc (>= 3.3.0) nanoc (>= 3.3.0)
nanoc-javascript-concatenator (0.0.2) nanoc-javascript-concatenator (0.0.2)
nanoc (>= 3.3.0) nanoc (>= 3.3.0)
nio4r (1.0.0) nokogiri (1.6.3.1)
nokogiri (1.6.1) mini_portile (= 0.6.0)
mini_portile (~> 0.5.0) posix-spawn (0.3.9)
posix-spawn (0.3.8) pry (0.10.1)
pry (0.9.12.6) coderay (~> 1.1.0)
coderay (~> 1.0) method_source (~> 0.8.1)
method_source (~> 0.8)
slop (~> 3.4) slop (~> 3.4)
pygments.rb (0.5.4) pygments.rb (0.6.0)
posix-spawn (~> 0.3.6) posix-spawn (~> 0.3.6)
yajl-ruby (~> 1.1.0) yajl-ruby (~> 1.1.0)
rack (1.5.2) rack (1.5.2)
rake (10.2.2) rake (10.3.2)
rb-fsevent (0.9.4) rb-fsevent (0.9.4)
rb-inotify (0.9.3) rb-inotify (0.9.5)
ffi (>= 0.5.0) ffi (>= 0.5.0)
rdiscount (2.1.7) rdiscount (2.1.7.1)
rubypants (0.2.0) rubypants (0.2.0)
sass (3.2.18) sass (3.4.7)
slop (3.5.0) slop (3.6.0)
stringex (2.5.0) stringex (2.5.2)
systemu (2.6.4) systemu (2.6.4)
thor (0.19.1) thor (0.19.1)
tilt (2.0.1) tilt (2.0.1)
timers (1.1.0) timers (4.0.1)
typogruby (1.0.16) hitimes
typogruby (1.0.17)
rubypants rubypants
uglifier (2.5.0) uglifier (2.5.3)
execjs (>= 0.3.0) execjs (>= 0.3.0)
json (>= 1.8.0) json (>= 1.8.0)
w3c_validators (1.2) w3c_validators (1.2)

View File

@ -0,0 +1,78 @@
---
title: "Why I dropped fish in favour of Zsh"
created_at: 2014-11-20 12:09:35 +0100
kind: article
published: false
tags:
- tag1
summary: |
Developers are religious about two things: their editor and their shell.
Many will say fish is the best there is, but after a few months of fish,
I'm back to Zsh.
---
Developers are religious about two things: their editor and their shell.
After getting multiple recommendations from friends and co-workers I
gave [fish][1] a try. It lists several benefits over other shells, among
other there's autosuggetions, colour support and web based configuration.
Installing it on a Mac is easy with [Homebrew][2], so I figured why not
give it a fair try.
And yes, fish has its benefits. I used the web based configurator. Once.
The only feature that really stood out to me was the autosuggestions and
more notably the fact that fish will suggest commonly used commands based
on the directory you're currently in.
Still, the most annoying thing is that fish is not POSIX compatible.
Although I'm not a purist that insists on POSIX compatibility, it imposed
some practical limitations.
## Environment variables
The first and most annoying thing is environment variables. I'm not talking
about the globally set variables, but those you use to run a command once.
Normally I'd do something like this:
TIME_COP=2016-02-24 rake app:send_daily_notifications
Well, that doesn't work in fish as it needs you to explicitly run the `env` command:
env TIME_COP=2016-02-24 rake app:send_daily_notifications
It's a subtle difference, but if you're used to the old syntax and have
quite some documentation with snippets like this, it's quite a nuisance.
## && vs &
Running a second command conditionally is a construct I use often:
./analyse_data.rb && rake app:send_daily_notifications
If `./analyse_data.rb` fails (e..g it has a non-zero return value), then
the supplied rake task will not be executed. Again, this is something I
commonly use.
Fish on the other hand uses a single `&`, the `&&` operation is invalid.
## Incompatibility with Vim
You'll need to give Vim some extra love and attention when you're running
fish. Namely, you'll need to explicitly tell Vim to *not* use fish, but bash
instead.
It's a simple fix, but one that should not be necessary.
## Back to Zsh
The _issues_ I have with fish are minimal and due to my own personal
preference. I think fish is a nice shell, but it just doesn't fit me.
So, back to Zsh! But no more Oh-My-Zsh-crap, please! More on how I've
setup Vim/Tmux/Zsh in a later post.
[1]: http://fishshell.com
[2]: http://brew.sh