Vim-ウィンドウ内のオープンバッファの動的リスト


22

Vimでオープンバッファのリストを管理するいくつかの方法を調査しましたが、そのうちのいくつかは非常に優れていますが、私が望む方法で動作するように見えるものはありません。私が望むもののようなものは存在しない可能性が非常に高く、尋ねることを傷つけることはできません。

私はGVimでNERDTreeを使用してきましたが、情報を細い左側のウィンドウに入れるというアイデアが気に入っています。環境をどのように見せたいかを示す便利な図をまとめました。

|--------|---------------------------------------|
|        |                                       | 
|        |                                       | 
|NERDTree|           Windows                     | 
|        |                                       | 
|        |                                       | 
|        |                                       | 
|--------|                                       |
|        |                                       | 
|        |                                       | 
|  List  |                                       | 
|   of   |                                       | 
|  Open  |                                       | 
| Buffers|                                       | 
|        |                                       | 
|        |                                       | 
|--------|---------------------------------------|

だから私の質問は次のとおりです。現在開いているバッファのリストを維持し、NERDTreeのようなウィンドウ内でそのリストから選択/編集/閉じるためのvimネイティブまたはプラグイン対応の方法はありますか?

このアプローチはVimの物事のやり方とは矛盾する可能性があることを理解しています。Vimセッションで複数のファイルを管理する方法について何かが足りないと感じた場合は、提案をコメントに残してください!


また、オタクツリーペインの下(または上)にバッファリストがあることを探しています。良い解決策を見つけた場合は、この投稿を更新することを忘れないでください(ただし、とにかくお問い合わせいただきありがとう
ござい

回答:


7

vim.orgのプラグインリポジトリを検索しましたか?ありますプラグインを切り替え、バッファの数十あなたのような中から選択するためのBufferGatorまたはSelectBufが。あるいは、それらのほとんどはVim wikiの素晴らしいリストにまとめられています


質問の最後の部分で言及したように、そのようなシステムは誰の好みにも合っていません。

これらのすべてのメニュー、ボタン、リストを常に開いているのが嫌いです:開いているバッファのリストは、実際に別のバッファにジャンプする必要がある場合にのみ有用で、そのようなリストを開いたままにしておくと、スペースが無駄になります。同じことは、スーパーチャージされたステータスラインにも適用できます。

同じプラグインを使用してバッファをすばやく切り替え、現在編集中のファイルの周りのファイルシステムをすばやく探索します。,f(files)または,b(buffers)で呼び出され、終了するとウィンドウが消えます。パーフェクト。他に 似たような プラグインがありますので、そのアイデアが気に入ったらすべて試してください。

編集

バッファーを切り替えて、CtrlPのアニメーションGIFを実際に追加する必要があります。

CtrlPを使用したバッファーの切り替え

ENDEDIT

ネイティブ:sb <Tab>もかなりきれいですが、あまりセクシーではありません。あいまい一致はサポートしていませんが、いくつかの大きな利点があります。組み込みで:e <Tab>:vs <Tab>などのように機能します。


ご提案ありがとうございます。BufferGatorとSelectBufは、どちらも少なくとも私が望んでいる機能に近いように見えますが、動作させるには微調整が必​​要な場合があります。スペースの無駄遣いに関する懸念は間違いなく感謝していますが、現在のユースケースでは、一度に1つのGVimインスタンスを数時間開いており、必要に応じてファイル間をホッピングします。このような状況では、永続的なバッファリストが非常に役立ちます。ただし、バッファ管理に対するより一般的なVimのアプローチについては、少し時間をかけて学習します。
-asfallows

大きなモニターで作業していると思います。どのシステムを選択しても、1。バッファリストに切り替える、2。バッファを選択する、3。バッファリストが既に表示されているかどうかに関係なく、キーを押してジャンプする必要があります。したがって、「オンデマンド」バッファスイッチャーの使用は、バッファリストを開いたままにするのと同じくらい効果的であり、スペースを節約します。
ロメインル

私は間違いなくその推論に感謝します。だからこそ、ここで説明している正確な構成が不可能な可能性についてあまり心配していないのです。永続的なバッファリストの唯一の主な利点は、開いているバッファをチェックするのに0キーストロークしかかからないことです。(そして、はい、私はかなり大きなモニターで作業します。)
12

@ romainl、vimrcコマンドを使用し,bてctrlpで検索バッファーにマップしましたか?
積雪

1
@snowbound、FWIWしばらく前にCtrlPまたは他の同様のプラグインの使用をやめました。とにかく、私のコマンドはでしたnnoremap ,b :CtrlPBuffer<CR>
ロメインル

5

MiniBufExplorerを強くお勧めしますminibufexplorerの代替品もご覧ください

スクリーンショット


返信いただきありがとうございます。MiniBufExplorerを見つけました。MiniBufExplorerは非常に優れているように見えますが、バッファの管理方法について説明した条件を満たしていません。私がやろうとしていることを行う良い方法がないことが判明した場合、またはそれが正しい方法ではないと判断した場合、MBEは次に試すことのリストでかなり高いです。
アスファローズ

1
満たされない唯一の条件は、リストが左側にあることです。私は同意MiniBufExplorerします、一番上にあります(それは左ほど多くのスペースを無駄にしません)。または、あなたの要件を誤解したかもしれません。
マルコ

現在のセットアップでは、NERDTreeは常に開いていますが、必ずしも完全な垂直ではないため、図示のように左側にバッファのリストがあることは、実際にはスペース使用量の改善です。そのスペースをバッファリストと共有するとよいでしょう。これが私がGVimを使用する方法であり、コンソールでVimを使用している場合、永続的な左列が必要ないことは注目に値します。私のコンソールでのVimの使用のほとんどは、「ファイルを開き、クイック編集を行い、vimを閉じる」です
-asfallows

1

winmanagerプラグインを使用してそれを正確に行う方法があります。このスクリーンショットでは、NERDTreeとMiniBufExpl(github:techlivezheng / vim-plugin-minibufexpl、最新のコミットatm 349a9fbb)の両方のプラグインを同じ垂直分割で組み合わせ、F4で切り替えます。理論的には、このソリューションは他のプラグインの組み合わせでも機能するはずです。

私の.vimrcの例

"{{{MiniBufExpl config
g:miniBufExplVSplit = 20 "垂直に開く
let g:miniBufExplSplitToEdge = 0 "前のウィンドウに対して相対的に開く(NERDTree)
"}}} MiniBufExpl config

"{{{winmanager config
"プラグインを登録する
let g:NERDTree_title = 'NERD Tree'
let g:MiniBufExpl_title = 'MiniBufExpl'

"レイアウトを設定する
let g:winManagerWindowLayout = 'NERDTree | MiniBufExpl'

"NERDTreeのハンドラー
関数!NERDTree_Start()
    exec 'NERDTree'
最終機能

"MiniBufExplのハンドラー
関数!MiniBufExpl_Start()
    exec 'MBEOpen'
最終機能

"スプリットをF4に切り替えるマッピング
nmap <F4>:WMTトグル
"}}} winmanager config

問題点:

  • NERDTreeは、winmanagerが作成するバッファーを使用しませんが、独自に開きます...
  • ...したがって、winmanagerバッファは未使用のままです
  • MiniBufExplは、バッファー間をジャンプするときに適切に更新されません。

私が達成した振る舞いは完璧とはほど遠いですが、良いスタートです。

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