Есть ли «журнал времени выполнения vim»?


130

Иногда я пробую настроить / команду в моем vimrc. Все кажется правильным, но это просто не работает.

Трудно узнать, что происходит при запуске vim, и узнать, какая команда не удалась, поэтому очень сложно отладить, что может вызвать проблему в моем vimrc. Это метод пробной ошибки, который требует много времени и на самом деле является PITA. Например, у меня проблемы с плагином snipmate в некоторых файлах, и я просто не знаю, как обнаружить проблему.

Есть ли "журнал времени выполнения" при запуске vim, в котором указывается, какие команды он выполнил, какие из них не удалось выполнить и тому подобное? Это мне очень поможет.

Ответы:


163

запуск vim с параметром -V [N] сделает довольно объемный журнал времени выполнения, здесь N - уровень отладки.

vim -V9myVim.log

создаст журнал уровня отладки 9 в текущем каталоге с именем файла myVim.log


Мне понравились оба подхода от Zyx и от вас, но ваш подход, на мой взгляд, лучше, потому что он проще, только в cmd, и я могу задавать путь к журналу каждый раз, когда запускаю его, и мне не нужно «раздувать» "мой vimrc. И добро пожаловать в ТАК!
Кто-то все еще использует вашу MS-DOS

2
См. Также :h 'verbose'и :h :verbose.
Palec

MacVim , похоже, не поддерживает -Vпараметр или какой-либо параметр командной строки.
emallove

это открывает пустой буфер vim без имени файла. Что дальше?
Джефф Лангендерфер

104

:messages показывает все предупреждения, ошибки и информационные сообщения, которые появлялись (возможно, ненадолго) в строке состояния vim.

:echo errmsg печатает самое последнее сообщение об ошибке.

g<это еще одна особенность, о которой мало кто знает. Откуда :help g<:

g<Команда может быть использована для просмотра последней страницы предыдущего вывода команды. Это особенно полезно, если вы случайно набрали <Space>в ответ на приглашение нажать клавишу ввода.

Например, попробуйте :!lsотменить приглашение и нажмите g<.


15

Поместите эту функцию в .vimrc:

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

Затем создайте каталог ~/.log/vimи позвоните, ToggleVerbose()чтобы войти в систему ~/.log/vim/verbose.log. Обратите внимание, что вы можете обнаружить ошибку «слишком глубокая вложенность переменных для отображения», которая обычно не появляется только потому, что вы повысили свой уровень подробности.


2

Я не думаю , что есть журнал выполнение, сами по себе , но вы можете запустить его в режиме отладки.
http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts


2
Этот сайт, похоже, взломали или что-то в этом роде. Пока это не будет исправлено, см. Кешированную версию на web.archive.org/web/20090323034339/http://… .
Mu Mind

Я получил 403 запрета
Фрэнк Фанг


1

Это, вероятно, идет вразрез со всем, что означает SO, но вот что я делаю: я просто нажимаю на экран печати, как только появляется предупреждение, и смотрю на изображение.


Разве кнопка паузы не имела бы аналогичного эффекта, если бы не расход бумаги?
Ладья

До сих пор я не знал, что делает клавиша паузы. В любом случае, я не думаю, что он что-то делает в Linux stackoverflow.com/questions/92802/…
puk

2
FWIW, терминалы * nix приостанавливают вывод при нажатии Ctrl-S и возобновляют при нажатии Ctrl-Q.
joeytwiddle

1

Мне пришлось добавить "установить nocp" для использования функции "ToggleVerbose ()" при запуске в корневом каталоге из-за & подробного

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.