17

Is it possible to configure bash vi mode so that initially it is in command mode instead on insert mode? I find that I have to press Esc far too much. It seems that there is possibility to specify this in zsh, but I have not found a way to do this in bash/readline.

Quasímodo
  • 18,625
  • 3
  • 35
  • 72
Galisperis
  • 171
  • 3

4 Answers4

2

I don't think it is possible using the standard GNU Readline Library.

However, you may be able to use xdotool for a simple hack to achieve the same effect. Appending a command to your .bashrc that simulates an Escape keypress would ensure that your term opened in command mode:

xdotool key Escape

You might want to use a slight delay, with the --delay switch, to prevent it from munging your prompt...

Note this is likely to introduce more frustration than you expect: terminals are designed to accept input; breaking that (albeit only slightly) may not prove such a good idea...

jasonwryan
  • 71,734
  • 34
  • 193
  • 226
2

The answer is no. The relevant bash source file is bashline.c

n0pe
  • 9,411
  • 13
  • 60
  • 108
Alexander
  • 9,607
  • 3
  • 40
  • 59
1

I take it back, this doesn't work with the cursor movement. It works, but with the funny behavior, if you take those out: PS1="$PS1 ^[


Change your PS1 prompt:

PS1="test $ \[^[[s^[^[[u\]"

Where ^[ is a literal escape (Ctrl+V Esc).

The escape on its own in the middle changes to command mode, the ^[[s and ^[[u escapes store and restore the cursor position; without that, I found there was some funny behavior.

Kevin
  • 40,087
  • 16
  • 88
  • 112
-2

try set +o vi

set -o vi will take into editing mode again.

http://tldp.org/LDP/abs/html/options.html

Nikhil Mulley
  • 8,145
  • 32
  • 49