Vimでマニュアルページを見る

Vimでマニュアルページを見る

Bashに関数を書いて確認しました。男性Vimのページ:

viman () { man "$@" | vim -R +":set ft=man" - ; }

これはうまくいきます。存在しないマニュアルページを渡すと、唯一の問題が発生します。マンページは存在しませんが、まだ空のvimバッファで開くと印刷されます。
そのため、エラーコード(16ここにあります)を確認し、ページがない場合は終了するように機能を変更しました。変更された関数は次のとおりです。

viman () { man "$@" | [[ $? == 16 ]] && exit 1 | vim -R +":set ft=man" -  ; }

しかし今は効果がありません。

マニュアルページが存在しない場合はプログラムを終了し、そうでなければvim

答え1

これを試してみてください:vimが正常に起動した場合はman出力をキャプチャします。

viman () { text=$(man "$@") && echo "$text" | vim -R +":set ft=man" - ; }

答え2

戻りコードを確認するアイデアは気に入っていますが、manパイプを通してテストすることはできません。 2回しか実行できませんman

viman () { man "$@" >/dev/null 2>&1 && man "$@" | vim -R +":set ft=man" - ; }

man ... | vim ...最初の呼び出しが成功した場合にのみ実行されますman

答え3

マンページを表示したいコマンドを呼び出すMANPAGERために使用できる環境変数があります。manこれの利点は、man直接呼び出すことができ、マニュアルページが存在しないとポケットベルがまったく実行されないことです。

したがって、次のラッパースクリプトは次のようになります~/bin/vimman

#! /bin/sh
vim -R +":set ft=man" -

シェル初期化ファイルのどこかに:

export MANPAGER="$HOME/bin/vimman"

man fooVimから直接マンページを実行できます。

man(使用されているコマンドに応じて、次のこともできます。

export MANPAGER='vim -R +":set ft=man" -'

ラッパースクリプトを直接使用する代わりに。 )


十分に新しいVimがある場合は、この--not-a-termオプションを使用してVimがstdinがTTYではないと文句を言うのを防ぐことができます。


恥ずかしいプラグ:私が書いた小さなプラグインVimをマニュアルページとして使用すると便利です。

答え4

に基づいてこの回答バッファに何もない場合、vim が起動して終了します。欠点は、vim起動時に画面が「点滅する」ことです。また、manページが見つからない場合は終了コードを設定しません。

viman () { vim -R +':set ft=man|exe !search(".")?"quit!":""' <(man "$@" 2>/dev/null); }

manこれは、ページの存在中にページを2回ロードしないという点で、Jeff Schallerの答えが改善されたことです。また、vim前の例のように不必要にロードされません。そしてそれするmanページがないときに終了コードを設定します。

viman () { man -f "$@" >/dev/null 2>&1 && vim -R +":set ft=man" <(man "$@"); }

どちらの例も、「Vim:Reading from stdin ...」メッセージを避けるためにBashプロセスの置き換えを使用します。

ページを変数としてロードしません。

関連情報