Existe um "log de tempo de execução do vim"?


130

Às vezes, tento uma customização / comando no meu vimrc. Tudo parece estar correto, mas simplesmente não funciona.

É difícil saber o que está acontecendo quando o vim é iniciado e saber qual comando falhou ou não, por isso é realmente difícil depurar o que pode estar causando um problema no meu vimrc. É uma abordagem de tentativa e erro, que consome tempo e é realmente uma PITA. Por exemplo, estou tendo problemas com o plug-in snipmate em alguns arquivos e simplesmente não tenho idéia de como descobrir o problema.

Existe um "log de tempo de execução" quando o vim inicia, informando quais comandos ele executou, quais falharam e quais? Isso me ajudaria muito.

Respostas:


163

executar o vim com a opção -V [N] fará um log de tempo de execução bastante robusto, aqui N é o nível de depuração.

vim -V9myVim.log

criaria um log do nível de depuração 9 no diretório atual com o nome do arquivo myVim.log


Gostei das duas abordagens de Zyx e você, mas sua abordagem é melhor na minha opinião, porque é mais simples, apenas no cmd, e eu posso definir um caminho para o log toda vez que o executar e não preciso "inflar" "meu vimrc. E bem-vindo ao SO!
Alguém ainda usa o MS-DOS


O MacVim não parece suportar -Vopção ou qualquer opção de linha de comando.
emallove

isso abre um buffer vim vazio sem um nome de arquivo. Qual o proximo?
Geoff Langenderfer 20/03

104

:messages mostra todos os avisos, erros e mensagens informativas que apareceram (possivelmente brevemente) na linha de status do vim.

:echo errmsg imprime a mensagem de erro mais recente.

g<é outro recurso que poucas pessoas conhecem. De :help g<:

O g<comando pode ser usado para ver a última página da saída do comando anterior. Isso é especialmente útil se você digitar acidentalmente <Space>no prompt de digitação.

Por exemplo, tente :!lscancelar o prompt e pressione g<.


15

Coloque esta função em .vimrc:

function! ToggleVerbose()
    if !&verbose
        set verbosefile=~/.log/vim/verbose.log
        set verbose=15
    else
        set verbose=0
        set verbosefile=
    endif
endfunction

Em seguida, crie um diretório ~/.log/vime ligue ToggleVerbose()para fazer o login ~/.log/vim/verbose.log. Observe que você pode pegar o erro «variável aninhada muito profunda para exibir» que normalmente não aparecerá apenas porque você aumentou seu nível detalhado.


2

Eu não acho que exista um log de tempo de execução, por si só , mas você pode executá-lo no modo de depuração.
http://web.archive.org/web/20090323034339/http://www.trou Troubleshootingwiki.org/Debugging_Vim_Scripts


2
Este site parece ter sido hackeado ou algo assim. Até que seja corrigido, consulte a versão em cache em web.archive.org/web/20090323034339/http://… .
Mu Mente

Eu tenho 403 proibido #
Frank Fang


1

Provavelmente isso vai contra tudo o que SO significa, mas aqui está o que eu faço: basta pressionar a tela de impressão assim que o aviso aparecer e olhar a foto.


O botão de pausa não teria um efeito semelhante, menos o papel desperdiçado?
Rook

Até agora, eu nunca sabia o que a tecla de pausa fazia. De qualquer forma, eu não acho que ele faça algo no Linux stackoverflow.com/questions/92802/…
puk

2
Os terminais FWIW, * nix pausam a saída no Ctrl-S e retomam no Ctrl-Q.
joeytwiddle

1

Eu tive que adicionar "set nocp" para usar a função "ToggleVerbose ()" quando executada na raiz por causa de & verbose

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.