Are there any unix shells that support mouse reporting?

3

2

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?

John Didion

Posted 2011-08-12T13:38:43.200

Reputation: 35

Question was closed 2016-05-23T21:44:42.363

2I know that there are zsh scripts that add mouse support, but haven't tried any. – Joe Internet – 2011-08-12T14:41:30.720

Answers

5

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.

jw013

Posted 2011-08-12T13:38:43.200

Reputation: 1 163

I selected this answer because it's the one I think I will use, but these are all great solutions. Thanks! – John Didion – 2011-08-14T12:34:46.297

3

I don't know but ...


History Expansion

to repeat the last command after correcting teh to the

^teh^the^

to repeat the last command that contained the word foo after changing the first occurrence of bar to qax

!?foo?:s/bar/qax/

Line editing

you can use emacs-style editing commands to move quickly through the line.

I prefer vi mode set -o vi which means I can use b and w to move back and forwards a word at a time and use fx to move the cursor to the next occurrence of a specific character x.

RedGrittyBrick

Posted 2011-08-12T13:38:43.200

Reputation: 70 632

1

GPM (General Purpose Mouse) is a mouse server for the console and xterm

EDIT: Apparently there's also a version 2.

goweon

Posted 2011-08-12T13:38:43.200

Reputation: 1 390

0

This isn't an 'answer', but it is a solution. I am submitting it as an answer because I require the extra room.

Have you tried using a combination of Home and Alt + Left

  • Home - Will take to the front of the command.
  • End - Will take to the end of the command.
  • Alt + Left - Will take you a "word" to the left.
  • Alt + Right - Will take you a "word" to the right.

With these key combos, it should be alot easier to traverse back to your mistake =)

user606723

Posted 2011-08-12T13:38:43.200

Reputation: 1 217