別のバッファのクローンとして新しいバッファを作成するにはどうすればよいですか? つまり、内容は同じである必要がありますが、これらは最終的に 2 つの異なるバッファーである必要があります。これは将来のプラグインで必要になるため、マッピングの観点からではなく、プログラムによる方法に興味があります。
1 つのバッファーをヤンクしてから別のバッファーにフォーカスを移して貼り付けるなどの推奨事項は、ここでは機能しません。これは、ユーザーの以前のヤンクを上書きし、プラグイン メソッドの呼び出し後にユーザー エクスペリエンスを台無しにすることを意味するためです。私はそれをできるだけ卑劣にする方法を探しています。
さらに、おまけとして、この新しいバッファは非表示で作成する必要があります。これは、処理されたデータをすばやく保存してすぐに破棄するために使用されるためです。できるだけ早く閉じても(Vimが画面を再描画するため)迷惑な点滅が発生するため(/コンボなど) 、スプリットなしで行うことが望ましいです。また、複製したいバッファに名前があると仮定することもできません。:new
:close
ありがとうございました。
結論
いくつかのテストでは、データを
:put=getbufline(...)
は最速の方法であり、ユーザー エクスペリエンスをまったく妨げないため、最も安全な方法です。
誰もこれについて答えませんでしたが、分割なしで新しい隠しバッファを作成する関数を見つけることができました。つまり、ウィンドウなしでバックグラウンドで静かに作成されます。詳細については、 を参照してください:h bufnr()
。例:
let buffer_number = bufnr('My New Hidden Buffer', 1)
さらに、この呼び出しは暗黙的に次のことを行います。
let &l:buflisted = 0
この新しく作成されたバッファでは、 からも隠され:ls
ます。これはまさに上記の要件を満たすために必要なものです。
その結果、まばたきや:new
/:close
コンボのようなユーザーへの視覚的な刺激はありません...いくつかの汚い仕事のための真に隠されたバッファです。