2012-03-29 17 views
5

私はVimでc-supportを使用しています。その特徴の1つは、自動comment expansionです。再起動せずにvimプラグインを一時的に無効にする

外部エディタからVimにコードを貼り付けるときに、コメントが拡大されます(これは二重コメントを与え、貼り付けをうんざりさせます - 例えば以下を参照)。プラグインを無効にして貼り付けてから再度有効にしたいのですが、 Vimを再起動する必要はありません。これが可能かどうかは分かりません。

SO質問hereherehereはすべてのプラグインを無効にする方法を説明しますが、それらはすべて私の.vimrcまたは類似してVimの、混乱を閉じて、再起動する私を必要とします。私がVimを終了しなければならない場合は、cat file1 >> myfile; vim myfileも同様に内部的に行をシフトすることができます。

がリニューアルなしでVimを実行中に、プラグインを無効にすることが可能であり、好ましくは私はホットキーtoggle-pluginをマッピングすることを可能にする方法で、(その再調達~/.vimrcは大丈夫です、それは私が想像するホットキーの[にマッピング可能だが、避難所まだ試したことがありません))?


めちゃめちゃコメント:


/* 
* * Authors: 
* * A Name 
* * 
*  * Copyright: 
*  * A Name, 2012 
*  */ 

EDITは:それは判明することができます:set paste:set nopaste(う、:help pasteを引用した、 "予期しない影響を避ける[しばらく貼り付け]"(コメントを参照してください)
しかし、元の質問に従ってプラグインを無効/有効にできるかどうかはまだ分かりませんので、私は質問を開いたままにしておきます。

+2

貼り付け前に ':set paste' *を貼り付けておきましたか?*:貼り付け後に':set nopaste' *を実行しましたか? – romainl

+0

Nope。私は存在していたことを知らなかった - それは多くの助けになる。 :) – simont

答えて

1

プラグインソースを変更しない限り、これを行う一般的な方法はありません。いくつかのプラグイン(私のようなもの)はこの機能を追加することができます(フレームワークには「アンロード」機能がありますが、一時的に無効にするのではなく、vimを再起動せずに更新するために主に使用します)。あなたが間違いなく行うことができるのは、現在のvimの状態を保存する各ソースプラグインファイルに関数呼び出しを追加することです(プラグインがロードされた後にこれを行う何かも存在します)。プラグインの最後にある関数)、VimEnterFileTypeSyntaxイベントの可能性があります。

function s:Execute_I_do_not_expect_function_with_this_suffix_to_be_defined_by_the_plugin_so_I_add_it_to_avoid_name_collisions(s) 
    execute a:s 
endfunction 

:次に、あなたはこのように、各プラグインでプラグインとs:Execute関数の定義に行われた変更を元に戻します機能を持っている必要があります。これは、ソーススクリプトのコンテキストでコード行を実行するために必要です。保存する必要がある「状態」と私は

  1. マッピング
  2. コマンド
  3. サイン
  4. 機能
  5. メニュー
  6. イベント(オートコマンド)
  7. を構文(空である可能性が高いことを意味しますプラグイン実行前)
  8. オプション
  9. 一部のvim、すべてのグローバルバッファ、タブ、ウィンドウ変数
  10. //スクリプトローカル変数。ここでは簡単ですが、スクリプトスクリプトの開始時にローカルスコープが空であり、無効にするときに空にするだけです。

各項目について、プラグインによって行われた変更を元に戻すことは可能ですが、コードするのは簡単ではありません。マッピングへの<script>引数の存在は、異なる動作を持っていますが、noreの存在で区別できません。

スクリプトを作成したい場合は、スクリプトがソースになっていれば、コードが再起動されることを忘れないでください。

また、SourcePreイベントにも注意してください。すべてのプラグインに自動的にラインを追加するのに役立ちます。

変更することができ、保存され、簡単に、またはまったく復元することはできませんより多くの場所があることを忘れないでください:ファイルシステム、通訳の状態は、プラグインのバッファを開くなど

5

挿入は「:設定貼り付け」コードを貼り付けます。それ以降は挿入しないでください。

+2

貼り付けの代わりにノーパス – gayavat

関連する問題