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.

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


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<.


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.



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.


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.