প্রসঙ্গ সংবেদনশীল সন্নিবেশ মোড ম্যাপিং বা সংক্ষেপণ


10

আমি গণিতের টাইপিংকে সহজ করার জন্য আমার ল্যাটেক্স প্লাগইনটির জন্য কিছু ইউটিলিটি ম্যাপিংগুলি বাস্তবায়নের পরিকল্পনা করছি । উদাহরণস্বরূপ, আমি অনুরূপ সংক্ষেপগুলি তৈরি করতে চাই

`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আগে সংখ্যাসূচক IDগুলি সন্ধান করে অনেক উপায়ে অনুকূলিত করা যায়।
lcd047

3

lh-bracket বিভিন্ন 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()আপনার নতুন ম্যাপিংগুলি সংজ্ঞায়িত করার জন্য আপনাকে এর ফাংশনটি ব্যবহার করতে হবে - এটি কারণ লেটেক্স-স্যুট ম্যাপিংয়ের ক্ষেত্রে বেশ চক্রান্তকারী।


আমি আমার নিজস্ব লটেক্স-প্লাগইন বিকাশ করছি (প্রশ্নের লিঙ্কটি দেখুন)। আমি খুঁজে পেয়েছি লেটেক্স-স্যুটটি সাধারণভাবে জটিল এবং অনুপ্রবেশের উপায়। IMAP- কার্যকারিতাটি খুব খারাপ নয়, যদিও আমি এর পরিবর্তে জটিল স্নিপেটের জন্য UltiSnips এর মতো কিছু ব্যবহার করতে পছন্দ করি।
কার্ল ইঙ্গভে লেরভেগ

1
IMAP()ম্যাপিংগুলি সংজ্ঞায়িত করা আকর্ষণীয় ছিল তবে স্নিপেটগুলি / টেম্পলেটগুলির চেয়ে ম্যাপিংগুলি বজায় রাখা আরও শক্ত।
লুক হার্মিটে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.