2

Vimに空の行を文字列として表示したいのですが###、次のようになります。

空の行の望ましい表示

>---タブのcharを。に置き換える方法と同じように機能させたいと思いますset listchars=tab:>-。実際に挿入するのではなく、そのように表示するだけです。

また、私の端末のサイズに適応できれば素晴らしいと思います。

4

1 に答える 1

6

折りたたむことで、目的の効果を得ることができます。バッファの空の行を含む1行の折り畳みを個別に作成すると、それらはすべて折り畳まれたものとしてマークされます。残っているのは、それに応じて強調表示をカスタマイズすることだけです。

まず、折り目を自動的に作成する必要があります。この目的のために、フォールディングをexprメソッドに切り替えてfoldexprから、空の行に対してのみゼロ以外の値に評価するオプションを設定できます。

:setl foldmethod=expr
:setl foldexpr=empty(getline(v:lnum))

トリックを解決するために次に行うべきことは、折り畳みの強調表示をトリガーするために、それらの折り畳みを自動的に閉じることです。

:setl foldminlines=0
:setl foldlevel=0
:set foldclose=all

最後に、折り線でカスタム文字を繰り返すには、閉じた折りに表示されたテキストを空にして、塗りつぶし文字を変更します。

:setl foldtext=''
:set fillchars+=fold:#

便宜上、上記のコマンドを1つの関数に組み合わせると、次のようになります。

function! FoldEmptyLine()
    setl foldmethod=expr
    setl foldexpr=empty(getline(v:lnum))
    setl foldminlines=0
    setl foldlevel=0
    set foldclose=all
    setl foldtext=''
    set fillchars+=fold:#
endfunction

もちろん、このトリックの欠点は、折り畳みの通常のアプリケーションに干渉し、ユーザーが他の目的で折り畳みに大きく依存している場合、変更せずに簡単に使用できないことです。

于 2012-09-09T05:56:40.563 に答える