ウィンドウを閉じずにバッファを閉じる方法は?


23

私は通常、いくつかのウィンドウを開き、いくつかのバッファーを開いたままにします。バッファ内の私のMO探求はに迅速なショートカットを使用しているため:bn:bp、私は私のバッファサーフィンを邪魔から不要なバッファを閉じたいです。

しかし、痛みは、発行される:bd:bw場合には、同様のウィンドウを閉じるの結果は、私は複数のものを開いています。バッファを閉じて(削除して)ウィンドウをそのままにするにはどうすればよいですか?

@pethの答えに触発されたソリューション

:command! BW :bn|:bd#

簡単です。開いているバッファが1つだけではうまく機能しません(ファイルを開く方法によって動作が異なります)が、それは大きな問題ではありません。:)

回答:


12

それは苦痛かもしれません、この質問も#vim(Freenode)で何度も繰り返されます。

一部の人々:b partial<Tab>:bn、バッファを削除せず、の代わりにを使用することを推奨しています。

私が知っている最善の方法は、別のバッファーに切り替えてから:bd#、もちろんマップできることです。

Vim wikiaのウィンドウを閉じずにバッファーを削除するもご覧ください。


このスクリプトは、公式な方法がなければ受け入れたい解決策に見えます。:)
unperson325680

21

私はこれを少し台無しにして、ついに思いつきました:

:bp | sp | bn | bd

キーマッピングのコピー/貼り付けバージョンは次のとおりです。

:bp<bar>sp<bar>bn<bar>bd<CR>

または、.vimrcのコマンド(:Bdで呼び出します):

コマンドBd bp | sp | bn | bd

私はそれをかなりテストしましたが、さまざまな条件で一貫して動作します。最後のバッファで使用すると、新しい空のバッファが残ります。


3
最後のバッファーなど、両方のウィンドウで開いているバッファーを閉じると、分割が失われます。ウィンドウを閉じずに wikiからbdへのスクリプトよりもシンプルであるために+1 。
レイフカールセン

私はvim-bbyeを使用していましたが、あなたの答えははるかに単純であり、スクリプトに依存しません。ありがとうございました。
アンドリューデュフレーネ

4

ウィンドウは、バッファへのビューポートです。(を参照してください:help window。)関連付けられたバッファーなしでウィンドウを作成することはできません。:enewただし、現在のウィンドウの内容を空のバッファで置き換えるなどのコマンドを使用できます。


バッファーの削除後、vimは別のバッファーに切り替えるか、必要に応じて新しいバッファーを開くことができると予想していました。
unperson325680

@progo、それは何らかのスクリプト、つまりプラグイン、または単純なマッピングを必要とします。
クリントPachl


2

別のソリューションを次に示します。

map <C-W>o <C-W>n<C-W><C-W><C-W>c

Ctrl + Wを入力してからoを入力すると、新しいウィンドウが静かに作成され、古いウィンドウが閉じます。カーソルは新しいウィンドウに残ります。多くの肯定的な効果があります:

  1. 元の分割寸法は保持されます。
  2. 空のバッファが新しいスプリットにロードされます。
  3. 元のバッファはまだロードされています。:buffersを使用してリストしてください。
  4. 戻る必要がある場合は、Ctrl + oを押すとカーソルが古いバッファの元の位置に移動します。
  5. 1つのウィンドウのみがロードされた場合でもうまく機能します。

1

問題は、ほとんどの人がvimバッファとwindowがそうでないものだと期待していることだと思います。

人々はvimウィンドウを独自のバッファリストを持つスタンドアロンプ​​ロセスと考える傾向がありますが、残念ながらそうではありません。vimウィンドウは、そのバッファーのビューポートにすぎません。
したがって、あなたの問題や、異なるウィンドウが同じバッファリストを共有しているため、ウィンドウAのバッファ1を編集できず、ウィンドウBがそのバッファリストのバッファ1を無視するという問題など、多くの問題が発生します。

私の解決策は、vimの2つのインスタンスを開いて、希望する種類のvimウィンドウを作成できるようにすることです。タイルWMで最適に機能します。


1

通常、任意のバッファーでメニューを開きます。これにより、左ペインのメニューが開き、そこでカーソルがアクティブになります。そこで、アクティブなバッファに切り替えて、バッファを削除します。

その後、メニューから他のファイルを開くことができます。

私の手順は次のとおりです。

:Vex

ctrl + w + w

:bd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.