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.

you don't need it if you use #acme :bloballpraisetoplan9:

but in al seriousness, Acme makes this kind of thing super easy

@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.

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 Didn't know about that and found a tip to use vim-style bindings instead, thank you ❤

@antekone EDITOR should be set to ed, the standard editor.

For other programs there is VISUAL environment variable.

@ed1conf @ed1

@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.


@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

Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!