回答:
新鮮な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 4.4 / Readline 7.0では、ユーザー設定可能なモード文字列のサポートが追加されます。
ベータ版を試すこともできますが、現時点では少しバグがあるようです。また、プロンプトのどこでモードインジケーターを発生させたいかを指定することもまだサポートしていません(これがキラー機能だと思います)。
あなたが待ちたくない、そして少しのコンパイルを恐れないなら、私はこの機能をサポートするgithubにbash 4.3とreadline 6.3のパッチを当てたバージョンを公開しました。
パッチバージョンでは、次のようなことができます。
インストール方法を含む詳細については、https://github.com/calid/bashをご覧ください。
googleを検索し、bashのマニュアルページを調べ、bashのソースコード(lib / readline / vi_mode.c)を確認すると、挿入モードからコマンドモードに移行するときにプロンプトを簡単に変更する方法がないようです。ソースのモードの開始と停止の呼び出しがあるため、誰かがbashソースにパッチを適用する機会があるかもしれません。
あなたの投稿を見て、私はbash viモード設定に興味を持った。私はviが大好きで、なぜコマンドラインではそうしません。ただし、プロンプトを変更せずに挿入モードになっているかどうかを追跡する必要があるようです(多数のフォーラム投稿があるため)。ESCを押さない限り、常に挿入モードにいる価値があります。少し簡単になりますが、必ずしも直感的ではありません。
これがどこに行くのかを知りたいので、質問を増やします。
.inputrc
INPUTRCは、表示するオプションがある+
の挿入のためにと:
追加することによって、通常モードのためset show-mode-in-prompt on
に~/.inputrc
eMPee584が書いたように、これは、プロンプト(bashのとのreadlineの古いバージョンでは)複数行でうまく動作しません。
解決策は、1行PS1
(>
)と、プロンプトの前に何かをエコーする関数です。これはbashに組み込まれ、呼び出されPROMPT_COMMAND
ます。
function prompt {
PS1=' > '
echo -e "$(date +%R) $PWD"
}
PROMPT_COMMAND='prompt'
通常のプロンプト文字列は、printfのエコーでは使用できません。-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 _
私もBASH viモードのインジケーターを取得しようとしますが、皆さんはそれがシンプルであり、まだそれを行う方法がないことを学びました。
私の現在のアプローチは次のとおりです。どちらのモードかわからない場合は、「a」を押します。「a」がBASH PROMOTの後に表示される場合、「INSERT」モードであることを知りました。次に、「RETURN」を押して続行します。これは、私が小さな煩わしさを解決する簡単な方法です。
ちなみに、私は 'alias a =' cal '、または空のヒットを' a '少し便利にするための何か他のものです。
.inputrc
まず、あなたがより高いと、bashのバージョンを実行していることを確認する必要があります4.3
:
$ bash --version
GNU bash, version 4.4
次に、次の行をに入れます~/.inputrc
。
#################### VIM ####################
# FOR MORE INFORMATION CHECK:
# https://wiki.archlinux.org/index.php/Readline
# TURN ON VIM (E.G. FOR READLINE)
set editing-mode vi
# SHOW THE VIM MODE IN THE PROMPT (COMMAND OR INSERT)
set show-mode-in-prompt on
# SET THE MODE STRING AND CURSOR TO INDICATE THE VIM MODE
# FOR THE NUMBER AFTER `\e[`:
# 0: blinking block
# 1: blinking block (default)
# 2: steady block
# 3: blinking underline
# 4: steady underline
# 5: blinking bar (xterm)
# 6: steady bar (xterm)
set vi-ins-mode-string (ins)\1\e[5 q\2
set vi-cmd-mode-string (cmd)\1\e[1 q\2
コマンドモードでは、カーソルはブロックとして表示されます。
挿入モードでは、カーソルは垂直バーとして表示されます。
プロンプト自体は、モードに応じて次のようになります。
(cmd)$ ...
(ins)$ ...