Wie kann ich beim Öffnen vim
mit mehreren Dateien ( vim f1 f2 ...
) diese direkt in Registerkarten öffnen, ohne sie zu verwenden -p
?
Ich vim
möchte das Shell-Verhalten vom Vim-Verhalten trennen, Aliase auf Basis usw. entfernen . Deshalb würde ich es vorziehen, keine Aliase usw. zu verwenden (daher nein -p
).
Ich bin mir ziemlich sicher, dass dieser auf einigen SE-Sites (wie auf SO ) gefragt wurde . Ich bin jedoch nicht in der Lage zu beurteilen, wie dies am besten funktioniert, und hoffe daher auch auf einen Hinweis, warum eine vorgeschlagene Methode gut ist.
Für den jeweiligen SO-Beitrag verlinkt:
Die akzeptierte Antwort tut es
tabpagemax=9999
. Nennen wir es persönliche Voreingenommenheit, aber ich sehe, dass eine große Zahl begrenzt ist, und ich denke, dass etwas nicht stimmt (wie ich mich fühlen würde, wenn ich es sehen würdechmod 777
).:au VimEnter * set tabpagemax=9999|sil tab ball|set tabpagemax&vim
Die andere Antwort führt dazu, dass eine zusätzliche leere Registerkarte geöffnet wird, während sie weitaus präziser ist.
:autocmd VimEnter * argdo tabedit
Ich hoffe auf eine Antwort, bei der kein zusätzlicher Tab geöffnet ist und kein Limit für einen großen Wert festgelegt ist (oder erklären Sie, warum das keine schlechte Sache ist).
:qa
aus Gewohnheit enden . Wenn das der einzige Vorteil ist, würde ich mich für den anderen entscheiden, da es einfacher erscheint.Antworten:
Nach einigen Experimenten habe ich festgestellt, dass dies der beste Weg ist. es sollte sich genauso verhalten wie
vim -p
:Zuerst
tab all
öffnet alle Einträge in der Argumentliste (:args
) in einer Registerkarte. Die Argumentliste ist eine Liste der Dateien, die Sie beim Start an Vim übergeben haben. Und dastabfirst
stellt sicher, dass die erste Registerkarte fokussiert ist und nicht die letzte (dies ist optional).Wir machen nichts davon, wenn
&diff
gesetzt ist; Wenn dies der Fall ist, verwenden wirvimdiff
odervim -d
, wo wir 2 Fenster und nicht 2 Registerkarten haben möchten .In dieser Antwort habe ich auch ein wenig über die Argumentliste geschrieben,
tab all
die von Interesse sein könnte.Einige Hinweise zu den anderen Lösungen:
tab ball
öffnet eine Registerkarte für jeden Eintrag in der Pufferliste , nicht für die Argumentliste. Das „Problem“ ist , dass die Pufferliste kann auf verlassen und wieder beim Start in der viminfo Datei gespeichert werden (sofern%
in ist'viminfo'
, nicht standardmäßig aktiviert). Wenn Sie also nur eingebenvim
, werden diese Dateien geöffnet. Ich halte dies für unerwünscht, obwohl ich mir vorstellen kann, dass einige Leute es nützlich finden. Verwenden Sie also, was Sie bevorzugen.set tabpagemax=9999
ist nicht nötig; Die Standardeinstellung ist10
, und dies sollte in Ordnung sein. Sie können dies in Ihrem vimrc erhöhen, wenn Sie mehr wollen, aber es9999
ist eine dumme Zahl. Wenn Sie verwenden-p
, erhalten Sie auchtabpagemax
Registerkarten. Das sollte das also respektieren. Denken Sie daran, dass dies beim Start einen Puffer öffnet (liest), der also ziemlich langsam ist.autocmd VimEnter * argdo tabedit
ist genau die gleiche Art zu sagentab all
. Der anfängliche Puffer wird jedoch nicht gelöscht, sodass Sie diese zusätzliche Registerkarte behalten (tab all
ersetzt alle Registerkarten). Um dies zu beheben, benötigen Sie die Problemumgehung in Josh Petries Antwort.quelle
Ich denke, dass das Hinzufügen von so etwas zu Ihrem
.vimrc
Problem Ihre Probleme lösen kann (beachten Sie jedoch, dass ich dies nicht wirklich verwende und nur minimale Tests durchgeführt habe, es kann in einigen Fällen seltsame Dinge bewirken):Wie Sie bereits bemerkt haben,
argdo tabedit
verbleibt eine leere zusätzliche Registerkarte. Sie können diese Registerkarte also einfach automatisch schließen. Sie können jedoch nicht einfachtabclose
ungeprüft aufrufen , oder vim gibt einen Fehler aus, wenn Sie es ohne Argumente oder eine einzelne Datei starten (Sie können die letzte Registerkarte nicht schließen). Überprüfen Sie stattdessen, ob die Gesamtzahl der Registerkarten größer als eins ist (dies$
führttabpagenr
zur Rückkehr), und erst dann müssen Sie die letzte Registerkarte schließen.Trotzdem sollte ich darauf hinweisen, dass die Registerkarten von vim nicht ganz den Registerkarten anderer Editoren entsprechen. Dies sollten Sie berücksichtigen, wenn Sie überlegen, wie Sie Registerkarten in Ihrem Workflow verwenden (Sie scheinen sich dessen bewusst zu sein, aber ich möchten den Punkt zum Nutzen zukünftiger Leser machen, die dies möglicherweise nicht tun, damit sie ihre eigenen Entscheidungen treffen können).
quelle