If you're using bash or zsh and you don't know the ^X^E shortcut, learn it now.
First, ensure you have a valid `EDITOR` environment variable set to your favourite editor (like vim or emacs).
Second, enter some command, but don't hit enter.
Third, use Ctrl+X Ctrl+E and learn that you can use your editor to modify the command before running it in the shell.
This is pretty helpful if you're trying to edit a long command line.
@antekone what's even better is that you can use it with _any_ shell:
- python repl
- chrony's console
- sh/bash/rc/fish/zsh/whatever else
it's really heccin cool
@antekone if you use vi mode in bash, hit esc-v for the same function
@antekone Super awesome. I can't tell you how many times this would have come in handy.
@antekone
Is this really helpful to you? As in, do you actually run command lines long enough so that standard shortcuts aren't comfortable enough?
@danipozo Not every day. But sometimes it is useful.
Last time it was helpful to me was when trying to figure out a problem with compilation of some software. I was copying/pasting long command lines that were autogenerated by CMake (several lines long).
In order to find the problem I needed to modify those command lines and see if my modification will help to get the compilation working. So I've used ^X^E and vim's substitution command (:%s///) to perform the modification. :party_parrot:
@antekone O. M. G. 😍
@antekone oh my gosh
@antekone Didn't know about that and found a tip to use vim-style bindings instead, thank you ❤
http://nuclearsquid.com/writings/edit-long-commands/
@antekone Also note that, if the $EDITOR exits with a non-zero exit status, the shell won't run the command. In vim, that's `:cq`. In ed(`) (without GNU's "--loose-exit-status" parameter), any editing error will produce a non-zero exit status, meaning the command won't run. Edit with care. For all editors, if you want to abort, you can delete the entire command, save, and quit.
edit
@antekone sigh. "ed(1)", not "ed(`)"
Keyboard proximity colluded with my failure to watch the screen as I typed.
@antekone nice! you can also `set -o vi` to enable vi-like keybindings right in the shell prompt
@antekone Thanks!
@antekone
you don't need it if you use #acme :bloballpraisetoplan9:
but in al seriousness, Acme makes this kind of thing super easy