প্রতিটি লাইনের জন্য কীভাবে পাইথন স্টেটমেন্ট কার্যকর করা যায়?


11

আমি নিম্নলিখিত নমুনা কোডটি পাইথন স্টেটমেন্ট ব্যবহার করে বর্তমান লাইনটি সংশোধন করেছি:

:py import vim; vim.current.line="["+vim.current.line+"]"

আমি বর্তমান ফাইলে প্রতিটি লাইনের জন্য এই বিবৃতিটি কীভাবে কার্যকর করতে পারি?

সম্পর্কিত: আপনি কীভাবে পাইথনকে ভিমে ব্যবহার করতে পারেন? স্ট্যাকওভারফ্লোতে

উত্তর:


10

আপনি pydoভিএম .4.৪ থেকে উপলব্ধ কমান্ডটি ব্যবহার করতে পারেন , ম্যানুয়ালটিতে এটি কীভাবে আমার চেয়ে আরও ভাল কাজ করে তা বর্ণনা করে:

: [পরিসর] পাইডো {শরীর}

পাইথন ফাংশন সম্পাদন করুন "ডিফ _ভিম_পিডো (লাইন, লিনেনার): [রেঞ্জ] -এর প্রতিটি লাইনের জন্য {বডি}", ফাংশন আর্গুমেন্টগুলি প্রতিটি লাইনের পাঠ্য বিন্যাস ব্যতীত <EOL>, এবং বর্তমান ব্যতীত সেট করা হবে লাইন সংখ্যা. ফাংশনটি কোনও স্ট্রিং বা কোনওটিই ফেরত দেয়। যদি কোনও স্ট্রিং ফিরে আসে তবে এটি বর্তমান টার্নের লাইনের পাঠ্য হয়ে যায়। [রেঞ্জ] এর জন্য ডিফল্ট পুরো ফাইল: "1, 1"।

উদাহরণস্বরূপ আপনি একটি কমান্ড ব্যবহার করতে পারেন:

:python import vim
:pydo vim.current.buffer[linenr - 1] = '[%s]' % line

linenr - 1বিট আছে কারণ মধ্যে লাইন vim.current.buffer0-ইন্ডেক্স কিন্তু তেজ 1 থেকে লাইন গণনা শুরু।

সুন্দর জিনিসটি হ'ল আপনি সহজেই আপনার পাইথন কোডটি বিভিন্ন রেখায় চালানোর জন্য একটি কাস্টম কমান্ড সংজ্ঞায়িত করতে পারেন:

command! -range=% BracketLines 
    \ <line1>,<line2>pydo vim.current.buffer[linenr - 1] = '[%s]' % line

1
এটি ভিএম .4.৪ থেকে পাওয়া যায়।
কেনারব

7

আপনি বর্তমান বাফারের সাথে এটি পেতে পারেন vim.current.bufferযা একটি পুনরাবৃত্তিযোগ্য; forপ্রতিটি লাইন পেতে আপনি একটি লুপ ব্যবহার করতে পারেন ।

আপনি লাইনগুলি নির্দিষ্ট করে তাদের পরিবর্তন করতে পারেন; সুতরাং এটি একত্রিত করা, আমরা পেতে:

:py from vim import *
:py for i, line in enumerate(current.buffer): current.buffer[i] = '[%s]' % line

এছাড়াও দেখুন :help python-buffer

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