When I first saw Zachary Wasserman’s Go Command, I wasn’t entirely convinced that it was a good idea. I figured you could get similar functionality with less typing by enabling autocd
, properly configuring binfmt_misc, and setting the execute bit on pretty much every single file…
Those three things would be quite convoluted, and setting the execute bit on every single file would make me a bit nervous… Alexy’s go
command is safer, easier to implement, easier to carry along with you, and can give us much finer-grained control over the process.
To me, the go
command feels like it could be called the dwim command. I wanted my own go
command to do more than change directories and open files in my text editor.
I wanted to limit mine to only open appropriate files in my text editor. I didn’t want to be accidentally opening images or videos in Emacs. I also decided that if a file shouldn’t be opened with a text editor, that it should be handed off to xdg-open
. That lets me open images, videos, office documents, and anything else I can think of with the same command.
I also felt it was important to integrate autojump because I am horribly addicted to it. So much so that my muscle memory always wants to type j
instead of g
… I’m sure if I can start remembering to correct myself, I will have that trained out of me in a week or two.
Here’s the current revision of my take on the go
command. It works fine on botth zsh
and bash
. It fails gracefully if xdg-open
or autojump are not found. If you would like to give it a try, you can just copy and paste it into your ~/.zshrc
or ~/.bashrc
(whichever is appropriate for your shell).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
From my perspective, there isn’t any value in automatically running an ls
every time I change directories. I prefer to see as many previously run commands on my screen at a time as possible, and an 80x24 terminal is already pretty cramped as it is. Even in the rare instances where I vertically maximize, my terminal I still don’t want to look at the noise of multiple extraneous directory listings staring back at me. You mileage will most likely vary, though.
The disadvantage of the go command
Using three separate commands provides the shell with context to help it provide better completion options to you. I don’t think this is a big loss if you don’t use autojump
, though. I haven’t figured out how I want to set up the zsh
completion settings for my go
command yet. For now, I will just limp along with the basic completion settings.
This is the sort of problem we see with commands like oh-my-zsh’s x/extract
command. It will perform a basic extraction for just about any archive you throw at it, but you lose the ability to complete on files inside the archive.
- Update 2010-05-18: I moved this code into an
oh-my-zsh
plugin and submitted a pull request a few days ago. - Update 2010-05-20: Added a bit of functionality. If the file to edit is read only ,it will be opened using
sudo
.