I have been using fish for a few months exclusively on my Mac. I really miss a few bashisms: mostly pressing esc-. inserts the last part of the last command. I have not changed the shell on my server, somehow I am afraid of breaking things... (bad shell scripts that don't have correct shebang line).
esc-. is my biggest miss as well. There are discussions on this but still havent been able to fix it on osx in iterm2 myself. Did get option-. to work for now but esc-. has 20+ years of pure reflex action burned into my brain.
In fish it's simple enough to start typing the command you want and then hit arrow right to autocomplete. If you have a couple often commands that start the same way just arrow up or down to cycle through them, then arrow right to put them on the command line.
Simplified example: mkdir foo, cd foo. I type in mkdir foo then press enter, type "cd esc-.". Doesn't work. Command completion in fish doesn't help here. In real life this is of course mostly more complicated than a simple "foo".
Comments
I have been using fish for a few months exclusively on my Mac. I really miss a few bashisms: mostly pressing esc-. inserts the last part of the last command. I have not changed the shell on my server, somehow I am afraid of breaking things... (bad shell scripts that don't have correct shebang line).
esc-. is my biggest miss as well. There are discussions on this but still havent been able to fix it on osx in iterm2 myself. Did get option-. to work for now but esc-. has 20+ years of pure reflex action burned into my brain.
Can you post your solution (or give a pointer)?
function fish_user_key_bindings bind \e. 'history-token-search-backward' end
There is a thread about it here
https://github.com/fish-shell/fish-shell/issues/89
Not successful yet on the Mac Terminal.app command line... Thanks anyway.
In fish it's simple enough to start typing the command you want and then hit arrow right to autocomplete. If you have a couple often commands that start the same way just arrow up or down to cycle through them, then arrow right to put them on the command line.
Simplified example: mkdir foo, cd foo. I type in mkdir foo then press enter, type "cd esc-.". Doesn't work. Command completion in fish doesn't help here. In real life this is of course mostly more complicated than a simple "foo".
I use zsh and for this use case I typically use "mkdir foo" followed by "cd $!".
function mkcd () { mkdir -p "$1" && cd "$1" }
as I wrote: this is a simplified example ...