不同的bash提示不同的vi编辑模式?

当使用vi模式(set -o vi)和Bash时,最好有一个依赖于当前模式的提示(插入或命令)。 如何找出这种编辑模式?

顺便说一下,这似乎是可能的ZSH :

新鲜的bash 4.3和readline 6.3有一些东西给你们..从变化logging:

4. New Features in Readline j. New user-settable variable, show-mode-in-prompt, adds a characters to the beginning of the prompt indicating the current editing mode. 

所以放

 set show-mode-in-prompt on 

进入/ etc / inputrc或〜/ .inputrc(thx stooj)应该会影响所有启用了readline的程序;)

search谷歌后,浏览bash手册页,然后查看bash源代码(lib / readline / vi_mode.c),看起来好像没有简单的方法来改变从插入模式到命令模式的提示。 看起来有人可能有机会修补bash源码,因为有源码启动和停止模式的调用。

看到你的post后,它让我对bash vi模式设置感兴趣。 我爱六,为什么不在命令行。 然而,看起来我们将不得不跟踪我们是否在插入模式没有及时更改(所以说很多论坛post)为什么值得你总是在插入模式,除非你按ESC。 使它更容易一点,但并不总是那么直观。

我正在提高你的问题,因为我有兴趣看到这个地方。

Bash 4.4 / Readline 7.0 将增加对用户可设置模式string的支持 。

您可以尝试testing版本,但目前看起来有点儿错误。 他们还不支持在你想要的模式指示符发生的地方(我认为是杀手级的function)。

如果你不想等,也不害怕一点点编译,我已经发布了修补版本的bash 4.3和readline 6.3到github,支持这个function。

随着补丁版本,你可以做这样的东西:

在这里输入图像说明

有关更多详细信息,包括如何安装,请访问https://github.com/calid/bash

多行提示和.inputrc

Inputrc有一个选项来显示+插入和:对于正常模式,通过在~/.inputrc添加set show-mode-in-prompt on作为eMPee584写道,但是这不适用于多行提示。

一个解决scheme有一行PS1> )和一个函数,在提示之前回显一些东西。 它被内置到bash中,并被称为PROMPT_COMMAND

 function prompt { PS1=' > ' echo -e "$(date +%R) $PWD" } PROMPT_COMMAND='prompt' 

通常的提示string在printf的回显中不可用。 -e是解释颜色代码,并没有必要添加\[\] ,这是行不通的。

插入模式:

 20:57 /home/sshbio/dotfiles/bash + > _ 

正常模式:

 20:57 /home/sshbio/dotfiles/bash : > _ 

按下标签 ,只有PS1被重复,这对我来说是有道理的:

 20:57 /home/sshbio/dotfiles/bash + > ls _ bashrc bash_profile inputrc + > ls _ 

预习 (资源)

我也尝试为BASH vi模式获得一个指示器,而且你们都知道这听起来很简单,而且还没有办法做到这一点。

我目前的做法是:当我不确定哪种模式时,点击“a”。 如果在BASH PROMOT之后出现“a”,我知道我处于“INSERT”模式。 那么,我打“返回”,并继续。 这是我解决小烦恼的一个简单的方法。

顺便说一句,我别称a ='cal',或别的什么东西给空的命中“一个”有用的东西。

尽pipe不是一步式解决scheme,但是您可以通过编写一个脚本来同时更改编辑模式和提示,并且在更改模式时仅使用所述脚本。

IE:有一个名为bash-vi的脚本,它执行"set -o vi; PS1='desired vi mode prompt';"


编辑:(不能评论)我看,我想我没有仔细阅读这个问题,并忽略了插入和命令模式的参考。 不知道如何设置。 通常对我来说这不是一个问题,因为我只使用命令模式进行简短的操作 – 我可以看到它为什么会有用。