সংক্ষিপ্ত মন্তব্যগুলি এবং উদ্ধৃত পাঠ্যে ওভাররাইড


0

ভিআইএম-এ আমার নিম্নলিখিত হস্তক্ষেপ রয়েছে:

iab for for<Space>(<Space>{{<Esc>kA<Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>

এটি সুন্দরভাবে forনিম্নলিখিত লেখার সাথে প্রতিস্থাপন করে:

for (  ) {

}

তবে, আমি এই সংক্ষিপ্তরটি কেবল কোডে কাজ করতে চাই, মন্তব্যগুলিতে বা একক বা দ্বিগুণ উদ্ধৃত স্ট্রিংগুলিতে নয়। এই সীমাবদ্ধতা কীভাবে সম্পাদন করা যেতে পারে? ধন্যবাদ!

উত্তর:


1

প্রথমত, আপনার সংক্ষিপ্তসারটি আপনি যা বলেন তা আপনার উদাহরণে সন্নিবেশ করে না; এটি আমার কাছে বরং বাজে আচরণ করে যদিও আমি ইটচার () সংজ্ঞায়িত করেছি। আমার সর্বোত্তম অনুমান যে এটি অন্যান্য সংক্ষেপণ / ম্যাপিংগুলি ট্রিগার করছে এবং আমি ধরে নেব যে আমার এটি একা ছেড়ে দেওয়া উচিত।

আমার সমাধানটি সিনট্যাক্স ইঞ্জিনে টাই করা, যার অর্থ এটি যদি কেবল আপনার সিনট্যাক্স হাইলাইটিং সক্ষম করে থাকে তবেই এটি কাজ করবে । এটা চেষ্টা কর:

iab <buffer> <expr> for <SID>CodeInsert("for", "for<Space>(<Space>{{<Esc>kA<Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>")

function! s:CodeInsert(abbr,str)
    let syn = synIDattr(synIDtrans(synID(line('.'), col('.') - 1, 1)), 'name')
    if syn ==? 'comment' || syn ==? 'constant'
        return a:abbr
    else
        return a:str
    endif
endfunction

ধন্যবাদ! আমি এই সমাধানটি নিয়ে ঘুরে দেখব এবং আমি কী কাজ করতে পারি তা দেখুন।
dotancohen

আপনি ঠিক, আমি যেমন সেইসাথে অন্যান্য imappings আছে, {{। যাই হোক না কেন, আপনার সমাধান নিখুঁত কাজ করে। ধন্যবাদ!
dotancohen

আমি সাহায্যে synIDattrএবং অন্যান্য বিটগুলি পড়তে সক্ষম হয়েছি , তবে সহায়তা পৃষ্ঠাটি পড়ার সময় h ==?মনে হয় যে আমি সাহায্যের পাঠ্যটি পেয়ে যাচ্ছি ====?অপারেটর কী ? ধন্যবাদ।
dotancohen

দেখুন: সহায়তা expr - ==? (বা: সহায়তা এক্সপ্রেস 4)
হেপটাইট

হাই, দয়া করে দেরি করা প্রশ্নটি ক্ষমা করুন। কেন ফাংশন নাম আগে করা হয় s:? আমি কেবল গুরুদের কাছ থেকে শেখার চেষ্টা করছি। ধন্যবাদ।
dotancohen

1

autocmdপাইথন ফাইলগুলিতে সংক্ষিপ্তসার রোধ করতে আপনি ব্যবহার করতে পারেন :

if has("autocmd")
  autocmd FileType php,c,java iab for for<Space>...<CR>
endif

আমি মনে করি না এটি কেবল নির্দিষ্ট পাঠ্য বিভাগের ভিতরে ডাবল বা একক উদ্ধৃত স্ট্রিংয়ের কাজ করা থেকে বিরত রাখা সম্ভব।


ধন্যবাদ। পাইথন বিটটি অত্যন্ত গৌণ, আমি দেখতে পেয়েছি কারণ এটি বাস্তব সমস্যা থেকে বিক্ষিপ্ত হচ্ছে। যে কোনও ক্ষেত্রে আমি upvated করেছি। ধন্যবাদ।
dotancohen
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.