Debug bagaimana vim memanggil makeprg
Saya mencoba menyiapkan pylint untuk bekerja dengan :makeperintah di Vim 8.2.
Saya telah mengatur :compiler pylinttetapi menjalankan :makememberi saya pesan bantuan pylint, jadi beberapa argumen tampaknya diteruskan dengan tidak benar.
:set makeprg? aku s
makeprg=pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no
Saya sudah mencoba menjalankan perintah ini langsung di terminal (menambahkan nama file) dan berhasil - output adalah daftar kesalahan, bukan pesan bantuan.
Sayangnya, saya tidak melihat perintah vim mana yang coba dieksekusi. Adakah petunjuk tentang kesalahan saya atau cara men-debugnya?
Saya ingin tetap menggunakan fungsi default vim sebanyak mungkin dan tidak menggunakan plugin apa pun untuk ini.
Jawaban
bagaimana cara men-debugnya?
Anda dapat menggunakan :verboseperintah untuk meningkatkan verbositas dari perintah tertentu.
Dalam kasus khusus ini, Anda memerlukan tingkat verbositas di atas 3 untuk melihat perintah shell sebenarnya yang dijalankan oleh Vim , jadi ini seharusnya berfungsi:
:4verbose make
Calling shell to execute: "pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no 2>&1| tee /tmp/abcde12/3"
Ada petunjuk tentang kesalahan saya?
Seperti @D. Ben Knoble menunjukkan, Anda kehilangan nama file saat ini dalam pelaksanaan perintah. Anda dapat memperbaikinya dengan meneruskannya ke :makeperintah, dengan :make %, atau Anda benar-benar dapat memasukkannya %ke makeprgdalamnya, karena ini akan meluas %sebelum menjalankan perintah:
:let &makeprg = 'pylint --output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no %'
Perhatikan %di akhir baris perintah. Jika Anda memasukkan %ke makeprg, maka jalankan saja :makeakan berfungsi untuk menjalankan pylint pada file Anda saat ini.
(Terima kasih kepada @ d-ben-knoble)
makeprg tidak termasuk nama file, jadi
:make %
harus digunakan untuk menyaring file saat ini