新しいタブを開くことをデフォルトにするにはどうすればよいですか?


10

私が開くとvim、複数のファイル(とvim f1 f2 ...)、どのように私はそれを使用せずに、直接タブで開くことができますか-p

シェルの動作をvimの動作から分離し、vimベースのエイリアスなどを削除したいと考えています。そのため、エイリアスなどを使用したくないのです(したがって、no -p)。

これはいくつかのSEサイト(SOなど)で要求されたと確信しています。ただし、これを行う最善の方法を判断する立場にはないので、提案された方法が優れている理由についてのメモも期待しています。

リンクされた特定のSO投稿の場合:

  • 受け入れられた答えはしtabpagemax=9999ます。個人的なバイアスと呼んでいますが、制限が多数に設定されているのがわかり、何か問題があると思います(見た場合の感じ方chmod 777)。

    :au VimEnter * set tabpagemax=9999|sil tab ball|set tabpagemax&vim
    
  • 他の答えは、はるかに簡潔である一方で、余分な空のタブが開かれることになります。

    :autocmd VimEnter * argdo tabedit
    

余分なタブを開かず、制限を大きな値に設定しない(または、それが悪いことではない理由を説明する)答えを期待しています。



@OrangeTux Gillesの答えの精神で投稿しました。しかし、反対票があると、既存の投稿にリンクしている投稿に対してGillesは何を言うのでしょうか。
muru、2015

@Carpetsmokerコメントの更新はありませんでした。空のタブページは、セッションが:qa習慣の力で終了する傾向がある場合、大きな問題ではありません。それが唯一の利点である場合、私は他の利点を使います。
muru

3
@muru WWGS?Stack Overflowの回答が満足のいくものではないと思う理由はありますか?もしそうなら、あなたの質問でそれを説明してください。いずれにせよ、SOの回答を質問にまとめてください。それが独自の答えを含む質問につながる場合は、投稿しないでください。
Gilles「SO-悪をやめる」

@ギレス更新。実際のコマンドは投稿しませんでした。
muru

回答:


4

実験を重ねた結果、これが最良の方法であることがわかりました。次のように動作するはずvim -pです。

au VimEnter * if !&diff | tab all | tabfirst | endif

まず、tab all引数リスト(:args)のすべてのエントリをタブで開きます。引数リストは、起動時にVimに渡したファイルのリストです。そして、これtabfirstにより、最後ではなく最初のタブがフォーカスされます(これはオプションです)。

が設定されている場合は、これを行いませ&diff。そうである場合は、2つのタブではなく2つのウィンドウが必要な場所で、vimdiffまたはを使用しています。vim -d

、この答え私はまた、引数リストとについて少し書いたtab all興味深いかもしれません。


他の解決策に関するいくつかのメモ:

  • tab ball引数リストではなく、バッファリストのすべてのエントリのタブを開きます。「問題は、」バッファリストは、(場合終了上のviminfoファイルに保存され、起動時に復元することができることである%である'viminfo'、デフォルトで有効になっていません)。したがって、単に入力vimすると、それらのファイルが開きます。私はこれを望ましくないと考えていますが、一部の人々がそれが有用であると考えることは想像できます。あなたが好むものを使ってください。

  • set tabpagemax=9999必須ではありません; デフォルトは10で、これで問題ありません。必要に応じてvimrcでこれを増やすことができますが、これ9999はばかげた数値です。を使用すると-ptabpagemaxタブも表示されます。したがって、これはそれを尊重する必要があります。これは起動時にバッファを開く(読み取る)ので、かなり遅いことに注意してください。

  • autocmd VimEnter * argdo tabeditと同じtab allです。ただし、初期バッファーはクリアされないため、追加のタブが残ります(tab allすべてのタブを置き換えます)。これを修正するには、Josh Petrieの回答の回避策が必要です。


2

このようなものをあなたに追加.vimrcすると問題が解決するかもしれません(ただし、実際にはこれを使用しておらず、最小限のテストしか行っていないため、場合によっては奇妙なことをする可能性があります)。

function! OpenArgumentsInTabs()
  ardo tabedit
  if tabpagenr("$") > 1
    tabclose
  endif
endfunction

autocmd VimEnter * call OpenArgumentsInTabs()

あなたが述べたように、argdo tabeditあなたの空の余分なタブを残します。したがって、そのタブを自動的に閉じるだけです。ただし、tabcloseチェックを付けずに呼び出すことはできません。引数や単一のファイルなしでvimを起動すると、エラーが発生します(「最後のタブを閉じることができません」)。代わりに、タブの総数が1より大きいかどうかを確認し(それが$原因tabpagenrで戻ります)、その後、最後のタブを閉じる必要があります。


そうは言っても、vimのタブは他のエディターのタブまったく同じではないことを指摘する価値があると思います。ワークフローでタブを使用する方法を検討する際には、この点に留意する必要があります(これを知っているようですが、私は将来の読者の利益のためにポイントを作りたいと思っています。そうしないと、自分で決定できるようになります)。

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