Kiedy otwieram za vim
pomocą wielu plików ( vim f1 f2 ...
), jak mogę je otworzyć bezpośrednio na kartach, bez użycia -p
?
Chcę oddzielić zachowanie powłoki od zachowania vima, usuwanie vim
aliasów opartych na itp. Dlatego wolałbym nie używać aliasów itp. (Stąd nie -p
).
Jestem prawie pewien, że ten został zadany na kilku stronach SE (takich jak SO ). Jednak nie jestem w stanie ocenić, jaki byłby najlepszy sposób, aby to zrobić, więc mam też nadzieję, że dostanę informację, dlaczego sugerowana metoda jest dobra.
Dla konkretnego linku do SO:
zaakceptowana odpowiedź tak
tabpagemax=9999
. Nazwij to osobistym uprzedzeniem, ale widzę limit ustawiony na dużą liczbę i myślę, że coś jest nie tak (tak, jak bym się czuł, gdybym to zobaczyłchmod 777
).:au VimEnter * set tabpagemax=9999|sil tab ball|set tabpagemax&vim
druga odpowiedź prowadzi do otwarcia dodatkowej pustej zakładki, a jednocześnie jest bardziej zwięzła.
:autocmd VimEnter * argdo tabedit
Mam nadzieję na odpowiedź, która nie ma otwartej dodatkowej karty i nie ustawia limitu dużej wartości (lub wyjaśni, dlaczego to nie jest złe).
:qa
nawykiem. Jeśli to jedyna zaleta, skorzystałbym z drugiej, ponieważ wydaje się to prostsze.Odpowiedzi:
Po kilku eksperymentach uznałem, że jest to najlepszy sposób; powinien zachowywać się tak samo jak
vim -p
:Najpierw
tab all
otwiera wszystkie wpisy na liście argumentów (:args
) na karcie. Lista argumentów to lista plików, które przekazałeś Vimowi podczas uruchamiania. Itabfirst
zapewnia, że pierwsza karta jest skoncentrowana, a nie ostatnia (jest to opcjonalne).Nie robimy tego, jeśli
&diff
jest ustawiony; jeśli tak, używamyvimdiff
lubvim -d
, gdzie chcemy mieć 2 okna, a nie 2 zakładki.W tej odpowiedzi napisałem również trochę o liście argumentów i
tab all
które mogą być interesujące.Kilka uwag na temat innych rozwiązań:
tab ball
otwiera zakładkę dla każdego wpisu na liście buforów , a nie na liście argumentów. „Problem” polega na tym, że lista buforów może zostać zapisana w pliku viminfo przy wychodzeniu i przywrócona podczas uruchamiania (jeśli%
jest'viminfo'
włączona, domyślnie nie jest włączona). Więc jeśli tylko wpiszeszvim
, otworzy te pliki. Uważam to za niepożądane, choć mogę sobie wyobrazić, że niektórzy uważają to za przydatne; więc użyj tego, co wolisz.set tabpagemax=9999
Nie jest wymagane; domyślnie jest10
i powinno być dobrze. Możesz zwiększyć to w swoim vimrc, jeśli chcesz więcej, ale9999
jest to głupia liczba. Jeśli używasz-p
, dostajesz takżetabpagemax
zakładki. To powinno to uszanować. Pamiętaj, że spowoduje to otwarcie (odczyt) bufora podczas uruchamiania, więc jest raczej powolny.autocmd VimEnter * argdo tabedit
to tylko ten sam sposób powiedzeniatab all
. Jednak początkowy bufor nie jest czyszczony, więc pozostała Ci ta dodatkowa karta (tab all
zastępuje wszystkie karty). Aby to naprawić, potrzebujesz obejścia w odpowiedzi Josha Petrie.źródło
Myślę, że dodanie czegoś takiego do twojego
.vimrc
może rozwiązać twoje problemy (pamiętaj jednak, że tak naprawdę nie używam tego i wykonałem jedynie minimalne testy, w niektórych przypadkach może to robić dziwne rzeczy):Jak zauważyłeś,
argdo tabedit
pozostawi ci pustą dodatkową kartę. Możesz więc po prostu automatycznie zamknąć tę kartę. Jednak nie możesz po prostu wywołaćtabclose
niezaznaczonego, ponieważ vim wyświetli błąd podczas uruchamiania bez argumentów lub pojedynczego pliku („nie możesz zamknąć ostatniej karty”). Zamiast tego sprawdź, czy łączna liczba kart jest większa niż jedna (to$
powodujetabpagenr
powrót) i dopiero wtedy musisz zamknąć ostatnią kartę.To powiedziawszy, wydaje mi się, że warto podkreślić, że zakładki Vima nie są do końca podobne do zakładek innych edytorów , i to jest coś, o czym należy pamiętać, rozważając sposób używania zakładek w twoim przepływie pracy (wydaje się, że jesteś tego świadomy, ale ja chcą wskazać na korzyść przyszłych czytelników, którzy mogą tego nie zrobić, aby mogli podejmować własne decyzje).
źródło