ウィンドウ、分割、およびバッファレイアウトを保存する方法


56

1つのリポジトリで作業しているいくつかのタスクがあります。それらに取り組むための「ワークスペース」を作りたいです。

1つの「ワークスペース」または「バッファレイアウト」には、作業する必要があるすべてのファイルが、必要なレイアウトで開いています(ウィンドウを分割するには^w+v^w+sを使用します)。

次に、別のタスクの作業を開始するときに、現在のレイアウトを保存し、別のタスクに移動したいのですが、以前のレイアウトに戻れるようにしたいと思います。

これを達成する最良の方法は何ですか?

回答:


48

vimを使用:mksessionして各「ワークスペース」を別のファイルに書き込み、を使用してセッションをvim -S session_file再度開くことができますが、プラグインを使用する場合は、Startifyプラグインがまさにこの種のシナリオに必要なものであることがわかります:https ://github.com/mhinz/vim-startify

vimとmccvimでセッションを管理するのに非常に役立ち、vimを開いたときに最近のファイルのリストも提供します。それはあなたのために適切な作業ディレクトリに自動的に変更されます。また、ファイルをstartifyオープニング画面に固定することもできます。これは、.vimrc


23

tpopeのvim-obsessionプラグインを使用して、セッションを簡単に管理できます。これはVimの組み込みのラッパーのようなものですが、mksession他にも便利な機能があります。

コマンドを指定すると、現在のセッション(またはバッファーレイアウト)を保存できます:Obsess。引数を指定しない場合Session.vim、デフォルトで呼び出されるセッションファイルが書き込まれます。

セッションをリロードするには、を使用するvim -S <session-name>:source <session-name>、すでにVim内にいる場合。

良いことは、Vimを終了するたびにセッションを保存する必要がないことです。プラグインによって自動的に管理されます。

vim-obessionのもう1つの非常に重要な機能は、オプションとマップを保存しないことです。mksession現在のオプションとマップをキャプチャします。これらは、バッファレイアウトを保存するだけの場合は発生しません。また、プラグインが更新されるときなどに干渉します。


複数のセッションファイルを管理できますか?
ネブリル

1
@ネブリルそれができます。セッションを保存するときは、形式を使用します:Obsess <session-name>。リロードするときに必要な特定のセッション名を使用します。
thameera

Obsessionは垂直分割を覚えていなかったのに対し、mksessionは覚えていました。私は今夜​​このことだけをいじりましたが、私が見逃した何かがありますか?
baxx

1
@baxx Obsessionはあらゆる種類のスプリットを記憶します。たぶん、vimを終了する前に分割を閉じましたか?
thameera

2
@baxxこれは古いですが、これが誰かに役立つ場合に備えて、メモを追加したかったです。強迫観念がスプリットを忘れているように見える理由は、おそらくvimを残すためにすべてのスプリットを終了しているためです。つまり、vimを閉じたときの最終状態は最後のウィンドウになります。これが強迫観念の保存です。私はタブで同じ問題を抱えていましたが、答えは:qaを使用して開いているすべてのウィンドウ、分割、タブを終了することです。誰かがより良いオプションを持っている場合はお知らせください。
TC0072

12

サイドノートとして、私はさらに別のプラグインdhruvasagar / vim-prosessiontpope / vim-obsessionの拡張として構築し、それをさらに強化して、中央リポジトリでデフォルトでvimセッションを作成および管理することをさらに強調たいディレクトリごとに設定ごとに、ディレクトリで引数なしでvimを起動すると自動的にロードされます。また、便宜上、異なるセッション間で切り替えることができます。


これはすごいですね。元に戻すファイルやバックアップファイルに似たフォルダ内のセッションファイルを管理して、私のプロジェクトを混乱させるスワップファイルでプロジェクトが乱雑にならないようにすることができれば。
dragon788

1

vim-workspaceプラグインを試すことができます。そのセッション管理機能は自動化され、現在の作業ディレクトリを対象としており、非常に簡単です(ToggleWorkspace一度実行するだけで済みます)。

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