bashにfishのような構文強調表示を持たせる方法はありますか?


41

魚シェル、実際のコマンドラインは、構文強調表示されています:

ここに画像の説明を入力してください

この同じ動作をbashで取得する方法はありますか?

これと同じようなものがありますが、bashではなくzsh用です。これをbashに移植することは可能ですか?

提供されたスクリーンショット、説明、またはリンクを理解していない人のために明確にするために:端末で入力された実際のテキストを強調したい。コマンド、括弧、引用符など。


bashはzshのようにプラグインを受け入れるとは思わないので、bashシェル/バイナリのカスタムビルドが必要になる場合があります。代わりに魚を使用しない理由はありますか?また、別のシェルを操作して、hahaの高度な機能を学習できるかどうかを確認してくれてありがとう。
マトリックスモール

1
@Matrix:fishめられない非常に複雑なbash構成があるため、魚を使用できません。
ワッファー

残念ながら、これが現在bashで可能だとは思いません。あなたが行った研究もそれを指し示していると確信しています。絶対にzshに切り替えられない場合は理解できますが、そうでない場合は、魚のような機能をzshに組み込んだfizshご覧ください。あなたが提供したものはより堅牢です。
-voithos

1
これは、bashを学習するのに非常に有益です。これは、まったく異なる方法で遊ぶことができるからです。特別なキャラクターを逃すのを忘れたことを簡単に発見することは価値があるでしょう。
サイラップ

回答:


8

Bashはreadline対話型入力に使用するため、そのプログラムに構文の強調表示を実装する必要があります。そのような機能のコーディング方法に関するGoogleグループのディスカッションを見つけました。

フィッシュシェルは、そのプログラムに固有の独自のラインエディタを使用しており、直接移植することはできません。

これzshはbashと非常に似ており、そのラインエディタは拡張可能です。zshでこの機能を有効にするzsh-syntax-highlightingを見つけました。


1

GNU Bash(またはGNU Readline)で構文の強調表示を取得する簡単な方法はありませんが、組み込みコマンドを使用してすべてのユーザー入力をシェル関数にバインドすることにより、原則としてBashスクリプトで独自の行エディターを実装できますbind -x 'BYTE: SHELL-COMMAND'。もちろん、構文強調表示の機能を独自の行エディターに統合することもできます。

実際、ble.sh構文の強調表示や自動提案などの機能を備えたラインエディターを実装しました。Bash 3.0--5.0をサポートします。(ほぼ)純粋なBashスクリプトで記述されているためsource、でスクリプトを作成できます~/.bashrcble.shbashrcで設定するサンプルを次に示します(詳細については、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

:時々、自社製品へのリンクを含む質問に答えることは自己宣伝であり、好ましくないと考えられているので、この質問に答えることは控えています。しかし、他の解決策は長い間登場していませんでした。また、この質問には多くの意見があります(これは大きな需要を反映しています)。そこで、今日この質問に答えることにしました。以下のメタの質問/回答を参照して、最初にアイデアを説明し、次に実装例としてプロジェクトへのリンクを提供しました。

はい、私はこれが実際に自己宣伝であることを認めなければなりませんが、これは機能を望む人々を助けると信じています。問題がある場合は、コメントで教えていただければ幸いです。


-1

私は、構文の強調表示は、シェル・レベルではなく、インターフェイスレベル(ちょうど私の意見-andで起こるべきだと思ういけない他の誰かだ私は、例えば、ターミナルやお気に入りのコンソールの「プラグイン」になりますので、それはseems-)このプラグインのためでケイトが役立つかもしれませんが、これはナノで構文の強調表示を提供する もう1つです

ここでは、ターミナルで構文の強調表示を行う方法についてさらに詳しく説明します。

エイリアスls = 'ls -G'を.bash_profileに追加します。

が、ここではより良いにどのように説明されています

それが役に立てば幸い


11
シェルではなくエディターで構文強調表示を設定する方法に答えているようです。ls-colorizationは「構文」強調表示でもありません。
カイルストランド14年

私はOPが知りたいと思った何であると考えているのbashの色を取得しますが、リンクからコードと推奨ソリューションで、より多くのソリューションよりも意味論に焦点を当てていると思う
Purefan

10
元の質問は、実際の構文の強調表示について実際に非常に明確です。これは、フィッシュシェルのスクリーンショットと最終文の両方で示されています。「端末で入力された実際のテキストを強調表示したい。コマンド、括弧、引用符など」
カイルストランド14年

9
私が言ったように、それは「構文」の強調ではありません。これらはls、ファイルの種類に基づいてコマンドの出力を強調していますが、これはシェル構文とは関係ありません。
カイルストランド14年

2
Zsh(github.com/zsh-users/zsh-syntax-highlighting)とFish(fishshell.com/docs/current/tutorial.html)の両方に構文の強調表示があり、この質問は明らかにbashの同様の機能について尋ねています。すでに他のシェルに存在する場合は特に「を実装し、一貫性の維持は難しい」という特徴を求めるために完全に有効な要求である
ブランドン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.