একটি শব্দের মাঝামাঝি সময়ে স্মার্ট শব্দ সমাপ্তি


9

নিম্নলিখিত দুটি লাইন সহ একটি ফাইল বিবেচনা করুন:

someLongFunction
someFunction

আমি যখন দ্বিতীয় শব্দের মাঝখানে সন্নিবেশ মোডে থাকি

some|Function

এবং আমি টিপুন Ctrl-n, আমি পেতে

someLongFunctionFunction

ভিমকে কনফিগার করার কোনও উপায় আছে যাতে পরিবর্তে আমি নিম্নলিখিত "স্মার্ট" সম্পূর্ণতা পাই?

someLongFunction

উত্তর:


5

নিম্নলিখিতটি কেবলমাত্র একটি দ্রুত মক-আপ উত্তর (অর্থাত্ কার্যকর না হওয়া পর্যন্ত এটি কার্যকর) অথবা এটি কিছু না ভাঙার আগে পর্যন্ত :), তবে এটি দেখায় যে "এটি সম্ভব":

augroup completion
    autocmd!
    autocmd CompleteDone * call PostCompletion()
augroup END

function! PostCompletion()
    if !empty(v:completed_item)
        "check if text after current cursor position is part of the match
        let crt_word = expand('<cWORD>')
        let compl_word = v:completed_item['word']
        let lcw = len(compl_word)
        let leftover = strpart(crt_word, lcw)
        let lfl = len(leftover)
        if lfl > 0
            let endcompl = strpart(compl_word, lcw - lfl)
            if leftover ==# endcompl
                let cpos = getcurpos()
                normal dW
                call setpos('.', cpos)
            endif
        endif
    endif
endfunction

উপরের কোডটি যা করার চেষ্টা করে তা হ'ল: সমাপ্তির পরে , কার্সারের অধীনে থাকা ডাব্লুআরআরটি সম্পূর্ণ শব্দের চেয়ে দীর্ঘ হয় কিনা তা যাচাই করে এবং যদি তাই হয় তবে এটির 'বাকী' সম্পূর্ণ হওয়ার শেষ অংশের সাথে মিলে যায় কিনা তা আরও পরীক্ষা করে (উদাহরণস্বরূপ, "ফাংশন")। যদি এটি হয় তবে বাকী বাক্সটি মুছে ফেলা হবে (এটি কার্সার অবস্থান সম্পর্কে কিছু জিনিস ধরে নেয়)।

(আমি নিশ্চিত যে এগুলি সম্পাদন করার আরও চতুর উপায় রয়েছে এবং আমি সেগুলি দেখতে চাই!)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.