当使用vi模式(set -o vi)和Bash时,最好有一个取决于你当前所处模式的提示(插入或命令).如何找到这种编辑模式?
顺便说一句,这似乎在ZSH中是可能的:
新鲜的bash 4.3和readline 6.3为你们提供了一些东西..来自更新日志:
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的程序;)
搜索谷歌后,查看bash手册页,然后查看bash源代码(lib/readline/vi_mode.c),看起来没有简单的方法来从插入模式转换到命令模式时更改提示.看起来这里有人有机会修补bash源,因为有人要求启动和停止源中的模式.
看到你的帖子后,它让我对bash vi模式设置感兴趣.我爱vi,为什么不在命令行上.然而,它看起来我们将不得不继续跟踪我们是否处于插入模式,而不提示变化(所以sayeth多少帖子)对于什么是值得你总是在插入模式,除非你打ESC.使它更容易一些,但并不总是那么直观.
我正在提高你的问题,因为我有兴趣看看它的发展方向.
Bash 4.4/Readline 7.0 将添加对用户可设置模式字符串的支持.
您可以尝试测试版本,但目前它们看起来有点儿麻烦.他们还不支持在提示符中指定您希望模式指示符出现的位置(我认为这是杀手级功能).
如果您不想等待,并且不想进行一点编译,我已经将bash 4.3和readline 6.3的修补版本发布到支持此功能的github.
使用修补版本,您可以执行以下操作:
有关详细信息,包括如何安装,请访问https://github.com/calid/bash
.inputrc
INPUTRC有一个选项,以显示一个+
插入和:
正常模式下,通过增加set show-mode-in-prompt on
在~/.inputrc
作为eMPee584写道,但这并不具有多提示(与旧版本的bash和readline的)很好地工作.
解决方案是有一个line PS1
(>
),以及一个在提示之前回显一些东西的函数.它被构建为bash并被调用PROMPT_COMMAND
.
function prompt { PS1=' > ' echo -e "$(date +%R) $PWD" } PROMPT_COMMAND='prompt'
通常的提示字符串在printf的echo中不可用.该-e
是interprete颜色代码,这是没有必要添加\[
或\]
,不反正工作.
插入模式:
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 _
(资源)