Apakah ada "vim runtime log"?

130

Terkadang saya mencoba kustomisasi / perintah di vimrc saya. Semuanya terlihat benar, tetapi itu tidak berfungsi.

Sulit untuk mengetahui apa yang terjadi ketika vim dimulai, dan tahu perintah mana yang gagal atau tidak, jadi sangat sulit untuk men-debug apa yang dapat menyebabkan masalah di vimrc saya. Ini adalah pendekatan trial-error, yang memakan waktu dan benar-benar PITA. Sebagai contoh, saya mengalami masalah dengan plugin snipmate di beberapa file dan tidak memiliki petunjuk tentang cara menemukan masalah.

Apakah ada "runtime log" saat vim dimulai, memberi tahu perintah mana yang dieksekusi, mana yang gagal dan semacamnya? Ini akan banyak membantu saya.

Seseorang masih menggunakan Anda MS-DOS
sumber

Jawaban:

163

menjalankan vim dengan opsi -V [N] akan melakukan log runtime yang lumayan besar, di sini N adalah level debug.

vim -V9myVim.log

akan membuat log tingkat debug 9 di direktori saat ini dengan nama file myVim.log

tidur nyenyak
sumber
Saya menyukai kedua pendekatan dari Zyx dan Anda, tetapi pendekatan Anda lebih baik menurut saya karena lebih sederhana, hanya dalam cmd, dan saya dapat menetapkan jalur ke log setiap kali saya menjalankannya, dan saya tidak perlu "mengembang "vimrc saya. Dan selamat datang di SO!
Seseorang masih menggunakan Anda MS-DOS
2
Lihat juga :h 'verbose'dan :h :verbose.
Palec
MacVim tampaknya tidak mendukung -Vopsi atau opsi baris perintah apa pun.
emallove
ini membuka buffer vim kosong tanpa nama file. Apa selanjutnya?
Geoff Langenderfer
104

:messages menunjukkan semua peringatan, kesalahan, dan pesan informasi yang muncul (mungkin sebentar) di baris status vim.

:echo errmsg mencetak pesan kesalahan terbaru.

g<adalah fitur lain yang hanya sedikit diketahui orang. Dari :help g<:

The g<perintah dapat digunakan untuk melihat halaman terakhir output perintah sebelumnya. Ini sangat berguna jika Anda secara tidak sengaja mengetik <Space>di tab tekan-enter.

Misalnya coba :!lsbatalkan prompt, lalu tekan g<.

Justin M. Keyes
sumber
15

Masukkan fungsi ini ke .vimrc:

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

Kemudian buat direktori ~/.log/vimdan panggil ToggleVerbose()untuk masuk ~/.log/vim/verbose.log. Perhatikan bahwa Anda mungkin menangkap kesalahan «variabel yang terlalu dalam untuk menampilkan» kesalahan yang biasanya tidak akan muncul hanya karena Anda telah menaikkan level verbose Anda.

ZyX
sumber
2

Saya tidak berpikir ada log runtime, per se , tetapi Anda dapat menjalankannya dalam mode debug.
http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts

Jay
sumber
2
Situs ini sepertinya telah diretas atau semacamnya. Sampai diperbaiki, lihat versi cache di web.archive.org/web/20090323034339/http://… .
Mu Mind
Saya mendapat 403 terlarang
Frank Fang
1

Ini mungkin bertentangan dengan semua yang diperjuangkan SO, tetapi inilah yang saya lakukan: Saya baru saja menekan layar cetak segera setelah peringatan muncul dan melihat gambar.

puk
sumber
Bukankah tombol jeda memiliki efek yang sama, minus kertas yang terbuang?
Benteng
Sampai sekarang saya tidak pernah tahu apa yang dilakukan tombol pause. Bagaimanapun, saya tidak berpikir itu melakukan apa pun di Linux stackoverflow.com/questions/92802/…
puk
2
FWIW, * nix terminal akan menjeda output pada Ctrl-S dan melanjutkan pada Ctrl-Q.
joeytwiddle
1

Saya harus menambahkan "set nocp" untuk menggunakan fungsi "ToggleVerbose ()" ketika dijalankan di root karena & verbose

Masuch
sumber