私が使用する場合:
:tabedit file1 file2
私は得る:
E172: Only one file name allowed
:tabedit
複数のファイル名で使用する方法はありますか?または、複数のタブを一度に開く別の方法ですか?
:args *.c | tab all
。他の質問はこれよりも人気がありますので、リンクするのも良いでしょう。
私が使用する場合:
:tabedit file1 file2
私は得る:
E172: Only one file name allowed
:tabedit
複数のファイル名で使用する方法はありますか?または、複数のタブを一度に開く別の方法ですか?
:args *.c | tab all
。他の質問はこれよりも人気がありますので、リンクするのも良いでしょう。
回答:
引数リストを変更することで「組み込み」の方法を使用する他の回答の問題と複雑さを考えると、これを行うために独自の小さな関数を追加しました。
" Open multiple tabs at once
fun! OpenMultipleTabs(pattern_list)
for p in a:pattern_list
for c in glob(l:p, 0, 1)
execute 'tabedit ' . l:c
endfor
endfor
endfun
command! -bar -bang -nargs=+ -complete=file Tabedit call OpenMultipleTabs([<f-args>])
これでを使用できます:Tabedit *.vim
。この関数は、すべてのグロビングパターンを展開し:tabedit <f>
、すべてのファイルに対して実行します。必要な数のパス名を追加できます。たとえば、これはすべて機能します。
:Tabedit file.rb
:Tabedit *.c
:Tabedit file1.py file2.py _*.py
:Tabedit /etc/hosts file{1,2}.sh
まあ、などなど...
私は少しでこれを入れglobedit.vimものためのコマンドが含まれているプラグインは、:Edit
、:Split
など、
[<f-args>]
代わりに"<args>"
-を使用すると、pattern
パラメーターはリスト(配列)になり、文字列を手動で分割する必要がなくなります。(2)3番目の引数としてゼロ以外を渡してglob()
、リストを返します。そうすることで、手動での分割も回避できます。0
動作に影響を与えずにスキップするには、2番目の引数として渡す必要がありますglob(l:p, 0, 1)
。
私の知る限り、これを行う唯一の組み込み方法は次のとおりです。
:args *.vim
:tab all
最初に、:args
引数リストを置き換えます。引数リストには、Vimで開いたファイルがリストされます。vim file1 file2
は、引数リストにfile1
とが含まれることを意味しますfile2
。
これは実行時に変更でき、Vimは引数リストの新しいエントリごとにバッファを開きます。
詳細については:help argument-list
、を参照 してください。
この:all
コマンドは、引数リストのすべてのエントリに対してウィンドウを開き、:tab
コマンドを実行し、指定されたコマンドが新しいウィンドウを開くと新しいタブを開きます。
注意事項
この方法にはいくつかの注意事項があります。
まず第一に、重複のチェックはありませんので、同じバッファに対して2つ以上のタブができてしまいます。
しかし、最大の問題は、すべてのタブを引数リストにあるもので置き換えることです。あなたは失われたすべての既存のタブを。引数リストを置き換えるのではなく、引数リストに追加
することにより、これをわずかに回避できます。ただし、またはなどのコマンドは引数リストを変更せず、引数リストに追加しない限り、これらのタブは失われます(ただし、バッファリストにはまだあります)。また、タブ内の引数リストのすべてを開きたくない場合があります。おそらく、追加のタブとして2つのファイルを開きたいだけです。:argadd *.vim
:edit
:tabedit
現在開いているすべてのタブを引数リストに追加することでこれを少し改善することもできます(実際には動作しません)が、これはまだ完全とはほど遠いです。タブに2つ以上のウィンドウがある場合でも、それらは変更されます...
:argdo tabedit %
、各引数ごとに新しいタブを開くを使用したことです。1つのタブから始めてn個の新しいタブを開くと、当然n + 1個のタブが残ります。:tab all
はるかに優れたソリューションです。
:next
例では、代わりにコマンドを使用できます。
:n file1 file2
または:
:n *.txt
:args *.vim
?を使用するのと同じようです。少なくとも、それは同じように動作し、:help next_f
...同じであるとして、それを文書
実際には、新しい関数を記述することなく、新しいタブを開いて現在のタブを保持できます(Stack Overflowのこの回答を参照)。
:args file1 file2 | argdo tabe
:tabe
最初のファイルは現在のタブで開くため、その前に新しい空のタブ()を開くことができます。また、余分な空のタブが開いたままになります(:help argdo
理由を理解するために参照してください)。
:tabnew | args file1 file2 | argdo tabe | tabdo syntax on
Enterを押してプロンプトをクリアし、最後のタブ:close
を削除するために入力する必要があります( empty)tab ...それは非常に多くの入力であり、多くのタブを開いている場合にのみ価値があります(2つまたは3つのファイルの場合、:tabe
2回使用する方が速くなります)。