Digamos que eu esteja no shell ( bash
) e queira ver a saída que :scriptnames
daria, mas não quero iniciar o vim ou talvez eu queira repetir isso em outro arquivo.
Então eu executo
vim +scriptnames
O que me mostra todos os scripts, mas como faço para repetir isso no stdout do shell?
less
existem os pagers . Apenas coloque-o em menos assimvim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!' | less
. Talvez o layout tenha estragado tudo (está no meu terminal), mas depois de pressionar <CL> tudo fica legal e elegante.vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
, existe apenas um "flash rápido", o comando sai com o código 0, sem saída. Estou esquecendo de algo?Também podemos usar o
:redir
comando para redirecionar os resultados dos comandos vim para um arquivoPor exemplo,
Isso redireciona a saída de
scriptnames
para o arquivo "vimout"fonte
Agradeço a resposta fornecida por Christian Brabandt, mas acho que uma resposta melhor seria separar o comando quit usando outro comando -c da seguinte forma:
O uso desse método significa que você pode agrupar vários comandos diferentes e, em seguida, usar o final 'q!' sair do vim.
fonte
Para situações em que você precisa que o vim seja totalmente carregado como se você o tivesse iniciado manualmente, isso funciona:
Por exemplo, eu queria redirecionar a saída de
:map
para um arquivo do shell, mas queria capturar o mapeamento que o vim- airlines cria somente depois de exibir sua linha de tabulação (linha na parte superior mostrando todos os nomes de buffer abertos). isso de forma assíncrona, simplesmente executar um-c
redirecionamento para um arquivo não estava dando tempo para fazer os mapeamentos. Poderia haver uma maneira melhor, mas isso funciona para mim, especialmente porque eu jáupdatetime
configurei para100
(0,1 segundos), o que afeta quanto tempo até oCursorHold
evento ser disparado. Por padrão, o vim define para 4 segundos.fonte