Hacker News new | ask | show | jobs
by m-r-r 4683 days ago
I don't understand the advantage of using handwritten function instead of the shell builtins. The `mark` function could be replaced by `alias -g`, `jump` could be replaced by `cd` and `unmark` could be replaced by `unalias` :

    % cd ~/Dev/W3/m-r-r.github.io
    % alias -g :blog="$PWD"
    % jekyll build -d /tmp/out/ && cd /tmp/out
    % ./index.html
    % cd :blog
    % pwd
    /home/m-r-r/Dev/W3/m-r-r.github.io
    % alias -g
    :blog='/home/m-r-r/Dev/W3/m-r-r.github.io'
    :dev='/home/m-r-r/Dev'
    :c='/home/m-r-r/Dev/C'
    :python='/home/m-r-r/Dev/Python'
    :vim='/home/m-r-r/.vim'
In addition, this method works with any shell command:

    % pwd
    /tmp/out
    % make -C :blog publish
    % git clone git://git.complang.org/ragel.git `echo :c`/ragel
    % vim `echo :vim`/templates/\*.rl
On the other side, the aliases are not saved at exit unless you write a function to do it:

    % tail -n 15 ~/.zshrc
    function aliases {
        (
            alias -L -r
            alias -L -g
            alias -L -s
        ) | uniq
    } 

    function save-aliases {
        aliases > ~/.zsh_aliases
    }

    if [ -f ~/.zsh_aliases ]; then 
        . ~/.zsh_aliases
    fi