Quando abro vim
com vários arquivos ( vim f1 f2 ...
), como posso abri-los diretamente nas guias, sem usar -p
?
Eu estou procurando separar o comportamento do shell do comportamento do vim, removendo os vim
aliases com base, etc. É por isso que eu prefiro não usar aliases, etc. (portanto, não -p
).
Tenho certeza de que este foi solicitado em alguns sites SE (como no SO ). No entanto, não estou em posição de julgar qual seria a melhor maneira de fazer isso, então também espero uma observação sobre por que um método sugerido é bom.
Para a publicação específica do SO vinculada:
a resposta aceita sim
tabpagemax=9999
. Chame isso de viés pessoal, mas vejo um limite sendo definido para um número grande e acho que há algo errado (do jeito que eu me sentiria se vissechmod 777
).:au VimEnter * set tabpagemax=9999|sil tab ball|set tabpagemax&vim
a outra resposta leva à abertura de uma guia extra vazia, sendo muito mais concisa.
:autocmd VimEnter * argdo tabedit
Espero uma resposta que não tenha uma guia extra aberta e não defina um limite para um valor grande (ou explique por que isso não é uma coisa ruim).
:qa
por força do hábito. Se essa é a única vantagem, eu iria com a outra, já que parece mais simples.Respostas:
Após algumas experiências, descobri que esse é o melhor caminho; deve se comportar da mesma maneira que
vim -p
:Primeiro,
tab all
abre todas as entradas na lista de argumentos (:args
) em uma guia. A lista de argumentos é uma lista de arquivos que você passou para o Vim na inicialização. E issotabfirst
garante que a primeira guia esteja focada e não a última (isso é opcional).Nós não fazemos nada disso se
&diff
estiver definido; se estiver, estamos usandovimdiff
ouvim -d
, onde queremos ter duas janelas e não duas guias.Em esta resposta Eu também tenho escrito um pouco sobre a lista de argumentos e
tab all
que podem ser de interesse.Algumas notas sobre as outras soluções:
tab ball
abre uma guia para cada entrada na lista de buffers , não na lista de argumentos. O "problema" é que a lista de buffers pode ser salva no arquivo viminfo ao sair e restaurada na inicialização (se%
estiver dentro'viminfo'
, não ativado por padrão). Então, se você digitarvim
, abrirá esses arquivos. Considero isso indesejável, embora possa imaginar algumas pessoas achando útil; então use o que você preferir.set tabpagemax=9999
não é necessário; o padrão é10
e isso deve estar bem. Você pode aumentar isso no seu vimrc se quiser mais, mas9999
é um número tolo. Se você usar-p
, também terátabpagemax
guias. Então isso deve respeitar isso. Lembre-se de que isso abrirá (lerá) um buffer na inicialização, por isso é bastante lento.autocmd VimEnter * argdo tabedit
é exatamente a mesma maneira de dizertab all
. No entanto, o buffer inicial não é limpo, então você fica com essa guia extra (tab all
substitui todas as guias). Para corrigir isso, você precisa da solução alternativa na resposta de Josh Petrie.fonte
Eu acho que adicionar algo assim ao seu
.vimrc
pode resolver seus problemas (observe, no entanto, que eu realmente não uso isso e fiz apenas testes mínimos, pode fazer coisas estranhas em alguns casos):Como você observou, você
argdo tabedit
terá uma guia extra vazia. Então você pode simplesmente fechar essa guia automaticamente. No entanto, você não pode simplesmente chamartabclose
desmarcado, ou o vim apresentará um erro quando você o iniciar sem argumentos ou um único arquivo (você "não pode fechar a última guia"). Em vez disso, verifique se o número total de guias é maior que um (é o que$
causa otabpagenr
retorno) e só então você precisa fechar a última guia.Dito isso, acho que vale a pena ressaltar que as guias do vim não são como as guias de outros editores , e isso é algo a ter em mente ao considerar como usar as guias no seu fluxo de trabalho (você parece estar ciente disso, mas eu deseja mostrar o argumento em benefício de futuros leitores que talvez não o façam para que possam tomar suas próprias decisões).
fonte