I am currently using bash on OSX (via iTerm2). Sometimes I have to run programs with a very lengthy set of command line arguments. If I find that I've mistyped, it takes way too long to arrow back to the mistake and fix it. I know some programs, such as nano, support mouse reporting for cursor positioning. Is this supported by any shells, or (even better) as an option to bash?

4 Answers
4

Sounds like you would benefit from investing a short amount of time in learning
some default readline keyboard shortcuts. Note that user606723's
answer
above gives some basic ones but the Home and
Alt+arrow keys do not work on all terminals. Here are a
few of the ones I find the following most useful and which also work in more
terminals.

(Unless otherwise noted, "word" means an alphanumeric string.)

Alt-f: go one word forward.

Alt-b: go one word back.

Ctrl-a: go to beginning of line

Ctrl-e: go to end of line

Alt-d: delete to end of word

Alt-Backspace: delete to beginning of word

Ctrl-w: delete backwards to whitespace

Ctrl-y: paste most recently deleted text

Ctrl-b, Ctrl-f: move backward/forward one character,
equivalent to left and right

Ctrl-h, Ctrl-d: equivalent to Backspace and
Delete, respectively.

I list the last few because I find them more convenient than reaching for the
arrow keys or delete/backspace. You can see how with these basic shortcuts
you can do quite a bit of editing rather easily. But there are more:

Alt-.: rotate through the last word (white-space delimited) of
the previous lines in history. Using it one gets you the last argument of the
most recent command you typed.

Ctrl-_: undo (incremental)

Ctrl-]: search forward for character (like f in vim, but less
convenient)

Ctrl-r: reverse history search

Alt-0...Alt-9: numeric argument to next command. For
example if you wanted to delete 4 words: Alt-4Alt-d. Or
if you need 1024 A's on the command line for some reason:
Alt-1024A.

Ctrl-u: delete from cursor position to beginning of line

Ctrl-k: delete from cursor position to end of line

And these are just a few of the ones I use - there are many more in the manpage.