3

AppendModeline関数を使用して、vim ファイルにモードラインを追加しています。

" バッファの最後の行の後にモードラインを追加します。
" LaTeX で '​​%%s' モードラインを処理するには、printf() の代わりに代用() を使用してください
"ファイル。
関数!AppendModeline()
  let l:modeline = printf(" vim: set ts=%d sw=%d tw=%d :",
        \ &tabstop, &shiftwidth, &textwidth)
  let l:modeline = replacement(&commentstring, "%s", l:modeline, "")
  append(line("$"), l:modeline) を呼び出す
終了機能

でも伸ばしたい。expandtabの現在の値の追加をサポートする必要があります。&expandtab
を使用すると、現在の値の数値表現を取得できます。しかし、set et=0のようなものは vim ではサポートされていません。[no]expandtab に設定する必要があります。&expandtab をテストして、 l:modelineにexpandtabまたはnoexpandtabを追加する必要がありますか、それとも現在の値の文字列表現を取得する方法はありますか? 展開タブを設定しますか? [no]expandtabを示していますが、これをスクリプトで使用する方法がわかりません (または可能かどうかもわかりません)。

4

1 に答える 1

4

はい、これを行う必要があります。:redir出力をキャプチャすることは可能ですが、ベース:redirのソリューションは、値を取得するための正規表現で少なくとも 4 行の長さです。を使用する&etと、はるかにクリーンになります。

… printf("… %set …", …, &expandtab ? '' : 'no', …)

注:の後に(の略)%setが続きます。ここでの言葉は単なる偶然です。%setexpandtabset

于 2012-12-21T20:32:59.463 に答える