Belirli dosya türleri için vim vurgulama (sözdizimi dosyalarının nereye yerleştirileceği, vim olayları, vimrc'ye yerleştirilecek satır)


17

jak.vimNot aldığımda özel vurgulama sunmak için bir dosya zamanı tanımladım , ancak .jakuzantısı olmayan bazı dosyalara uygulanıyor . Özellikle adlı bir dosya progress.jlog. Sorunun yeniden adlandırdığım uzantıya özel olup olmadığını test etmek progress.jlogiçinprogress (hiçbir uzantı) ama aynı sorunla karşılaştı.

Ben ne yaptım:

  • Oluşturduğum jak.vimdizinde~/.vim/ftdetect
  • Bu satırı ekledim: "au BufRead, BufNewFile * .jak set filetype = jak" vim başvurusunda açıklandığı gibi en üste
  • Vim'i yeniden başlattım (: x ve sonra tekrar açtım)

Bu benim ~/.vim/ftdetect/jak.vimgibi görünüyor:

~/.vim/ftdetect][505]% cat jak.vim
au BufRead, BufNewFile *.jak set filetype=jak

syn region JakeSubtitle start=+==+ end=+==+
highlight JakeSubtitle ctermbg=black ctermfg=DarkMagenta

syn region JakeTitle start=+===+ end=+===+
highlight JakeTitle ctermbg=black ctermfg=yellow

syn region JakeMasterTitle start=+====+ end=+====+
highlight JakeMasterTitle cterm=bold term=bold ctermbg=black ctermfg=LightBlue

syn region emphasis start=+<em>+ end=+</em>+
highlight emphasis ctermbg=black ctermfg=yellow

" makes all of the numbered items bold."
" (this works I just don't like the effect.  Decided to change to just highlight the "number)
"syn region numberedItem start=+^\t*\d*)+ end=+\n+"
syn match numberedItem +^\t*\d*)+
highlight numberedItem cterm=bold

Ve sadece bu benim .vimrcgibi görünüyor bilmeniz gerekir :

~/.vim/ftdetect][508]% cat ../../.vimrc
"on will override defaults set.  Enable will allow you to set defaults."
" also turns on filetype"
"syntax on"
syntax enable

set nocompatible

" ???"
set backspace=2

"Auto indent"
set ai

"Map jj to Esc so that you do not have to reach for the Esc button"
imap jj <Esc>

"do not allow the search to wrap around the screen, must stop at the bottom."
set nowrapscan

"when doing a search highlight all occurances"
":set hlsearch"

"stop text from wrapping on the screen"
set nowrap

"turn the mouse on while in insert mode"
set mouse=i

"attempting to highlight specific keywords so it is easy to see in code."
"see help e410 for more info."
"see this post I created: /superuser/110054/custom-vim-highlighting"
"Legal colors: Black, DarkBlue, DarkGreen, DarkCyan, DarkRed, DarkMagenta,"
"Brown, DarkYellow, LightGray, LightGrey, Gray, Grey, DarkGray, DarkGrey,"
"Blue, LightBlue, Green, LightGreen, Cyan, LightCyan, Red, LightRed, Magenta,"
"LightMagenta, Yellow, LightYellow, White"
syn keyword JakeKeywords        Question TODO Answer JAKEHTTPS PossibleProblem
highlight JakeKeywords cterm=bold term=bold ctermbg=black ctermfg=Blue


"for case-insensitve searches"
set ignorecase

"Override the 'ignorecase' option if the search pattern contains upper"
"case characters.  Only used when the search pattern is typed and"
"'ignorecase' option is on."
set smartcase


"use indents as the folding method"
set foldmethod=indent

"make vim save and load the folding of the document each time it loads"
"also places the cursor in the last place that it was left."
au BufWinLeave * mkview
au BufWinEnter * silent loadview

Not: Okumayı kolaylaştırmak için tüm alıntıları (yorumları) tamamladım


Güncelleme

Nsharish'in gönderisini çok yardımcı buldum . Bunu vimrc'ime eklememi önerdiler:

au BufRead,BufNewFile *.jak set filetype=jak

ve dosyamı jak.vimşuraya ekle~/.vim/syntax

Ne yazık ki bu kod bu iki satırla çakışıyor (benim vimrc'imde)

au BufWinLeave *.c mkview
au BufWinEnter *.c silent loadview

Vim yüklerken bu ikisini kıvrımlarımı, imleç konumunu vb. Kaydetmek için kullanıyorum (bkz. :help lo ). Ben bu iki satır yorum nsharish'in önerisi bir cazibe gibi çalışır. Bu iki satırla hiçbir dosyamda vurgulama yok.

Sonuç

Nsharish'in cevabını işaretledim en iyi olarak (çünkü benim için en yararlı olduğu gibi). Ancak ben sorunu şu şekilde çözdü:

Nsharish haklıydı bu satırda ihtiyacım vardı .vimrc:

syntax enable
au BufRead,BufNewFile *.jak set filetype=jak

Ve dosyamı şu konuma jak.vimtaşımam gerekiyordu:~/.vim/syntax .

Bununla birlikte, yukarıda belirtildiği gibi, bu çizgilerle bir çatışma vardı:

au BufWinLeave * mkview
au BufWinEnter * silent loadview

Bu satırlar yorumlandığında vurgulama işe yaradı.

Ne yapmak için bunu değiştirmek oldu ...set filetype...:

au BufWinEnter,BufRead,BufNewFile *.jak set filetype=jak

BufWinEnter BufRead / BufNew dosya sonra çağrıldığını düşünüyorum, bu yüzden vurgulama son kez kaydedilen biçimlendirme tarafından üzerine yazılıyor.

Bu çözümü bulmama yardımcı olduğu için nsharish'e tekrar teşekkür ederim.


1
* .c ifadeleri * .jak ifadesiyle ne anlamda çelişiyor?
akira

Yanıtlar:


10

Bunu denedin mi ..

  • Jak.vim'inizi .vim / sözdizimi klasörüne koyun
  • Aşağıdaki satırları yalnızca .vimrc dosyanıza yerleştirin.
sözdizimi enable 
au BufRead, BufNewFile * .jak set filetype = jak
Bu jak.vim dosyanızla denedim .... Benim için iyi çalıştı ....
vim7.2 kullanıyorum ...
edit:
Bunu deneyin, bu mkview
ve loadview hatları ile aynı sorunu vardı ... dosyada bir kez filetype ayarlayın ve saklanacaktır.

Dosyayı açın ve " : set ft = jak " yapın, dosyayı kaydedin ve vim'den çıkın ... Şimdi dosyayı yeniden açın ... sözdizimi vurgulama şimdi çalışmalıdır ...
mkview ve loadview son sözdizimi vurgulama ayarlarını kaydetmiş gibi görünüyor Ayrıca....


şu anda çalışıyor ... Ama .vim / ftdetect / klasörünün ne yaptığını biliyor musunuz? Yaşadığım davranış, oradaki herhangi bir biçimlendirme dosyasının tüm dosya türleri için geçerli olmasıdır.
sixtyfootersdude

Ha, bu kısmen işe yaradı .. Ama benim vimrc içinde iki satır daha bir çatışma vardı. Güncellememe bakın.
sixtyfootersdude

2

İtiraf etmeliyim ki, bunun sizin için ne kadar yararlı olacağını bilmiyorum ... Ama ...

http://beerpla.net/2008/04/02/how-to-add-a-vim-file-extension-to-syntax-highlighting/

Sayfanın kaldırılması durumunda metni ekledim ... Ya da değiştirildi ...

Nasıl vim Sözdizimi Vurgulama Dosya Uzantısı Gönderen Artem Russakovskii tarafından gönderildi Nisan 2, 2008 tarihinde Veritabanları, Linux, Programlama 24 lezzetli 9 kazık kaydeder Paylaş 3retweet

Güncelleme: 8 Temmuz 2009

Bugün, vim sözdizimi vurgulaması için özel uzantıları tanımlama hakkında bir soru soruldu, örneğin vim, example.lmx'in aslında xml türünde olduğunu ve xml sözdizimi vurgulamasını uygulayacağını biliyordu. Vim zaten otomatik olarak sadece uzantıya dayalı değil, metnin içindeki belirli dizeleri arayarak

Etrafı kazdıktan sonra çözümü buldum. Aşağıdakileri ~ / .vimrc'e (vim yapılandırma dosyası) ekleyin:

1 2 3 au BufNewFile, BufRead * .lmx set filetype üzerinde sözdizimi set filetype = xml Uyguladıktan sonra .lmx dosyam vurgulanır:

Aynı ilke, örneğin, zaman zaman yapmam gereken mysql dökümleri için de geçerlidir. Bir .sql uzantısına sahip değilse, aşağıdaki gibi bir şey alırsınız:

Sonra

1 BufNewFile, BufRead * .dump set filetype üzerinde sözdizimi sözdizimi filetype = sql herşey yolunda:

Ama neden ve nasıl çalışır, soruyorsun?

: yardım au: au [tocmd] [grup] {event} {pat} [iç içe] {cmd}

{Pat} ile eşleşen bir dosya için Vim'in {event} üzerinde otomatik olarak yürüteceği komutlar listesine {cmd} ekleyin. : help BufNewFile Var olmayan bir dosyayı düzenlemeye başlarken. : help BufRead Yeni bir arabelleği düzenlemeye başlarken, dosyayı arabelleğe okuduktan sonra. : yardım filetype aslında bu hikayeyi B bölümünde anlatır. Ve bunu böyle yaparsınız millet.


Huh, yakında daha iyi bakmak olacak, ama yararlı görünüyor ..
sixtyfootersdude

Peki, bu potansiyel olarak bir sorunu çözebilir ama bu sorunu çözeceğini düşünmüyorum ... Bunun anahtarının .vim/ftdetectdizinle ilgisi olduğunu düşünüyorum ...
sixtyfootersdude

Dürüst olmak gerekirse VIM bile kullanmıyorum, bu yüzden
sözünüzü almalıyım

1

Yaptıklarınızı çoğaltmayı denedim, ancak dosya türünü diğer uzantılara uygulayamadım.

Ayrıca bunun yardımcı olduğunu gördüm:

'New-filetype' için Vim yardım dosyası, kendi 'filetype.vim'inizi oluşturmanızı ~/.vim/filetype.vim ve otomatik komutlarınızı bu dosyaya yazmanızı belirtir:

if exists("did_load_filetypes")
  finish
endif
augroup filetypedetect
  au! BufRead,BufNewFile *.jak      setfiletype jak
augroup END

Jak.vim'inizden gelen tüm sözdizimi ve vurgulama komutlarının altında saklanması gerekir ~/.vim/syntax, bu yüzden ~/.vim/syntax/jak.vim( aukomut olmadan ) kopyalayın .

Ayrıca Vim'den çıkmanız ve değişiklikleri almak için yeniden başlatmanız gerekir.


1

Sanırım işler ters çevrilmiş olabilir, ama ben vim uzmanı değilim.

Sözdizimi vurgulama dosyanızın sözdizimi dizininde olması gerekir. Nsharish'in tavsiyesinde bulunan şeyler, ftdetect'in içine yerleştirdiğiniz dosyaya giren şeyler olabilir.

Bu kısım:

au BufRead,BufNewFile *.jak set filetype=jak

.Vimrc dosyasında ayrıca şöyle bir satır eklemeniz gerekebilir:

au! syntax jak source $VIM/syntax/jak.vim

IMHO, bu şekilde daha mantıklı. Umarım bu yardımcı olur.

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.