rcファイルにカスタムの「設定」コマンドを作成して、モードラインから呼び出すことはできますか?


10

私が最近質問したところ、:set vimモードラインではパラメーター以外のものを渡すことはできないことがわかりました。セキュリティの問題は理解していますが、これを回避する方法がないのではないかと思います。SOに関する最近の質問符号化規格に準拠するためのパラメータの大きなバッチの設定については、考えて、考え、モードラインからオンまたはオフにすることができ、私のrcファイルで物事の「グループ」を定義することが可能であることが私を得ましたか?

疑似コードはありませんが、設定されたパラメーターからトリガーされる関数を作成する方法はありますか?

set_function! codestyle()
    if &1 == 'psr-2'
        set ts=4
        set sw=4
    endfi
    if &1 == 'drupal7'
        set ts=2
        set sw=2
        iab D8 Drupal 8
    endif
endset_function

これは、次のようなモードラインによってトリガーされます。

# vim: codestyle=psr-2

これは、いくつかの点でファイルタイプマッチングに似ていますが、手動オーバーライドを許可します。また、他の事前定義された方法で環境をセットアップし、vimでファイルが他の任意のコマンドを実行するというセキュリティの問題を回避しながら、よりカスタマイズされた環境を可能にします。これを行う方法はありますか?


これには、独自のオプションを定義する必要がありますset。AFAIK、これはVimでは不可能です...
Martin Tournoij、2015年

@Carpetsmokerつまり、この質問に対する答えは、vimscriptがラッパーや組み込み関数を拡張できないということですか?
カレブ2015年

回答:


10

いくつかの選択肢があります。

  1. 1つ目:独自の種類のモードラインデコーダー、つまりプラグインを作成できます。これは私があなたの他の質問に与えたものと非常によく似た答えです。

    実際、新しいvimオプション(で設定できる:set)を追加することはできませんが、新しい変数を追加することはできます。また、標準のモードラインを使用してvimオプションを設定する以上のことはできません。

  2. 2番目の可能性:コールバック機能を介してlet-modelineを悪用して、関数を呼び出すことができます。または(autoload?)プラグインで関数を作成し、ファイルに次の内容を含めることができます。CodeStyle().vimrc

    # VIM: let b:codestyle='psr-2' b:ModeLine_CallBack='CodeStyle'
    

    しかし、これが正確で、local_vimrcのようなプラグインが本当に必要ない場合は、独自のモードラインのようなデコーダーを作成してください。

  3. その場合の3番目の、そしてIMOのより良い選択は、新しいファイルタイプを定義し、'ft'モードラインでこのファイルタイプに設定すること# vim: set ft=php.psr2です:phpグローバルな通常のファイルタイプを(私はこの1つについてはよく分からない)であること、そしてpsr2あなたのコーディングスタイルに対応します、特殊なファイル形式であること。ftplugin / psr2.vimとftplugin / drupal7.vimの2つのftpluginsを定義する必要があります。これらの場所には、:setlocal(ではなく:set)呼び出しを配置し​​ます。


6
オプション3に賛成。これは、意味的に最も適切でVimに適したアプローチだと思います。
tommcdo 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.