Özel vim vurgulama


12

Ben şu anda bazı xml düzenleme ve kendime geri gelmek için bazı yorumlar bırakıyorum. Bunun gibi

<!-- Question: bla bla -->

Şu anda vim ile düzenleme yapıyorum ve kodumu kolayca inceleyebilmem ve bakmam gereken tüm yerleri bulabilmem için vim'i şimdi Soruyu vurgulamak istiyorum. Vimrc'ime bir şey eklemem gerektiğini biliyorum ama bence yanlış bir şey arıyor olabilirim.

Güncelleme

Bunu içime koymayı denedim .vimrcama hiçbir etkisi olmadı:

syn keyword JakeAnnotation      Question

hi JakeAnnotation gui=bold term=bold cterm=bold

Güncelleme 2

Aslında daha önce yaptığımın bir etkisi olduğunu görebiliyorum çünkü bunu yaptığımda:

:hi

Bana vurguladığı tüm şeyleri gösterir ve girişlerden biri:

JakeAnnotation xxx term=bold cterm=bold ctermbg=6

( ve xxx doğru biçimlendirilmiş )

Bu, beni sadece Soruyu düzgün bir şekilde tanımlamamaya inanıyorum. Sorunun kendi başına bir hatta olması gerekiyor mu?

Güncelleme 3

Tamam kullanıcı 22303 sonrası için ben bu çalışma var:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/

Ancak dosya başına yalnızca bir eşleşme izninizin olduğundan şüpheleniyorum. Çünkü bunu yaptığımda:

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/
highlight MyRelook cterm=bold term=bold ctermbg=blue ctermfg=black
match MyRelook /Another look/

İlki çalışmayı durdurur. (Ama ikincisi işe yarıyor).

Yanıtlar:


10

Sanırım tam olarak doğru olmayan bazı cevaplar veriyoruz. Makinemde test ettiğim bir şey var.

İlk olarak, kendi yeni vurgu grubunuzu oluşturun:

:highlight MyQuestions guifg=red guibg=green

Şimdi, bir desen eşleştirildiğinde vurgulama grubunun var olacağını belirtin:

:syntax match MyQuestions /Question/

Bu, o metne sahip her satırda 'Soru' metninin vurgulanmasını göstermeye başlamalıdır. Tüm satırı gösterecek şekilde genişletmek için arama metnini, tüm satırla eşleşen joker karakterlere sahip olacak şekilde değiştirirsiniz:

:syntax match MyQuestions /.*Question.*/


Aslında sadece sıralı çalıştı ... Ben bir kerede sadece bir maç izin olduğunu şüpheleniyorum güncelleme 3 bakınız ...
sixtyfootersdude

1
@sixtyfootersdude: Üzgünüm, bir kez daha küçük bir hata oluştu. Tüm eşleşme komutlarının yerine "sözdizimi eşleştirme" komutları olmalıdır. Yani [: match MyQuestions /.*Question.*/] yerine [: sözdizimi match MyQuestions /.*Question.*/] kullanmak istersiniz. Bu, istediğiniz kadar farklı eşleşmeye sahip olmanızı sağlar. Bunlar aslında sözdizimi dosyalarına yerleştirilen en yaygın komut türlerinden biridir. Ancak bunları komut satırı, vimrc veya diğer komut dosyaları gibi istediğiniz yerde yürütebilirsiniz.
user22303

Vimrc dosyamda syntaxinfront eklemek match...eşleşmenin hiçbir etkisi olmaz. Bunu yapmam gereken yer bu mu? Açık bir dosyaya yapmanın da bir etkisi yoktur.
sixtyfootersdude

1
@sixtyfooters: Senin için ne olduğundan emin değilim, ama kesinlikle bunu yapmanın yolu bu. Bir komut dosyasına yerleştirmeden önce komut satırında test edin (dosyanız için yüklenen diğer komut dosyalarında bir yerde sözdizimi ayarları siliniyor olabilir). Bir kez tanımlandıktan sonra, çıplak bir ": vurgulama" komutu vererek (veya gvim'deki gui menüsünden "Sözdizimi", "Vurgulama testi" ni seçerek hangi grupların var olduğunu ve vurgulamalarını kontrol edin). Grup oluşturmak için önce vurgulama komutunu, ardından eşleşme düzenini ayarlamak için 'sözdizimi eşleşmesi'ni kullanmak istediğinizi unutmayın.
user22303

@sixtyfooters: vim'i bir terminalde (yani gvim değil) çalıştırdığınızı varsayıyorum, böylece terim özelliklerinin ayarlanmasının çalışması gerekir. Yeni bir dosya yüklendiğinde ve ilişkili bir sözdizimi dosyası çalışırken ve önceki tüm sözdizimi komutlarını temizlerken sözdizimi komutlarının silinmesi gibi geliyor bana. Yani iki kez kontrol etmek için, komut satırını kullanırken her dosya yüklediğinizde bu komutları tekrar giriyor musunuz? Sanırım kaydedilmemiş ve henüz bir dosya adı atanmamış yeni arabellekteki metinle test etmeyi deneyebilirsiniz.
user22303

5

Aradığınız dosya bir 'sözdizimi' dosyasıdır. /usr/local/share/vim/syntax/Veya içine bakmayı deneyin /usr/share/vim/syntax/. İstediğiniz dosya xml.vim'dir.

Yapılacak en basit şey,

syn keyword xmlTodo         contained TODO FIXME XXX

ve şu şekilde değiştirin:

syn keyword xmlTodo         contained TODO FIXME XXX Question

Bu, metni içeren yorumlara "Yapılacak" vurgusunu ekler Question.

Bunu (hiç) için kullanacaksanız, vml'deki ~/.vim/syntaxdeğişikliklerin özel sözdizimi dosyanızın üzerine yazmaması için xml.vim dosyasını yerelinize kopyalamak en iyisidir .

Güncelleme

Herhangi bir dosyada benzer (sortof) yeteneği istiyorsanız, 'goto' komutunu kullanırdım. Bunun sizi rahatsız ettiğini söylediğiniz hlsearch gibi olduğunu kabul edeceğim.

Düzenleme sırasında, imleç bir sözcüğün üzerindeyken gd, dosyadaki geçerli noktadan gDaramak veya baştan aramak için yazın. Dosyanızda geçerli kelimeyle eşleşen her kelime vurgulanır. Söz nkonusu sözcüğün bir sonraki örneğine atlamak için yazabilirsiniz .

Bunu yapmaya eğilimliyim, çünkü en az yazarak vurgu ve navigasyon elde edersiniz. Vurgulamayı her zamanki gibi kapatırsınız::noh[lsearch]


Vaov! Bu yapmak istediğim gibi geliyor. Şu anda bir ~/.vim/ folder. If I created it and create the file sözdizim yok .vimrc?vim kullanmak için söylemek için bir yere (belki içinde ) başvurmak gerekir?
sixtyfootersdude

1
Hayır! Vim otomatik olarak (ve eklentiler, renk, derleyici) gibi birkaç dizini arar ve ana alanınızda bir sözdizimi dosyası varsa, sistem varsayılanından önceliklidir.
DaveParillo

1
Ayrıca, sadece net olmak için, bir dizin oluşturmak syntaxve bu dosyayaxml.vim
DaveParillo

.Vimrc dosyamı .vim dizinime koymalı mıyım?
sixtyfootersdude

1
sözdizimi dosyaları .vim dir. Sözdizimi vurgulaması dile özgüdür. Herhangi bir dosyada benzer (sortof) yeteneği istiyorsanız, 'goto' komutunu kullanırdım. Cevabıma ekleyeceğim.
DaveParillo

2

Basitçe yapabilirsin

:set hlsearch

Ve sonra Soru arayın


Yaptığım şey bu ama hlsearch beni rahatsız ediyor. +1, öneri için teşekkürler.
sixtyfootersdude

2

Birkaç seçeneğiniz var.
- Biri, Dominik'in belirttiği gibi ... Bunları birer birer arayabilirsiniz (o kadar da pratik değil)
- iki tane, "" g / <- Soru "yapabilirsiniz, hepsinin bir" listesini "almak (biraz daha iyi) , genel bir resim verir)
- üç, yalnızca xml dosyalarında bu tür yorumları kullanıyorsanız bir vurgulama grubu oluşturabilirsiniz (xml'in nasıl göründüğü hakkında hiçbir fikrim yok, bu yüzden bazı olup olmadığını bilmiyorum bunlarda başka tür yorumlar da olabilir). Vimrc'de kurduysanız bu iyi olur, çünkü vim'i daha yeni bir sürümle yenilediğinizde xlm.vim dosyanız kaybolacaktır.


+1 :g/Öneriyi seviyorum , ancak 'Soru' hemen yorum etiketini takip etmezse uygulamak zor olabilir.
DaveParillo

@DaveParillo - ah, evet. Dediğim gibi, xml hakkında hiçbir şey bilmiyorum, bu yüzden her zaman böyle olduğunu varsaydım.
Kale

Bir vurgulama grubunu nasıl ayarlayabilirim?
sixtyfootersdude

1
@sixtyfootersdude - bkz. ": e410 yardım".
Kale

@Idigas: referans için teşekkürler. Bir baktım ama yine de sorunumu çözemedim. Soruya bir güncelleme ekledim. Teşekkürler.
sixtyfootersdude

1

Komutu vimrc'nize koymanız gerekmez. İstediğiniz zaman komut satırına girebilir ve vurgulamayı artık istemediğinizde temizleyebilirsiniz. Komutlar şöyle bir şey olurdu:

: merhaba Soru guifg = kırmızı guibg = mavi gui = kalın

Gvim'de (yani, gui ile vim) ön planı (guifg), arka planı ve genel karakter ayarlarını yapar.

o higlighting'den kurtulmak istiyorsanız bunu yapın:

: merhaba Soru temiz

Bir terminalin içinde vim kullanarak bu komutu kullanmak için değiştirebilirsiniz:

: merhaba Soru ctermfg = kırmızı ctermbg = mavi terim = kalın

Elbette bunlardan herhangi birini vimrc'nize koyabilirsiniz ve ayrıca gui ve terim bayraklarını tek bir hi komutunda birleştirebilirsiniz.


[başka bir posterin cevabını okuduktan sonra aşağıda eklendi]

Maalesef, soru satırlarınızın sözdiziminin sözdizimi dosyanızın Vim'in yerleşik 'Soru' vurgulama etiketi ayarlarıyla eşleştiğini varsayıyordum. Sadece vml için xml sözdizimi dosyasından bahseden diğer cevaba bakın ve sonra Soru yerine ToDo vurgulama grubunu kullanarak yukarıdaki komutları verebilirsiniz.


Denendi: merhaba Soru ctermfg = kırmızı ctermbg = mavi terim = kalın ama hiçbir etkisi olmadı.
sixtyfootersdude

Maalesef: hi komutu yalnızca Soru grubunun nasıl vurgulanacağını belirlemiştir. Şimdi, soru grubunun bir parçası olan belgeyi belirtmeniz gerekir. Bunu bir eşleşme komutuyla yapabilirsiniz:: match Soru / [arama deseni] / veya, sizin durumunuzda:: match Soru / Soru /
user22303

0

Ben partiye geç kaldım ama kullandığım TODOve FIXMEtam da bu durum için.

Çoğu olmasa da, colorchemes TODOaşağıdaki örnekte arka plan rengi, alt çizgi ve italik kombinasyonuyla vurgulanacaktır:

<tree>
  <!--TODO : do I have to add a trunk tag ?-->
  <branch>
    <leaf>caterpillar</leaf>
    <leaf>caterpillar</leaf>
  </branch>
</tree>

Anlamsal olarak gerçekten uymuyor, ancak tamamen işlevsel bir bakış açısından çok iyi çalışıyor.

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.