Jak uzyskać vima, aby otworzyć wiele plików na kartach jednocześnie

85

Czy jest możliwe, aby vim otworzył wiele plików w kartach, podobnie jak args <path>polecenie otworzy wiele plików w buforach?

Wykonanie czegoś podobnego :tabe ./*powoduje błąd „E77: Zbyt wiele nazw plików”, mimo że liczba plików jest mniejsza niż wartość ustawiona we tabpagemaxwłaściwości.

(Wierzę, że vim -p <files>opcja otworzy się w kartach, ale mam nadzieję znaleźć sposób, aby to zrobić, gdy vim jest już otwarty.)

Popiół
źródło
12
Dziękujemy za wzmiankę o opcji -p; właśnie tego szukałem
user72923,
4
Znalazłem to pytanie za pośrednictwem Google. Szukałem, jak otworzyć vim z kartami z wiersza poleceń, vim -ptego szukałem :-)
Rocket Hazmat
2
Powiązane: Jak mogę otworzyć wiele kart jednocześnie? w Vim SE
kenorb
Powiązane: Otwórz kilka plików w nowych kartach za pomocą VIM w Stack Overflow.
Mihai Capotă
Powiązane: Jak otworzyć wiele kart dla wielu plików w vimie? w Super User.
Mateusz Piotrowski

Odpowiedzi:

82
:tab all

otworzy wszystkie pliki z listy argumentów Vima w poszczególnych zakładkach. Lista argumentów jest początkowo ustawiona na listę nazw plików podaną w wierszu poleceń podczas uruchamiania Vima. Lista może zostać zmieniona za pomocą :argsi powiązanych poleceń. Widzieć

:help :all
:help argument-list

Przykład:

:args *.c
:tab all

otworzy wszystkie pliki .c w bieżącym katalogu na poszczególnych kartach.

garyjohn
źródło
Nie jestem pewien, jak to ma działać. Powiedz, jeśli chcę otworzyć wszystkie pliki .txt w bieżącym katalogu, co powinienem wprowadzić? Jeśli :tab all *.txtwejdę, vim odpowiada licznikiem „E488: Znaki końcowe”
Ash
Zredagowałem odpowiedź, aby wyjaśnić, co rozumiem przez „argumenty”. Miałem na myśli listę argumentów Vima, a nie argumenty :tab all.
garyjohn
1
Nie wiem od jednego polecenia, które można zrobić, ale można umieścić dwie komendy w jednym wierszu, rozdzielając je z pionowym pasku, na przykład: :args *.c | tab all.
garyjohn,
9
Minusem jest to, że używanie :tab allzastępuje istniejące karty. Z tego powodu, w moim przypadku użycia, nie zapewnia to większych korzyści w stosunku do ponownego otwierania plików vim -p. Jeśli jednak istnieje jakiś sposób na umieszczenie istniejących kart :args, może być możliwe otwarcie nowych kart i zachowanie istniejących.
Kevin Qi,
3
Jeśli karta jest już otwarty, zastąpił argaddna args.
cdosborn
4

W rzeczywistości możesz otwierać nowe karty i przechowywać bieżące karty bez pisania nowych funkcji. Zobacz tę odpowiedź na temat Przepełnienia stosu: https://stackoverflow.com/a/11430615/200234

:args file1 file2 | argdo tabe

:tabePrzed otwarciem możesz chcieć otworzyć nową pustą kartę ( ), ponieważ pierwszy plik otworzy się na bieżącej karcie. Dodatkowa pusta karta pozostanie otwarta (zobacz, :help argdoaby zrozumieć, dlaczego).

Mihai Capotă
źródło
Jeśli dodajesz nowe karty do istniejącego zestawu, czy nie byłoby łatwiej po prostu :tabe file1?
jpaugh
@jpaugh, pytanie dotyczy wielu plików.
Mihai Capotă
Czy nie :args | argdo tabeodpowiedziałby na pytanie? Jaki jest powód dodawania nowych plików w ten sposób?
jpaugh
@jpaugh, właśnie o to pyta pytanie: „Wierzę, że opcja vim -p <files> otworzy się w kartach, ale mam nadzieję, że znajdę sposób, aby to zrobić, gdy vim jest już otwarty.”
Mihai Capotă