fish Shell では、実際のコマンドラインは構文で強調表示されています。
これと同じ動作をbashで取得する方法はありますか?
これと同じようなもの がありますが、zshの場合はbashではありません。これをbashに移植できる可能性はありますか?
提供されたスクリーンショット、説明、またはリンクを理解していない人のために明確にするために:端末で入力された実際のテキストを強調表示したいと思います。コマンド、括弧、引用符など.
Bashはインタラクティブ入力にreadline
を使用するため、そのプログラムに構文の強調表示を実装する必要があります。このような機能のコーディング方法について Googleグループディスカッション を見つけました。
魚のシェルは、そのプログラムに固有の own 行エディターを使用しており、直接移植することはできません。
zsh
はbashと非常によく似ており、その行エディターは extendable です。 zsh-syntax-highlighting を見つけて、zshでこの機能を有効にしました。
GNU Bash(またはGNU Readline))で構文の強調表示を取得するsimple方法はありませんが、組み込みコマンドbind -x 'BYTE: Shell-COMMAND'
を使用してすべてのユーザー入力をシェル関数にバインドすることにより、Bashスクリプトに独自のラインエディターを実装することは原則的に可能です。もちろん、独自のラインエディターに構文強調表示の機能を統合することもできます。
実際、私はラインエディターを実装しました ble.sh
構文の強調表示や自動提案などの機能を備えています。 Bash 3.0--5.0をサポートしています。 (ほぼ)純粋なBashスクリプトで記述されているため、~/.bashrc
のスクリプトをsource
するだけです。以下はbashrcでble.sh
をセットアップするサンプルです(詳細は [〜#〜] readme [〜#〜] を参照):
$ git clone https://github.com/akinomyoga/ble.sh.git
$ cd ble.sh
$ make
$ make INSDIR="$HOME/.local/share/blesh" install
# bashrc
# Add the following line at the beginning of bashrc
[[ $- == *i* ]] &&
source "$HOME/.local/share/blesh/ble.sh" --attach=none
# ... other bashrc settings ...
# Add the following line at the end of bashrc
((_ble_bash)) && ble-attach
注:自分の製品へのリンクを使用して質問に回答することは、自己宣伝であり好ましくない場合があるため、この質問への回答は控えています。しかし、他の解決策は長い間登場しなかったし、この質問にも多くの見方があります(これはその重要な需要を反映しています)。だから今日はこの質問に答えることにした。次のメタ質問/回答を参照して、最初にアイデアを説明し、次に実装例としてプロジェクトへのリンクを提供しました。
はい、これは実際には自己宣伝であることを認めざるを得ませんが、これはこの機能を必要とする人々に役立つと思います。何か問題がありましたら、コメントで教えていただければ幸いです。