Bashでviモードを表すようにカーソルの外観(または色)を変更する

Bashでviモードを表すようにカーソルの外観(または色)を変更する

言う:どうするか尋ねるのではありません。端末でvimを使用するときのカーソルの変更。 Bashのviモードで入力モードとコマンドモードを切り替えると、カーソルが変わります。

set -o vi <CR> type some text <ESC> (the cursor changes shape/color)
i (cursor change back) etc... 

私が見つけた台本これにより、モードが変更されたときにカーソルの色を変更できます。扱いにくいしかし、この機能だけのためにシェルを変更したくありません。

gvim(または色)のように、Bashコマンドラインからコマンドモードと挿入モードを切り替えるときにカーソルの外観を変更する方法はありますか?

答え1

この2行~/.inputrc:

set vi-ins-mode-string \1\e[5 q\2
set vi-cmd-mode-string \1\e[2 q\2

答え2

ここからコピーしました -コマンドライン編集vimスタイル

bash4.3で利用可能でなければなりません - 参照変更ログ-

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

bash現在、4.3ではrcデフォルトのリポジトリではありませんが、ソースでコンパイルすることなくほとんどのディストリビューションのパッケージを入手できます。例えば。 Ubuntu(amd64)こことDebian(実験リポジトリ)ここ

答え3

まだ実際の解決策を見つけることができませんでしたが、これはあなた(または他の人)がより良い解決策を見つけるのに役立ちます。

スクリプト(kmtest.shなど)を生成する必要があります。

#!/bin/bash
# Script "kmtest.sh"

TEST=`bind -v | awk '/keymap/ {print $NF}'`
if [ "$TEST" = 'vi-insert' ]; then
   echo -ne "\033]12;Green\007"
else
   echo -ne "\033]12;Red\007"
fi

PS1に追加すると、次のように表示されます。

export PS1="\u@\h \$(kmtest.sh)> "

しかし、私が言ったように、これはcrの後にカーソルの色だけを変更するので、望むものではありません。幸運を祈る

国家規格

答え4

readlineをハッキングしてこれを行う方法があるようです。たぶん私たちはそれを主流に押し込むことができますか?

これがSOへの私の答えですhttps://stackoverflow.com/a/12201092/255961より多くの情報を得たら更新します。

関連情報