Vimはファイルを端末に印刷して終了します。

Vimはファイルを端末に印刷して終了します。

vimで構文強調を設定できるようにする(または追加のツールを必要としないように)、vimでこれを実行したいと思います。したがって、使用するにはをcat file | <some_sh_tool>使用しますvim +"some_opts" +"..." +q file。問題は、vimはシャットダウン時に前の画面を復元しますが、発生しないいくつかのリモートアクセスツールを使用するため、デフォルトでは構文強調機能を持つcatのように機能することです。

では、これは可能ですか?

編集する

もっと考えてみると、本当にすごいことだと思います。構文の強調に加えて、行番号、スペース、改行などのファイルの内容を表示するときにvimの他の機能を使用できます。特にスクリプトではvimがどこにでもあるのでさらにそうです。

答え1

この端末の代替画面を有効にするコードを空の文字列として指定して、代替画面を無効にできます。例:

vim --cmd 'set t_ti= t_te=' ...

しかし、もっと必要があることがわかります。努力する:

vim --cmd 'set t_ti= t_te=' +redraw +q file

はじめに。

答え2

私は次のパッケージで必要なものを見つけました。ウィムフォグ

vimcatユーティリティと一緒に提供されます。

答え3

一度見てみたいかもしれませんenscript- 複数言語の構文強調スタイルがあり、フィルタとして使用するように設計されており、出力はANSIエスケープ形式のシーケンスに限定されません。 PostScript、HTML、またはRTFも出力できます。

答え4

私に合ったものを見つけました。

すべてのvim設定を使用して、「file.py」ファイルの内容をSTDOUTとして印刷したいとします。私は次のように書くことができます:

vim --not-a-term -T ansi +silent\ %print +redraw +quit file.py

短くはありませんが効果的です。 「less」を介してパイプするには、次のように-Rスイッチを使用することをお勧めしますless

vim --not-a-term -T ansi +silent\ %print +redraw +quit file.py | less -R

(テキストの間隔が異常な場合は、端末のサイズを変更する必要があります。)

追加の設定/コマンドを追加するには、-T ansiパラメータ+silent\ %printの間に追加します。たとえば、 を実行するには、次の手順を実行し:set listます。

vim --not-a-term -T ansi +set\ list +silent\ %print +redraw +quit file.py

または:

vim --not-a-term -T ansi "+set list" +silent\ %print +redraw +quit file.py

(「set list」にはスペースが含まれているため、スペースをエスケープするか、「+set list」コマンドを引用符で囲む必要があります。)

関連情報