Follow

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

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

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

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

Sign in to participate in the conversation
Mastodon

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