Can I Make Command Mode Default in Bash’s Vi Mode?

0
0
Asked By TechieTurtle93 On

Hey everyone, I've been using Bash's vi mode for a couple of decades now, and I've always wondered: is there a way to set command mode as the default instead of insert mode? I find that most of the time, I end up hitting to switch to command mode so I can navigate through my command history using and . It would really save me some time if I could skip that step and just start in command mode. Any ideas? Thanks!

4 Answers

Answered By CodeWizard88 On

Just to clarify, you aren't actually in editing mode until you hit . Before that, you're just in the shell environment, similar to cooked mode where you can enter commands normally. In Bash's vi mode, it doesn’t really emulate all of vi's features. For example, you don’t have functionalities like marking positions with `m*x*` and returning back with `*x*`. It offers a lot of the command features, but not everything you’d find in a full vi session. If you want that level of control, you might want to use the `fc` command to invoke the vi editor directly instead!

Answered By CuriousCoder77 On

Unfortunately, you can't set command mode as the default in stock Bash. When you're in vi mode, Bash automatically starts in insertion mode. The only way to change it would be to dive into the source code, which is quite involved. You'd have to replace `rl_vi_insertion_mode()` with `rl_vi_movement_mode()` in the `bashline.c` file, then rebuild Bash from scratch. However, I did try this myself, and it didn't work — it seems the code needs to be changed in several places, not just that one instance. Plus, starting in command mode means you'd always have to prefix new commands with `i`, which might get really annoying quickly!

BashFanatic21 -

Haha, I totally get that! I'm about to try your suggestion too. It sounds like a rabbit hole, but I'm curious to see what happens.

TechieTurtle93 -

Yeah, I see your point. I think I'd struggle with constantly remembering to hit `i` for new commands! Maybe it's best to leave it as it is.

Answered By ShellScripter42 On

You could try typing `vi`. This backslash bypasses any preset options Bash has for commands. Maybe it will help with your commands in a different way!

Answered By TechSavvyNinja On

Have you considered why you'd want command mode as the default? Just curious about your thought process!

Related Questions

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.