diff --git a/Gemfile.lock b/Gemfile.lock index 6b2befc..1596a53 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,29 +4,33 @@ GEM adsf (1.2.0) rack (>= 1.0.0) builder (3.2.2) - celluloid (0.15.2) - timers (~> 1.1.0) - celluloid-io (0.15.0) - celluloid (>= 0.15.0) - nio4r (>= 0.5.0) - chunky_png (1.3.0) + celluloid (0.16.0) + timers (~> 4.0.0) + chunky_png (1.3.3) coderay (1.1.0) - coffee-script (2.2.0) + coffee-script (2.3.0) coffee-script-source execjs - coffee-script-source (1.7.0) + coffee-script-source (1.8.0) colored (1.2) - compass (0.12.4) + compass (1.0.1) chunky_png (~> 1.2) - fssm (>= 0.2.7) - sass (~> 3.2.17) - cri (2.5.0) + compass-core (~> 1.0.1) + compass-import-once (~> 1.0.5) + 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) - execjs (2.0.2) - ffi (1.9.3) - formatador (0.2.4) - fssm (0.2.10) - guard (2.6.0) + execjs (2.2.2) + ffi (1.9.6) + formatador (0.2.5) + guard (2.7.1) formatador (>= 0.2.4) listen (~> 2.7) lumberjack (~> 1.0) @@ -37,52 +41,52 @@ GEM nanoc (>= 3.6.3) haml (4.0.5) tilt - i18n (0.6.9) + hitimes (1.2.2) + i18n (0.6.11) json (1.8.1) - listen (2.7.1) + listen (2.7.11) celluloid (>= 0.15.2) - celluloid-io (>= 0.15.0) rb-fsevent (>= 0.9.3) rb-inotify (>= 0.9) - lumberjack (1.0.5) + lumberjack (1.0.9) method_source (0.8.2) - mime-types (2.2) - mini_portile (0.5.3) - multi_json (1.9.2) - nanoc (3.6.8) + mime-types (2.4.3) + mini_portile (0.6.0) + multi_json (1.10.1) + nanoc (3.7.3) cri (~> 2.3) nanoc-cachebuster (0.3.1) nanoc (>= 3.3.0) nanoc-javascript-concatenator (0.0.2) nanoc (>= 3.3.0) - nio4r (1.0.0) - nokogiri (1.6.1) - mini_portile (~> 0.5.0) - posix-spawn (0.3.8) - pry (0.9.12.6) - coderay (~> 1.0) - method_source (~> 0.8) + nokogiri (1.6.3.1) + mini_portile (= 0.6.0) + posix-spawn (0.3.9) + pry (0.10.1) + coderay (~> 1.1.0) + method_source (~> 0.8.1) slop (~> 3.4) - pygments.rb (0.5.4) + pygments.rb (0.6.0) posix-spawn (~> 0.3.6) yajl-ruby (~> 1.1.0) rack (1.5.2) - rake (10.2.2) + rake (10.3.2) rb-fsevent (0.9.4) - rb-inotify (0.9.3) + rb-inotify (0.9.5) ffi (>= 0.5.0) - rdiscount (2.1.7) + rdiscount (2.1.7.1) rubypants (0.2.0) - sass (3.2.18) - slop (3.5.0) - stringex (2.5.0) + sass (3.4.7) + slop (3.6.0) + stringex (2.5.2) systemu (2.6.4) thor (0.19.1) tilt (2.0.1) - timers (1.1.0) - typogruby (1.0.16) + timers (4.0.1) + hitimes + typogruby (1.0.17) rubypants - uglifier (2.5.0) + uglifier (2.5.3) execjs (>= 0.3.0) json (>= 1.8.0) w3c_validators (1.2) diff --git a/content/posts/2014-11-20-why-i-dropped-fish-in-favour-of-zsh.md b/content/posts/2014-11-20-why-i-dropped-fish-in-favour-of-zsh.md new file mode 100644 index 0000000..75ac2e0 --- /dev/null +++ b/content/posts/2014-11-20-why-i-dropped-fish-in-favour-of-zsh.md @@ -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