4

bash スクリプトを使用して、手作業を自動化しようとしています。基本的に、複数の分割、vsplit、およびタブを使用して、1 つの端末ウィンドウ (および 1 つの端末タブのみ) で Vim を使用して複数のファイルを開きます。私が通常手動で行っていることを説明するために、一般的なケースについて説明します。

私は 3 つのタブ (以下、A、B、C と呼びます) を使用し、2x2 レイアウトの各タブで 4 つのファイルを開きます。

bash:~$ cd ~/Workspace/
bash:~/Workspace$ vim A11.m
:vsplit A12.m
:hsplit A22.m
"move cursor to A12.m"
:hsplit A21.m
:tabedit B11.m
:vsplit B12.m
:hsplit B22.m
"move cursor to B12.m"
:hsplit B21.m
:tabedit C11.m
:vsplit C12.m
:hsplit C22.m
"move cursor to C12.m"
:hsplit C21.m

私が作成したいのは、ファイル名と場所がハードコードされたシェル スクリプトで、実行時に上記のすべてが実行されます。誰かがこれを可能にするアプローチを私に提案できますか(可能であれば)? 前もって感謝します!

ps: 私の .vimrc では、:split が現在のファイルの (上ではなく) 下に新しいファイルを開き、:vsplit が新しいファイルを (左ではなく) 右に開くように、いくつかの構成を追加しました。

4

2 に答える 2

8

どう:help mksessionですか?

  1. すべてのタブとウィンドウをセットアップします。

  2. :mks /path/to/mysession.vim現在の設定とレイアウトを に保存します/path/to/mysession.vim

  3. Vim を終了します。

  4. で Vim を開き$ vim -S /path/to/mysession.vim、ワークスペースを復元します。


$ vim -c "so /path/to/mysession.vim"または、Vim が既に実行されている場合は、 を使用してセッションを復元することもできます:so /path/to/mysession.vim

于 2012-09-13T15:43:19.353 に答える
7

これを行うには、少なくとも 4 つの方法があります。

  1. vim -s <(echo $':vsplit A12.m\n:hsplit A22.m\n…')
    
  2. vim -S <(echo $'vsplit A12.m\nhsplit A22.m\n…')
    

    これは @romainl に似ていますが、自分でスクリプトを作成し、bash スクリプト自体以外のファイルを使用しません (単にエイリアスまたは履歴の行にすることもできます)。bash で HERE 文字列を使用することは可能です。

    vim -S <(cat <<<EOF
    vsplit A12.m
    hsplit A22.m
    …
    EOF
    )
    
  3. vim -c 'vsplit A12.m | hsplit A22.m | …'
    

    順番に実行される複数のキーを使用できますが、10 個を超えることはできないため、コマンドを bar-cで 1 つに結合する必要があります。-c

  4. bash スクリプトの代わりに vim を使用します。

    #!/usr/bin/vim -S
    vsplit A12.m
    hsplit A22.m
    …
    

    . その後chmod +x、他の実行ファイルと同じように実行できます。#!そのため、Vim はコメント リーダーとして扱われます。

于 2012-09-13T15:55:16.613 に答える