संवेदनशील संवेदनशील सम्मिलित मोड मैपिंग या संक्षिप्त नाम


10

मैं गणित के टाइपिंग को आसान बनाने के लिए अपने LaTeX प्लगइन के लिए कुछ उपयोगिता मैपिंग लागू करने की योजना बना रहा हूं । उदाहरण के लिए, मैं इसके समान संक्षिप्ताक्षर बनाना चाहता हूं

`a : \alpha
`b : \beta
-> : \to
=> : \Rightarrow

और इसी तरह। मैं (कुछ) केवल गणित के वातावरण के अंदर उपलब्ध होना चाहता हूं, और बाहर नहीं।

मुझे पता है कि मैं वाक्य रचना समूहों, यानी के माध्यम से गणित के वातावरण को पहचान सकते हैं texMathZoneEऔर texMathZoneX। हालाँकि, मुझे यह नहीं पता कि संदर्भ संवेदनशील मैपिंग या संक्षिप्तीकरण करने के लिए इसका उपयोग कैसे करें।

जवाबों:


5

शायद इस तरह:

let s:TeXmaps = {
    \ '`a': '\alpha',
    \ '`b': '\beta',
    \ '->': '\to',
    \ '=>': '\Rightarrow' }

function! <SID>IsTeXMath()
    return &ft ==# 'tex' && match(map( synstack(line('.'), col('.')), 'synIDattr(v:val, "name")' ), '\m^texMathZone[EX]$') >= 0
endfunction

for s:k in keys(s:TeXmaps)
    silent! exec 'inoremap <silent> ' . s:k . ' <C-r>=<SID>IsTeXMath()?' . string(s:TeXmaps[s:k]) . ':' . string(s:k) . '<CR>'
endfor

यह संभव है कि जाँच करने वाले वैश्विक संक्षिप्त नाम के बजाय केवल टेक्स फ़िलिपेट पर बफर-स्थानीय संक्षिप्तिकरण का उपयोग करें 'filetype'
पीटर रिनकर

@ पेटर रेंकर: हां, यह सिर्फ अवधारणा का प्रमाण है। इसे कई तरह से ऑप्टिमाइज़ किया जा सकता है, पहले texMathZoneEऔर बाद के लिए संख्यात्मक आईडी ढूंढकर फाई texMathZoneX
lcd047

3

lh-ब्रैकेटMap4TheseContexts() फ़ंक्शन प्रदान करता है जो विभिन्न चीजों को करने के लिए संदर्भ का पता लगाने का ख्याल रखता है।

" To be defined in a tex ftplugin -> ~/.vim/ftplugin/tex/your-shortcuts.vim
:inoremap <buffer> <silent> `a <c-r>=Map4TheseContexts('`a', 'texMathZone', '\\alpha', '`a')<cr>
" or:
:inoremap <buffer> <silent> <expr> `a Map4TheseContexts('`a', 'texMathZone', '\\alpha', '`a')

नोट: यदि आपने लेटेक्स-सूट स्थापित किया है, तो आपको IMAP()अपने नए मैपिंग को परिभाषित करने के लिए इसके फ़ंक्शन का उपयोग करना होगा - ऐसा इसलिए है क्योंकि लेटेक्स-सूट मैपिंग के बारे में काफी घुसपैठ है।


मैं अपना खुद का LaTeX-plugin विकसित कर रहा हूं (प्रश्न में लिंक देखें)। मैंने पाया है कि लेटेक्स-सूट सामान्य रूप से जटिल और घुसपैठ का तरीका है। आईएमएपी-कार्यक्षमता इतनी बुरी नहीं है, हालांकि मैं इसके बजाय जटिल स्निपेट के लिए उल्टीस्नीप्स जैसे कुछ का उपयोग करना पसंद करता हूं।
कार्ल यंगवे लर्वग

1
IMAP()मैपिंग को परिभाषित करना दिलचस्प था, लेकिन स्निपेट्स / टेम्प्लेट की तुलना में मैपिंग कठिन है।
ल्यूक हरमिट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.