Sözdizimi vurgulama kurallarını vim'den vimrc biçimine dışa aktarma


1

Günlük dosyalarını analiz vimettiğimde, daha iyi yönlendirme için çoğu zaman özel sözdizimi vurgulama kuralları oluşturuyorum. Örneğin

:syntax match myerror match /NullPointerException/
:highlight myerror ctermbg=red

Çok uzak çok iyi. Ancak bazen uzun bir düzenleme oturumu sırasında oldukça karmaşık kurallar oluşturuyorum ve oluşturulan tüm geçici kuralları kaydetmek istiyorum, böylece bunları yeniden kullanabiliyorum. Onları yazdırabilirim:

:syntax
myerror        xxx match /NullPointerException/
:highlight
myerror        xxx ctermbg=4

Ancak bu çıktı yalnızca geçici kurallar içermez ve .vimrcfarklı formattan dolayı yeni bir sözdizimi dosyasına kopyalanamaz . :makevimrcHiç dizim kuralları kaydetmez.

Geçici boyama kurallarını nasıl dışa aktaracağınıza dair bir fikriniz var mı?


1
Bildiğim kadarıyla Vim bunun için bir mekanizma sağlamıyor. Onları q:normal modda yazıp (q, iki nokta üst üste) yazıp onları arayarak komutumdan kopyalardım .
Heptit

@Heptit: İyi ipucu! Komut geçmişini düzenlemenin mümkün olduğunu anladım, böylece q:tüm sözdizimi olmayan komutları yapabilir ve silebilirim :g!/^sy/d. Ve aynı şey için hi. Teşekkürler.
Zaboj Campula

Tam bir çözüm bulabildiğiniz için, kendi sorunuzu tam talimatlarla cevaplayabilir ve ardından kabul edildi olarak işaretleyebilirsiniz.
Heptit

Bunun tam bir çözüm olduğunu sanmıyorum. Bu şekilde cevap vermek için + 1'i verirdim ama kabul etmedim çünkü hala daha uygun bir yol olduğunu umuyorum. Kimse daha iyi bir çözüm getirmezse, yukarıdaki yorumlara dayanarak bir işlev yazacağım, burada geçmiş ve benim açımdan kabul edilebilir bir cevap olabilir.
Zaboj Campula

Yanıtlar:


1

Bildiğim kadarıyla bunu yapmak için yerel bir Vim mekanizması yok. Bence bir sözdizimi vurgulama kuralı seti geliştirecekseniz baştan itibaren bir Vim komut dosyasında yapacağınızı farz ediyorum.

Tüm sözdizimini ekleyen ve komutları vurgulayan basit bir Vim komut dosyasını birlikte attım: -command tarihçesinden adlandırılmış bir dosyaya:

function! GetSyntaxHistory()
    let l:lines=[]
    for l:i in range(1,histnr(':'))
        let l:line = histget(':', l:i)
        if l:line =~ '^\s*\(syn\|syntax\|hi\|highlight\)\s\+'
            let l:lines += [l:line]
        endif
    endfor
    return l:lines
endfunction

function! WriteSyntax(file)
    let l:lines = GetSyntaxHistory()
    call writefile(l:lines, a:file, 'a')
endfunction

command! -nargs=1 -complete=file ExportSyn call WriteSyntax(<f-args>)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.