विम, संदर्भ-संवेदनशील टिप्पणी / असहज व्यवहार


9

मैं विम के साथ बहुत सारे PHP कोड संपादित करता हूं, और मैं अपने कुछ मैक्रोज़ के साथ एक रोड़ा में भाग गया हूं .vimrc

मैं वर्तमान में इन दो मैक्रोज़ का उपयोग सी-स्टाइल में टिप्पणी / असहजता के लिए करता हूं

"c-style (//) comment (press the [.] key)
au FileType php vnoremap . :s/^\(\s*\)\(.\+\)$/\1\/\/\2/<CR>:noh<CR>gv
"c-style (//) uncomment (press the [,] key)
au FileType php vnoremap , :s/^\(\s*\)\/\//\1/<CR>:noh<CR>gv

और इन दोनों को एचटीएमएल-शैली में टिप्पणी / असहज करना है

"html-style (<!-- -->) comment (press the [.] key)
au FileType html vnoremap . :s/^\(\s*\)\(.\+\)$/\1<!-- \2 -->/g<CR>:noh<CR>gv
"html-style (<!-- -->) uncomment (press the [,] key)
au FileType html vnoremap , :s/^\(\s*\)<!-- \(.*\) -->/\1\2/g<CR>:noh<CR>gv

ये मैक्रोज़ अपनी इच्छित फ़ाइल-प्रकार पर लागू होने पर ठीक काम करते हैं, लेकिन चूंकि अक्सर HTML एक PHP फ़ाइल के अंदर एम्बेडेड होता है, इसलिए PHP की टिप्पणी शैली बेकार होती है।

क्या वीआईएम के लिए यह पता लगाने का कोई तरीका है कि क्या यह पीएचपी फाइल के अंदर एचटीएमएल कोड के एक हिस्से पर काम कर रहा है, और फिर सही टिप्पणी व्यवहार लागू करें?

संपादित करें: मुझे पता है कि मैं मैन्युअल रूप से फ़िलेटाइप सेट कर सकता हूं, और इसके लिए प्लगइन्स उपलब्ध हैं, मैं बेहतर मैक्रोज़ लिखने के बारे में अधिक जानने के लिए देख रहा था।


जवाबों:


2

आप जो चाहते हैं, उसे करने के लिए एक फ़ंक्शन लिखने और उसे अपनी पसंदीदा कुंजियों को मैप करने के लिए वास्तव में कोई रास्ता नहीं है।

आरंभ करने :echo synIDattr(synID(line("."), col("."), 1), "name")के लिए कर्सर के नीचे वर्तमान शब्द के लिए हाइलाइट समूह का नाम प्रिंट करेगा।

आप उस जानकारी का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि किस टिप्पणी शैली का उपयोग करना है।

आरंभ करने के लिए एक मोटा उदाहरण:

function! s:MyComment () range
    for i in range(a:firstline, a:lastline)
        exe "normal " . i . "gg"
        normal ^
        let stuff = synIDattr(synID(line("."), col("."), 1), "name")
        if strpart(stuff, 0, 4) == "html"
            normal I<!-- 
            normal A -->
        else
            normal I//
        endif
    endfor
endfunction
vmap <silent> . :call <SID>MyComment()<CR>

0

यदि आप मैन्युअल रूप से चुनना चाहते हैं कि आप किस प्रकार की टिप्पणी का उपयोग करना चाहते हैं, तो मैं इस टिप का सुझाव दूंगा

आपको याद रखने के लिए 4 संयोजन होंगे:

C-style:
,* comment  
,c uncomment

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