विशिष्ट फ़ाइल प्रकारों के लिए हाइलाइटिंग करना


17

मैंने jak.vimनोट लेते समय कस्टम हाइलाइटिंग की पेशकश करने के लिए एक फ़ाइल समय को परिभाषित किया है , हालांकि यह कुछ फाइलों पर लागू किया जा रहा है जिसमें .jakएक्सटेंशन नहीं है । विशेष रूप से एक फ़ाइल जिसका नाम है progress.jlog। बस परीक्षण करने के लिए करता है, तो समस्या यह है कि विस्तार मैं नाम दिया करने के लिए विशिष्ट था progress.jlogकरने के लिए progress(कोई विस्तार), लेकिन एक ही समस्या पैदा हुई।

मैंने क्या किया:

  • मैंने jak.vimडायरेक्टरी बनाई~/.vim/ftdetect
  • मैंने इस पंक्ति को जोड़ा: "au BufRead, BufNewFile * .jak set filetype = jak" जैसा कि शीर्ष के संदर्भ में वर्णित है।
  • मैंने विम को फिर से शुरू किया: (x, और फिर फिर से खोल दिया)

यह मेरी ~/.vim/ftdetect/jak.vimतरह दिखता है:

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

और बस आपको यह जानने की जरूरत है कि यह मेरे .vimrcजैसा दिखता है:

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

नोट: मैंने सभी उद्धरणों (टिप्पणियों) को पूरा किया ताकि इसे पढ़ने में आसानी हो


अपडेट करें

मुझे nishharish की पोस्ट बहुत मददगार लगी । उन्होंने सुझाव दिया कि मैं इसे अपने vimrc में जोड़ता हूं:

au BufRead,BufNewFile *.jak set filetype=jak

और मेरी jak.vimफ़ाइल में जोड़ें~/.vim/syntax

दुर्भाग्य से यह कोड इन दो पंक्तियों के साथ टकराता है (मेरे vimrc में)

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

विम (लोड हो रहा है :help lo) को देखने के लिए अपने फोल्ड, कर्सर की लोकेशन आदि को बचाने के लिए मैं इन दोनों का उपयोग करता हूं । अगर मैं उन दो पंक्तियों पर टिप्पणी करता हूं तो nsharish का सुझाव एक आकर्षण की तरह काम करता है। उन दो पंक्तियों के साथ मेरी किसी भी फाइल में कोई हाइलाइटिंग नहीं है।

निष्कर्ष

मैंने nsharish के उत्तर को सर्वश्रेष्ठ उत्तर के रूप में चिह्नित किया (क्योंकि यह मेरे लिए सबसे अधिक उपयोगी है)। हालाँकि इस तरह से मैंने समस्या हल की है:

नासारिश सही था मुझे इस लाइन की जरूरत थी मेरे में .vimrc:

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

और मुझे अपनी jak.vimफ़ाइल को स्थानांतरित करने की आवश्यकता थी ~/.vim/syntax

हालांकि जैसा कि ऊपर उल्लेख किया गया था कि इन पंक्तियों के साथ एक संघर्ष था:

au BufWinLeave * mkview
au BufWinEnter * silent loadview

जब इन लाइनों पर प्रकाश डाला गया काम किया गया था।

इसे बदलने के ...set filetype...लिए मुझे जो करने की आवश्यकता थी :

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

मुझे लगता है कि BufWinEnter को BufRead / BufNew फ़ाइल के बाद कहा जाता है , इसलिए हाइलाइटिंग को पिछली बार सहेजे गए स्वरूपण द्वारा अधिलेखित किया जा रहा था।

इस समाधान के साथ आने में मेरी मदद करने के लिए nsharish को फिर से धन्यवाद।


1
किस अर्थ में * .सी स्टेटमेंट के साथ * .सी स्टेटमेंट का टकराव होता है?
अकीरा

जवाबों:


10

क्या आपने यह कोशिश की ..

  • अपने jak.vim को .vim / सिंटैक्स फ़ोल्डर में रखें
  • निम्न पंक्तियाँ केवल अपनी .vimrc फ़ाइल में रखें।
सिंटैक्स सक्षम 
au BufRead, BufNewFile * .jak सेट filetype = jak
मैं अपने jak.vim फ़ाइल के साथ यह कोशिश की .... यह मेरे लिए ठीक काम किया ....
मैं vim7.2 का उपयोग कर रहा हूँ ...
संपादित करें:
यह कोशिश करो,
मैं उन mkview और loadview लाइनों के साथ एक ही समस्या थी ... बस फ़ाइल में एक बार फ़ाइल का सेट करें और इसे तब रखा जाएगा

फ़ाइल खोलें, फिर " : set ft = jak " करें, फ़ाइल को सहेजें और vim छोड़ दें .... अब फ़ाइल को फिर से खोलें ... सिंटैक्स हाइलाइटिंग को अब काम करना चाहिए ...
mkview और loadview अंतिम सिंटैक्स हाइलाइट सेटिंग्स को सहेजने लगता है भी ....


अभी कोशिश कर रहा हूं ... लेकिन क्या आप जानते हैं कि .vim / ftdetect / folder क्या करता है? जो व्यवहार मैं अनुभव कर रहा हूं, वह यह है कि वहां कोई भी स्वरूपण फ़ाइल सभी फ़ाइल प्रकारों पर लागू होती है।
साठफुटेरसुडे

हुह, कि आंशिक रूप से काम किया .. हालांकि मेरे vimrc में दो अन्य लाइनों के साथ एक संघर्ष था। मेरा अपडेट देखें
साठफुटेरसूड 16

2

मुझे स्वीकार करना चाहिए, मुझे नहीं पता कि यह आपके लिए कितना उपयोगी होगा ... लेकिन ...

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

मैंने पाठ संलग्न किया है कि पृष्ठ को नीचे ले जाया गया है ... या परिवर्तित ...

कैसे एक फ़ाइल एक्सटेंशन जोड़ने के लिए सिंटेक्स हाइलाइटिंग vim Syntax हाइलाइटिंग द्वारा पोस्ट किया गया 2 अप्रैल, 2008 को डेटाबेस, लिनक्स में, 24 स्वादिष्ट प्रोग्रामिंग प्रोग्रामिंग 2 डिग्गी बचाता है शेयर 3retweet

अपडेट किया गया: 8 जुलाई, 2009

आज मुझे विम सिंटैक्स को उजागर करने के लिए कस्टम एक्सटेंशन को परिभाषित करने के बारे में एक सवाल पूछा गया था, उदाहरण के लिए, विम को पता होगा कि example.lmx वास्तव में टाइप xml है और इस पर हाइलाइटिंग xml सिंटैक्स लागू करें। मुझे पता है कि विम पहले से ही स्वचालित रूप से विस्तार पर आधारित नहीं है, लेकिन पाठ के अंदर कुछ तारों की तलाश में है, जैसे

आसपास खुदाई करने के बाद मुझे इसका हल मिला। निम्नलिखित को ~ / .vimrc (vim कॉन्फ़िगरेशन फ़ाइल) में जोड़ें:

Au BufNewFile, BufRead * .lmx सेट filetype = xml पर filetype पर 1 2 3 सिंटैक्स। इसे लागू करने के बाद, मेरी .lmx फ़ाइल हाइलाइट की गई है।

उदाहरण के लिए, समान सिद्धांत काम करता है, उदाहरण के लिए, mysql डंप के लिए जो मुझे समय-समय पर करना पड़ता है। यदि उनके पास .sql एक्सटेंशन नहीं है, तो आपको कुछ ऐसा मिलेगा:

उपरांत

A 2 BufNewFile, BufRead * पर filetype पर 1 2 3 सिंटैक्स * .dump सेट फ़िलेाइप = sql सब कुछ ठीक है:

लेकिन यह क्यों और कैसे काम करता है, आप पूछते हैं?

: au: au [acm] [समूह] {घटना} {pat} [नेस्टेड] {cmd} मदद करें

आदेशों की सूची में {cmd} जोड़ें, जो Vim {pat} को स्वचालित रूप से {pat} से मेल खाने वाली फ़ाइल के लिए निष्पादित करेगा। : BufNewFile में मदद करें जब ऐसी फाइल को संपादित करना शुरू हो जो मौजूद नहीं है। : BufRead की मदद करें बफर में फाइल को पढ़ने के बाद, एक नया बफर संपादित करना शुरू करें। : मदद filetype वास्तव में भाग बी में यह पूरी कहानी बताएगा और यह है कि आप इसे कैसे करते हैं, दोस्तों।


हुह, जल्द ही इस पर बेहतर नज़र रखने के लिए, लेकिन उपयोगी लग रहा है ..
साठफुटर्सडूड

खैर, यह संभावित रूप से एक समस्या को हल कर सकता है, लेकिन मुझे नहीं लगता कि यह इस समस्या को हल करेगा ... मुझे लगता है कि इस के लिए .vim/ftdetectनिर्देशिका के साथ क्या करना है ...
sixtyfootersdude

मैं ईमानदारी से VIM का उपयोग भी नहीं करता, इसलिए मुझे इस पर आपका वचन लेना होगा ...
बेंजामिन शॉलनिक

1

मैंने पुन: प्रयास किया है कि आपने क्या किया है, लेकिन अन्य एक्सटेंशनों पर लागू किए गए फ़िलेटाइप को प्राप्त नहीं कर सका।

मैंने यह भी पाया कि इससे मदद मिली:

'नए-फ़ाइलप्रकार' के लिए विम सहायता-फ़ाइल ~/.vim/filetype.vim में उस फ़ाइल में अपना ऑटो कमांड लिखने और उसमें अपना 'filetype.vim' बनाने का उल्लेख है :

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

उन सभी वाक्यविन्यास और हाइलाइट कमांड को आपके jak.vim से संग्रहीत करने की आवश्यकता है ~/.vim/syntax, इसलिए इसे ~/.vim/syntax/jak.vim( auकमांड के बिना ) कॉपी करें ।

आपको विम को छोड़ना होगा और परिवर्तनों को लेने के लिए पुनः आरंभ करना होगा।


1

मुझे लगता है कि चीजें आसपास मुड़ सकती हैं, लेकिन मैं कोई विशेषज्ञ नहीं हूं।

आपकी सिंटैक्स हाइलाइटिंग फ़ाइल सिंटैक्स निर्देशिका में होनी चाहिए। Nsharish की सलाह में वो चीजें हो सकती हैं जो आपके द्वारा ftdetect के अंदर रखी गई फ़ाइल में जाती हैं।

यह भाग:

au BufRead,BufNewFile *.jak set filetype=jak

.Vimrc में, आपको एक पंक्ति जोड़ने की आवश्यकता हो सकती है:

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

IMHO, यह इस तरह से अधिक समझ में आता है। आशा है कि ये आपकी मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.