太字または下線付きのテキストを検索するには?

太字または下線付きのテキストを検索するには?

太字または下線付きのテキストを検索するには?これは、強調表示されているキーワードを検索するときに便利です。たとえば、次の抜粋からbash(1)

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

readまたは、検索したいかもしれませんが、timeout検索するだけで無視すべき無駄な結果が何十もありますn。これを減らすために使用できるいくつかの「トリック」(例:検索<Space>read<Space>read \[)がありますが、これがすべてのマンページやキーワードで常に機能するわけではありません。

私はこれに特にこだわりませんless。ただ別のポケットベルを使用してください。lessそれは基本的なポケットベルです。

答え1

VimをMANPAGER創造的な目的に使用します。隠れるそしてiskeyword、次のようにすることができます。

setlocal nowrap
setlocal conceallevel=3
setlocal concealcursor=nvic
exe "setlocal iskeyword+=\b,_"
syntax match BACKHIDE '.\b' conceal contained
syntax match BOLD '\(.\)\b\1' contains=BACKHIDE
syntax match Underlined '_\b.' contains=BACKHIDE
highlight BOLD cterm=bold

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

バックスペースなどのキーがまだ存在するため、クエリを使用すると、次のように*強調表示された単語のみが一致します。

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

man太字は見つかりましたが、man現在行の法線は見つかりませんでした。

そして詳細設定(恥ずかしいプラグ)Vimは快適なポケットベルを提供manしますless

Vimに関連する設定を適用するには:

  1. 環境変数が適切な場合MANPAGER='vim -'
  2. には~/.vim/vimrc少なくとも以下があります。

    set nocompatible
    filetype plugin on
    syntax on
    
    if !empty($MAN_PN)
        autocmd StdinReadPost * set ft=man | file $MAN_PN
    endif
    

    manを使用して実行されたコマンドの場合、MANPAGERマンページ名が環境変数に提供されますMAN_PN。これを使用して、Vimが使用されている時期を検出し、マンMANPAGERページ名を見つけることができます。

  3. 存在する~/.vim/ftplugin/man.vim

    setlocal nolist 
    setlocal buftype=nofile
    setlocal bufhidden=hide
    setlocal noswapfile
    
    setlocal readonly
    setlocal nomodifiable
    
    setlocal nowrap
    setlocal conceallevel=3
    exe "setlocal iskeyword+=\b,_"
    setlocal concealcursor=nvic
    
    nnoremap q :q!<CR>
    nnoremap <Space> <PageDown>
    

    これらのオプションは、変更不可能な読み取り専用スクラッチバッファを生成します(参照:ステージングバッファはどのように生成されますか? Vim Wikipediaから)、スワップファイルを無効にします。次に、この資料の冒頭に記載されている設定を適用し、便宜上いくつかのマッピングを追加します。に示すように、q現在のマンページが閉じて1ページ下に移動します。Spacebarless

  4. 存在する~/.vim/after/syntax/man.vim

    syntax match BACKHIDE '.\b' conceal contained
    syntax match BOLD '\(.\)\b\1' contains=BACKHIDE
    syntax match Underlined '_\b.' contains=BACKHIDE
    highlight BOLD cterm=bold
    

    この資料の冒頭にある構文と強調表示コマンドは次のとおりです。

次の最小設定のみが必要です。

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

一番上の行がどのように強調されているかを見てください。 Vim自体にはマンページ構文の強調が含まれており、col -b -xバックスペースキーを削除すると(たとえばを使用して)これを見ることができます。しかし、この方法で得るよりも失う方がはるかに多いです。なぜなら、Vimは下線や太字で表示されているすべてを知る方法がないからです。

自分の個人設定を使ってモロカイ色スキーム、、、set number航空会社のプラグイン、および次の項目のさまざまな強調表示BOLD

highlight link BOLD Constant

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

そして、ターミナル設定で透明度を有効にしたので(スクリーンショットには表示されません)、色はここに見えるよりも滑らかで満足です。

:set number私のように行番号()を有効にしている場合は、テキスト全体を表示するために横にスクロールする必要がないように、次のMANWIDTH小さい値に設定してください。 80列ターミナルに適しています。私は画面と同じくらい広い(解像度に応じて160〜240列)ドロップダウンターミナルを使用しているので、固定ターミナルは私にぴったりです。COLUMNSMANWIDTH=75MANWIDTH=80

答え2

私が知る限り、きれいな方法はありません。

アンダースコア/太字の表示に対するバックスペースの特別な処理を解除し、エスケープされたlessバックスペースを使用して目的の文字列を検索できます。

  1. 開いていない(例man less:)
  2. OFF 下線 - 特殊(TYPE -U<Enter>)
  3. <C-v>バックスペース文字でエスケープされた検索文字列を入力します。

たとえば、下線付きのテキストの場合は、次のように入力できます。

/_<C-v><C-h>l_<C-v><C-h>e_<C-v><C-h>s_<C-v><C-h>s<Enter>

...下線付きの単語「less」を検索してください。

太字のテキストの場合は、次のように入力できます。

/l<C-v><C-h>le<C-v><C-h>es<C-v><C-h>ss<C-v><C-h>s<Enter>

...太字の単語「less」を検索してください。

私が言ったように、いいえきれい方法。


編集する:Stephaneがコメントで指摘したように、リテラルの代わりにドット(すべての文字と一致)を使用できるため、<C-h>入力が簡単になります。

/l.le.es.ss.s

太字で検索して、

/_.l_.e_.s_.s

下線を引いたものを検索してください。

それでもUNDERLINE-SPECIALを最初にオフにする必要があります。これにより、下線付き/太字のテキストを読みにくくなります。

答え3

太字または下線が引かれている場合は、検索できない可能性があります。現在の

たとえば、テキストが書式設定されたマンページから出てきた場合、カンクン文字は次のように解釈されて生成されます。

  • 太字(各文字がバックスペースと反復によって叩かれすぎる場合)または
  • アンダースコア(すべての文字がアンダースコア文字の上に書かれている場合)

これlessポケットベルのFAQのコメントによると説明する太字/下線を引く。実際の太字/下線を表示するには、ターミナルビデオプロパティを使用します。

レンダリング中に、一般的なポケットベル(たとえば)は保存のみを行うようlessになります。テキスト(太字/下線の部分はテキストではありません)。

テキストエディタでバックスペースパターンを検索できます。たぶん、一部の特定のエディタ(emacsなど)にはこれを行う機能があります。つまり、テキストを検索しますが(太字/下線が表示されている場合)、検索属性として太字/下線を考慮します。

バックスペースキーを読むのはそれほど楽しくありません。これは質問で参照されているマンページの始まりです。

       r^Hre^Hea^Had^Hd [-^He^Her^Hrs^Hs] [-^Ha^Ha _^Ha_^Hn_^Ha_^Hm_^He] [-^H>
       _^Hp_^Hr_^ho_^Hm_^Hp_^Ht] [-^Ht^Ht _^Ht_^こんにちは_^Hm_^he_^ho_^Hu_^Ht] [-^Hu>
              標準入力またはファイルから1行を読む  
              -^Hu^Huオプション>に引数として提供される記述子_^Hf_^Hd
              最初の単語はfirst_^Hn_^Ha_^Hm_^Heに割り当てられ、2番目の単語は>
              2番目の_^ Hn_^ Ha_^ Hm_^ Heなど、残りの単語と対応>
              ing区切り文字は最後の_^Hn_^Ha_^Hm_^Heに割り当てられます。もしあれば >
              名前、残りの名前よりも入力ストリームから読み取った単語

答え4

bashあなたの質問に対する直接的な答えではありませんが、このような大きなマニュアルで文書を見つけやすくするために、次の選択肢を試すことができます。

次のようなさまざまな形式を使用してください。info

ほとんどのGNUソフトウェアマニュアルと同様に、このbashマニュアルはさまざまな形式(man、info、pdf、html...)が派生したtexinfoで書かれています。

マンページは次のとおりです。ページいくつかの理由。フォント書式(インデント、太字、下線、すべて大文字)で唯一の構造が実行される単純なテキストファイルです。

この程度の規模のマニュアルのために一つよりページ

man気づいたけどページ例、実装された情報はい。章、目次、参考文献、インデックスなどの概念を持っており、すべて検索が可能です。

Bashに関するread本の組み込み機能を理解するには、インデックスを調べる必要があります。でをinfo入力してiからread(完了可能)と入力すると、組み込み文書の文書に直接移動されますread,含まれている次のインデックス項目に移動するために使用されますread)。infoで始めることもできますinfo bash read

本で組み込み関数の部分を見たい場合は、インデックスを再確認するか、目次を見ればよい。とinfoと同じです。ig

検索する

HTMLは別のハイパーテキスト形式(infoWebとHTMLよりも優先)であり、大規模なマニュアルに最適です。 Webブラウザは通常一度に1ページしか検索できないため、パフォーマンスが低下しますが、infoオンラインではduckduckgoやgoogleなどの検索エンジンを使用してドキュメントを検索できます。

bash read builtin site:gnu.org

または、索引付けreadを使用できます。https://www.gnu.org/software/bash/manual/html_node/Builtin-Index.html#Builtin-Index

他の形式に基づいてマニュアルページを検索する

次のことを試すこともできます。

  • read行の先頭から検索:/^\s*read
  • また、完全な言葉で:/^\s*read\>/
  • また、目次形式を取得するためにセクションヘッダーのインデントが少ないという事実を利用することもできます。

    ページネーターからインデントされたテキストを非表示にすると、少なくとも4列だけインデントされたテキストを非表示にmostできます。1:od4:od

    less以下を使用して同じ操作を実行できます。これにより、次の内容が表示されます。&^\S&^ {,3}\S

    [...]
    RESERVED WORDS
    SHELL GRAMMAR
       Simple Commands
       Pipelines
       Lists
       Compound Commands
       Coprocesses
       Shell Function Definitions
    COMMENTS
    QUOTING
    [...]
    

    興味のあるセクションに簡単に移動できます(その後、&全文をもう一度表示するにはスペースを入力するか、または:odに入力しますmost)。

関連情報