web-dev-qa-db-ja.com

`man`に大文字と小文字を区別するマッチングを強制することはできますか?

マニュアルページを検索する場合、検索では大文字と小文字が区別されますが、大文字のみが対象になります。たとえば、xxXに一致しますが、Xxにのみ一致します。これは man-dbバージョンのman。デフォルトでFedora派生システムで使用され、他のシステムでも使用できます。 man manデフォルトのポケットベルはless -s$LESSは環境で定義されていません、私の$PAGERlessであり、エイリアスはありません。

これは、lessを単独で呼び出したときの動作ではありません。

xを使用するときに、小文字のxを小文字のmanのみに一致させる方法はありますか?

10
goldilocks

男はレスを呼んでいます。男性レベルでの唯一の制御は、Lessを呼び出すオプションを選択することです。

Lessの検索の大文字と小文字の区別は、2つのオプションによって制御されます。

  • _-I_が有効な場合、検索では大文字と小文字が区別されません。aまたはAのいずれかを使用して、aAの両方を照合できます。 。
  • _-i_が有効であるが、_-I_が有効でない場合、検索では大文字と小文字は区別されませんが、パターンに大文字が含まれていない場合に限ります。

_-I_をLessのデフォルトオプションにすると、manページでもすべての検索で大文字と小文字が区別されなくなります。

Man-dbは、LESS環境変数を介して追加のオプションをページャーに渡します。Lessはコマンドラインオプションと同じように解釈します。設定はコンパイル時にハードコードされ、_-i_で始まります。 (Man-db 2.6.2の時点で値は_"-ix8RmPm%s$PM%s$"_です。_P…$_の部分はプロンプト文字列です。)

Manページでの検索で大文字と小文字を区別したくない場合、または常に大文字と小文字を区別しないようにしたい場合は、man-db自体でこれを構成する方法はありません。 Man-dbがコンテンツを現在の値の前に付加するため、manのエイリアスまたはLESS環境変数を操作するラッパースクリプトを作成できます。

_alias man='LESS="$LESS -I" man'
_

_-i_オプションをオフにして、manページでデフォルトで検索で常に大文字と小文字を区別するようにするには:

_alias man='LESS="$LESS -+i" man'
_

LESS環境変数を設定してMANLESSに別の値をハードコーディングすることもできますが、そうすると、manLESSを次のように設定します。 MANLESSの値を指定すると、カスタムタイトル行(「マニュアルページfoo(42)」)やその他の機能(特に、太字と下線の書式設定には_-R_を含めるようにしてください)が失われます。 )。

これは、less-i(コマンドラインスイッチ)の「大文字と小文字を区別しない」モードの仕組みです(つまり、大文字の場合は引き続き区別されます)。 Gillesが指摘しているように、これを使用するとman-dbにコンパイルされます。

Gilles AnswerWRTでエイリアス+-iまたはカスタムMANLESSを設定する方法に加えて、manページが-iで開かれると、厳密な大文字と小文字の一致を切り替えることができます(これにより、オンとオフを切り替えます); 「検索ではケースが重要です」という小さなメッセージが表示され、xxにのみ一致し、XXにのみ一致します。

Man-dbのmanには-Iスイッチがありますが、これはmanページの検索に適用されます。たとえば、デフォルトではman BASHはbashマニュアルページを提供しますが、man -I BASHはしません。

1
goldilocks

xを使用するときに、小文字のxを小文字のmanのみに一致させる方法はありますか?」

これが1つの方法です

man -Tascii manpage |less

ひどい詳細はわかりませんが、roff処理はマークアップを実行しており、ページャーはマークアップされたテキストを表示しているにもかかわらず、マークアップされていないテキストと一致しているようです。
非常に紛らわしいですが、nroffの第一人者がパイプラインを説明できることを願っています。

0
bsd