2010-08-12 10 views
16

In einem gegebenen Arbeitsverzeichnis, wenn ichWie mache ich vim öffnen alle Dateien mit einem Muster in verschiedenen Tabs?

:tabe **/test*.py 

vim tun klagt mit E77: Too many file names. Was, wenn ich möchte, dass jede passende Datei in einem separaten Tab geöffnet wird? Es muss einen Weg geben, es zu tun, aber ich kann es nicht finden.

+1

Dies gehört auf SuperUser. – Incognito

+0

Related: [Wie kann ich mehrere Tabs auf einmal öffnen?] (Http://vi.stackexchange.com/questions/2108/how-can-i-open-multiple-tabs-at-once) bei Vim SE – kenorb

Antwort

28

könnten Sie verwenden die args Liste und argdo wie so:

:args **/test*.py 
:argdo tabe % 

jedoch die Syntax Veranstaltung wird von argdo (zu beschleunigen den normalen Anwendungsfall), so werden die Dateien geladen werden, ohne Syntax ausgeschaltet zu Beginn. Sie könnten dies mit einer :syntax on verfolgen, um das Syntaxereignis für alle geladenen Puffer zu erzwingen. Komprimiert in einer Zeile (müssen argdo in execute wickeln, damit es nicht die folgende | absorbieren):

:args **/test*.py | execute 'argdo tabe %' | syntax on 

Alternativ können Sie vim von der Kommandozeile über geöffnet:

vim -p **/test*.py 

Aber das wird bei 10 Tabs max.

+1

danke viel! Nun, wie könnte ich das Muster zu einem Parameter machen, so dass ich das Skript zu einem neuen Befehl zuordnen kann und ich kann, z. ': tabeall **/test * .py'? –

+0

'set tabpagemax = 100' ermöglicht es vim, 100 Tabs zu öffnen. – sixtyfootersdude

1

Zur Karte es

nmap <c-d> :args **/*.tpl<bar>execute 'argdo tabe %'<bar>syntax on<cr> 

Aber es zeigt immer noch die Liste der Dateien, müssen Sie eingeben paar Mal drücken (abhängig von der Anzahl der Dateien).

+0

Oder 'nmap : args **/*. Tpl^M argdo tabe%^M Syntax auf^M' Verwenden Sie Control-Q, um das Zeichen^M (Literal Newline) einzugeben. Zeigt jedoch weiterhin die Liste der Dateien an. –

7

können Sie Folgendes verwenden:

:next **/test*.py 

Es alle Dateien öffnet.

Verwandte Themen