マニュアルページに行番号を追加するには?

マニュアルページに行番号を追加するには?

Linuxでページにman行番号を追加するには?infoマンページを閲覧するために行番号を使用したいと思います。マニュアルページをファイルに書き込んでVimで開くこともできますが、より良い方法はありますか?

答え1

からman man

   -P pager, --pager=pager
          Specify  which  output  pager to use.  By default, man uses less
          -s.  This option overrides the $MANPAGER  environment  variable,
          which  in turn overrides the $PAGER environment variable.  It is
          not used in conjunction with -f or -k.

          The value may be a simple command name or a command  with  argu-
          ments, and may use shell quoting (backslashes, single quotes, or
          double quotes).  It may not use pipes to connect  multiple  com-
          mands;  if  you  need that, use a wrapper script, which may take
          the file to display either as an argument or on standard input.

lessしたがって、行番号フラグを使用してポケットベルを指定できます-N

man -P "less -N" 

問題は、manページ幅が端末の列数に基づいて設定されますが、行番号に応じて行の先頭に追加のless文字(スペース+行番号)が追加されるため、出力形式は次のとおりです。ちょっと厄介です。

$ man -P "less -N" man

結果:

      1 MAN(1)                        Manual pager utils                        M
      1 AN(1)
      2 
      3 
      4 
      5 NAME
      6        man - an interface to the on-line reference manuals
      7 
      8 SYNOPSIS
      9        man  [-C  file]  [-d]  [-D]  [--warnings[=warnings]]  [-R encoding
      9 ] [-L
     10        locale] [-m system[,...]] [-M path] [-S list]  [-e  extension]  [-
     10 i|-I]
     11        [--regex|--wildcard]   [--names-only]  [-a]  [-u]  [--no-subpages]
     11   [-P
     12        pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-jus
     12 tifi-
     13        cation]  [-p  string]  [-t]  [-T[device]]  [-H[browser]] [-X[dpi]]
     13  [-Z]
     14        [[section] page ...] ...

したがって、環境変数を変更して、数字からMANWIDTH7文字(行プレフィックスの幅)を減算して、ページの幅をより短くフォーマットすることができます。lessCOLUMNSman

$ MANWIDTH=$(( $COLUMNS -7 )) man -P "less -N" man

結果:

      1 MAN(1)                     Manual pager utils                     MAN(1)
      2 
      3 
      4 
      5 NAME
      6        man - an interface to the on-line reference manuals
      7 
      8 SYNOPSIS
      9        man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L
     10        locale] [-m system[,...]] [-M  path]  [-S  list]  [-e  extension]
     11        [-i|-I]  [--regex|--wildcard] [--names-only] [-a] [-u] [--no-sub-
     12        pages] [-P pager] [-r prompt] [-7]  [-E  encoding]  [--no-hyphen-
     13        ation]   [--no-justification]   [-p   string]  [-t]  [-T[device]]
     14        [-H[browser]] [-X[dpi]] [-Z] [[section] page ...] ...

答え2

マンページを開き、クリックして-N入力します。 (-、次ShiftN、次Enter

例えばman man::

  1 MAN(1)                                             Manual pager utils                                             MA      2 
  3 NAME
  4        man - an interface to the system reference manuals
  5 
  6 SYNOPSIS
  7        man [man options] [[section] page ...] ...
  8        man -k [apropos options] regexp ...
  9        man -K [man options] [section] term ...
 10        man -f [whatis options] page ...
 11        man -l [man options] file ...
 12        man -w|-W [man options] page ...

行番号の削除-n Enter

行の重複を避けるためにMANWIDTH変数を設定してください。LESS変数は-N行番号を印刷するように設定されます。

MANWIDTH=100 LESS=-N man man

答え3

man長い行を出力し、同様のポケットベルがあるとしますless

特定のマニュアルページ出力の行番号は、man実行されるウィンドウの幅によって行が変わるため、異なる場合があります。

次のようにしてみてください。

COLUMNS=72 man --pager='cat' -s 3 printf | nl -ba > Man.printf

fold出力でこのコマンドを使用することは、manttyに書き込まなくてもCOLUMNS変数を使用して行を区切ってから、すべてのfold単語間隔を単一のスペースにリセットするため、見苦しくなります。

-s 3セクション番号とページ名をパラメータに入れるために、これをスクリプトにラップできます。

答え4

他の人はすでに効果的なソリューションを提供しているので、代替を追加したいと思いました。

次の2つのパッケージをインストールします。

後者は次のアプリケーションをインストールします。batman、マニュアルページに色を追加するだけでなく、行番号も追加します。

以下は出力の例です。

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

(私が入力した命令は非常に簡単ですbatman emerge。)

ご覧batmanのとおり、表示幅は自動的に処理されます。

関連情報