Add post 'Why I dropped fish in favour of Zsh'
This commit is contained in:
parent
4593bf83f9
commit
a40828f20d
88
Gemfile.lock
88
Gemfile.lock
|
@ -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)
|
||||||
|
|
|
@ -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
|
Loading…
Reference in New Issue
Block a user