GNU/Linux >> Linux の 問題 >  >> Linux

zsh/ターミナルで改行できないスペースを強調表示することはできますか?

この強調表示は、シェルよりもターミナルエミュレータで簡単に実装できます。また、利点として、シェルから独立した強調表示が得られるため、less でも動作します。 etc.シェルを切り替えて大丈夫なので、URxVtに切り替えても大丈夫だと思います。

perl 拡張機能 urxvt-perls と組み合わせて、URL などをクリック可能にすることができます。しかし、改行できないスペースに下線を引くためだけに、この機能を悪用することができます。

構成は ~/.Xdefaults で行われます :

URxvt.perl-ext:           default,matcher
URxvt.matcher.button:     2
URxvt.matcher.pattern.0:  (\\240)
URxvt.matcher.launcher.0: /bin/true
  • 1行目で適切な拡張機能を有効化
  • 2 行目は、ハイパーリンクをクリックするためのマウスの中ボタンの使用法を構成します''
  • 3 行目では、照合する正規表現を定義しています。ここではすべての改行不可能なスペースです。 A0 (hex) = 240 (oct)
  • 4 行目はアクションを定義しています。この場合、ブラウザやプログラムを開きたくないので、/bin/true 大丈夫でしょう

~/.Xdefaults をリロードします X サーバーを再起動する (これはやり過ぎかもしれませんが、xrdb ~/.Xdefaults で十分です...)そして、あなたが望む結果が得られます。拡大鏡を使用すると、分割できないスペースとアンダースコアを区別することさえ可能です (1 ピクセルのずれに注意してください) ;) :

以下は、概念実証のようなものです 「バックエンド」ソリューション用。これは多くのもの、特に man のようなインタラクティブなプログラムを破壊することに注意してください 、 less など (vim 不平を言っていますが、まだ機能しています)。このアプローチは、Atom Smasher によって zsh-users に投稿されました。 2009 年 5 月 16 日土曜日のメーリングリスト STDERR を色付けする .私はあなたの要件にそれを採用しました:

# ## highlight_nbs.zsh ##

zmodload zsh/terminfo zsh/system
autoload colors is-at-least

if [[ "${terminfo[colors]}" -ge 8 ]] { colors }

highlight_nbs() {
  while sysread line
  do
    syswrite "${line//$'\xC2\xA0'/${bg[red]} ${terminfo[sgr0]}}"
  done
}

precmd() { sleep 0 }

## i'm not sure exactly how far back it's safe to go with this
## 4.3.4 works; 4.2.1 hangs.
is-at-least 4.3.4 && exec  > >(highlight_nbs)

トリッキーな部分は exec > >(highlight_nbs) です highlight_nbs を介して置換シェルの完全な出力を処理します 関数。 precmd 競合状態を避けるために定義が必要です。そうしないと、実行されたコマンドの実際の出力の前に新しいプロンプトが出力されます。

デモはこちら:


Linux
  1. どちらの端末が優れているか:BashとZsh

  2. 空きスペースはどうなりましたか?

  3. Linux –コマンドラインから画面にピクセルを表示するためにフレームバッファにアクセスすることは可能ですか?

  1. Bashを使用してファイルの最後から2番目の行を読み取る方法は?

  2. ターミナルでHZを確認するには?

  3. 端末での誤ったコピー/貼り付けを防止または中断するにはどうすればよいですか?

  1. 最後を除くすべての改行をスペースに置き換えますか?

  2. ターミナルカーソルをボックスから行に変更するには?

  3. Ctrl-Alt-F1 の後に GUI に戻るコマンド ライン?