1. ホーム

[解決済み】なぜVimのエキスパートはタブよりもバッファを好むのでしょうか?[クローズド]

2022-04-15 18:31:22

質問

私は 理解する バッファを使用します。同じタブで3つのファイルを開いてウィンドウを閉じると、次にそのうちの1つのファイルを開いたときに、変なスワップファイルが残っていて厄介なメッセージを出していることに気づき、大概はイライラする。しかし、何度も何度も、これらのものは私が見逃している生産性の涅槃であり、タブは平民が使うために作られたのだと読みました。

そこでVimのエキスパートであるあなたにお尋ねします:タブよりもバッファを使うことの利点は何ですか?深い違いがあるとは思えないのですが、私はVimの操作については初中級者レベルだと考えています。ということです。 :ls :b# よりもはるかに高速です。 gt を使い回しているのでしょうか?もっと深いところにあるような気がします。

どのように解決するのか?

ZyXが#vimで言っていたように、この質問は次のように聞こえます。 "なぜVimの専門家は暖かいものよりも美味しいものを好むのでしょうか? .

バッファはファイルのプロキシとして、タブページはワークスペースとして使用します。バッファとタブページには異なる目的があるので どちらかを優先することは、まったく意味がありません。

バッファとタブの問題は、次のようなものです。 混乱 独立した事実の組み合わせによって引き起こされる。

  1. 最近のテキストエディタやIDEでは、ほとんどのものが タブ メタファは、読み込まれたファイルを表現するために使用されます。このメタファーは、情報システムとして(どのファイルが開かれているか、その状態をユーザーに示す)、インタラクティブなデバイスとして(開いているファイルを操作(並び替え、選択、閉じる...)できるようにする)機能します。多くの制限があるにもかかわらず、タブはどこにでもあり、人々はそれに慣れ親しんでいますし 期待する ということです。

  2. Vim導入 タブページ 7.0 では、ユーザーがアドホックなワークスペースを作成するための方法として、quot;workspaces" を使用しました。その機能、特定のオプション、特定のコマンド、あるいは :help セクションは、タブページをファイルのプロキシとして使用できる、または使用すべきことを示唆しています。

    という名前以外何もない。 勿論、quot;tab pages"の出現は、多くの混乱を招きます。

  3. なし :set hidden はデフォルトで無効になっており、見つけるのも簡単ではありません。Vim では、現在のバッファを書き換えたり、その変更を放棄することなく、別のバッファに切り替えることができません。このオプションを知らない新しいユーザは、Windows を多用するか、最も近い "タブに似た機能であるタブページに切り替えるしかないのです。

特に、ドキュメントを読むのは時間の無駄だという考え方が支配的な時代には、この機能に対する不幸なネーミングチョイスです。

Vim では、タブページはウィンドウの上に構築された抽象化であり、それ自体もバッファの上に構築された抽象化です。新しいレベルになるごとに便利な機能が追加されますが、ワークフローは制限されます。

バッファー方式。

バッファベースのワークフローでは、作業中のファイルは1つの次元に沿って分散されています。バッファを循環させ、バッファ名の一部(補完機能付き)や番号を入力することで特定のバッファにアクセスでき、バッファ間を交互に移動し、簡単にターゲットを設定することができます。基本的に摩擦はありません。

  1. 8つのバッファが開いていますが、表示されているのは1つだけです。

  2. 番号で切り替える

  3. 名前による切り替え。

バッファはVimのファイルプロクシです。ファイルという観点から考えるなら、バッファという観点から考えるのです。

ウィンドウズ方式"。

ウィンドウベースのワークフローでは、バッファだけを使用した場合と同じように、1つの仮想次元に沿ってファイルを分散させることができます。 他の2つの物理的な次元に沿ったものです。しかし、それらの次元が見出されるデカルト空間は、ほぼ完全に分離されています。別のバッファに移動することは、依然として「別のファイルに移動する」ことを意味しますが、別のウィンドウに移動することは、そうではありません。目的のファイルに対応するバッファはそのウィンドウに表示されているかもしれませんが、別のウィンドウ、もしかしたら別のタブページに表示されているかもしれませんし、まったく表示されていないかもしれません。

ウィンドウの場合、開いているファイル間の移動は複雑すぎるか、単純すぎるかのどちらかです。 'switchbuf':sb . ほとんどの場合、バッファにアクセスするという本質的に同じことをするのに、2つのコマンドセットを使うことを余儀なくされるからです。

Windowsは後述するように使い道はありますが、誰のワークフローでもバッファに取って代わるものではありません。

ここではVimのカラースキームで作業しています。2つのウィンドウは同じバッファの異なるビューです。上のウィンドウはカラースキームで使用されているカラーコードの表で、リファレンスとして機能し、下のウィンドウは私が作業しているところです。

Windows はファイル プロキシとして設計されておらず、ファイル プロキシにすることもできません。Windows はコンテナまたはビューポートであり、バッファへの視界を提供するために設計されています。それ以上でも以下でもありません。

タブ道"タブ道"

タブベースのワークフローでは、本質的に、Vim のタブページの本質を完全に無視して、以前のエディタで慣れ親しんだユーザー体験を模倣しようとします。この戦略が一般的に次のようなものであることを少し忘れてみましょう。 非常に を失うことなく、Vimに1ファイル=1タブというパラダイムを守らせることは、Windowsと同様、不可能です。 たくさん 柔軟性があります。

上記と同じファイルを使って作業しても、タブラインは実質的に何のメリットもないのに、かなりのスペースを占めます。私のすべてのファイルとすべてのタブの名前は javascript*.vim ができないので 3gt をクリックすれば、正しい場所にたどり着けると確信できますし、特定のタブに名前でアクセスすることは不可能です。さらに、そのラベルが、役に立たないが完全に論理的な [Quickfix List] ... ファイル/バッファをタブページに関連付ける実用的な方法はないので、基本的にタブページ/バッファ/ファイル間を移動する実用的な方法は1つしか残っていません:サイクリングです。

そして、そう、私のタブラインはたった8個のタブでパンパンです、もし20個あったらと想像してみてください。

  1. 8つのバッファを8つのタブページで開く (誤)

  2. 2つのタスクに対応する2つのタブ (右)

タブページは、1つまたは複数のウィンドウを含むように設計されたquot;コンテナまたはquot;ビューポートであり、それ自体もバッファを含むように設計されたquot;コンテナである。

最後に

Vimの専門家(仮) は、タブよりもバッファを好まない。 彼らはVimを設計通りに使っていて、その設計に完全に満足しているのです。

  • Vim expert"は、2、30、または97のバッファをロードしており、空間分布に対処する必要がないことに非常に満足しています。

  • 2つのファイルを比較したり、現在のバッファの一部で作業しながら別のバッファを参照する必要がある場合、"Vim expert" はウィンドウズを使用します。

  • 現在のビューを変更せずに、プロジェクトの別の部分でしばらく作業する必要がある場合、"Vim experts" は、まったく新しいタブページをロードします。