で魚シェル、実際のコマンドラインは、構文強調表示されています:
この同じ動作をbashで取得する方法はありますか?
これと同じようなものがありますが、bashではなくzsh用です。これをbashに移植することは可能ですか?
提供されたスクリーンショット、説明、またはリンクを理解していない人のために明確にするために:端末で入力された実際のテキストを強調したい。コマンド、括弧、引用符など。
で魚シェル、実際のコマンドラインは、構文強調表示されています:
この同じ動作をbashで取得する方法はありますか?
これと同じようなものがありますが、bashではなくzsh用です。これをbashに移植することは可能ですか?
提供されたスクリーンショット、説明、またはリンクを理解していない人のために明確にするために:端末で入力された実際のテキストを強調したい。コマンド、括弧、引用符など。
回答:
Bashはreadline
対話型入力に使用するため、そのプログラムに構文の強調表示を実装する必要があります。そのような機能のコーディング方法に関するGoogleグループのディスカッションを見つけました。
フィッシュシェルは、そのプログラムに固有の独自のラインエディタを使用しており、直接移植することはできません。
これzsh
はbashと非常に似ており、そのラインエディタは拡張可能です。zshでこの機能を有効にするzsh-syntax-highlightingを見つけました。
GNU Bash(またはGNU Readline)で構文の強調表示を取得する簡単な方法はありませんが、組み込みコマンドを使用してすべてのユーザー入力をシェル関数にバインドすることにより、原則としてBashスクリプトで独自の行エディターを実装できますbind -x 'BYTE: SHELL-COMMAND'
。もちろん、構文強調表示の機能を独自の行エディターに統合することもできます。
実際、ble.sh
構文の強調表示や自動提案などの機能を備えたラインエディターを実装しました。Bash 3.0--5.0をサポートします。(ほぼ)純粋なBashスクリプトで記述されているためsource
、でスクリプトを作成できます~/.bashrc
。ble.sh
bashrcで設定するサンプルを次に示します(詳細については、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
注:時々、自社製品へのリンクを含む質問に答えることは自己宣伝であり、好ましくないと考えられているので、この質問に答えることは控えています。しかし、他の解決策は長い間登場していませんでした。また、この質問には多くの意見があります(これは大きな需要を反映しています)。そこで、今日この質問に答えることにしました。以下のメタの質問/回答を参照して、最初にアイデアを説明し、次に実装例としてプロジェクトへのリンクを提供しました。
はい、私はこれが実際に自己宣伝であることを認めなければなりませんが、これは機能を望む人々を助けると信じています。問題がある場合は、コメントで教えていただければ幸いです。
私は、構文の強調表示は、シェル・レベルではなく、インターフェイスレベル(ちょうど私の意見-andで起こるべきだと思ういけない他の誰かだ私は、例えば、ターミナルやお気に入りのコンソールの「プラグイン」になりますので、それはseems-)このプラグインのためでケイトが役立つかもしれませんが、これはナノで構文の強調表示を提供する もう1つです
ここでは、ターミナルで構文の強調表示を行う方法についてさらに詳しく説明します。
エイリアスls = 'ls -G'を.bash_profileに追加します。
が、ここではより良いにどのように説明されています
それが役に立てば幸い
ls
、ファイルの種類に基づいてコマンドの出力を強調していますが、これはシェル構文とは関係ありません。