কীভাবে ভিমগল্ফ সমস্ত কীস্ট্রোক রেকর্ড করে?


10

সময়ে সময়ে আমি ভিমগল্ফের একটি দলে অংশ নিতে চাই । এটি আলোকিত হতে পারে।

কীভাবে তারা সমস্ত কীস্ট্রোক রেকর্ড করতে সক্ষম? এটি অবশ্যই একটি ভিম বৈশিষ্ট্য হতে হবে। যে কেউ যে কোনও উপায় যে কিভাবে করবেন। নির্দিষ্ট পরিস্থিতিতে সমস্ত কিছু রেকর্ড করার কাজে আসে।


1
আমি সবেমাত্র জানতে পেরেছিলাম যে আমাদের এখানে
স্ট্যাটক্স

উত্তর:


10

তারা সম্ভবত অন্তর্নির্মিত প্যারামিটার ব্যবহার করে -w, দেখুন :h -w:

-w {scriptout}  All the characters that you type are recorded in the file
        "scriptout", until you exit Vim.  This is useful if you want
        to create a script file to be used with "vim -s" or
        ":source!".  When the "scriptout" file already exists, new
        characters are appended.  See also |complex-repeat|.
        {scriptout} cannot start with a digit.
        {not in Vi}

সম্পাদনা হিসাবে @B লেয়ার নির্দিষ্ট প্রকৃত কোড ব্যবহার -Wপরামিতি, যা মূলত একই হিসাবে -wকিন্তু লগ ফাইল পরিবর্তে (এটা কীস্ট্রোকগুলিকে সংযোজন এর ওভাররাইট হয় :h -W):

-W {scriptout}  Like -w, but do not append, overwrite an existing file.
        {not in Vi}

ভাল ধারণা! এটা -Wনা -w(আমার উত্তর দেখুন) কিন্তু এখনও ...
বি লেয়ার

@ বিলেয়ার ওয়েল খেলেছি আমি তাদের কোডটি দেখতে খুব অলস ছিলাম :-) আমি -Wমূলত একইরকম নথির সাথে আপডেট করব ।
স্ট্যাটক্স

1
হাঁ। শুধু লিখুন বনাম লিখুন।
বি লেয়ার

একটি (ভাল) অনুমান করা যায় যে একটি ভাল-গবেষণা, সত্য-ভিত্তিক উত্তরের চেয়ে কী স্বীকৃত হয়? মারাত্মক অন্যায় করা হয়েছে। :( ... এলএল
বি লেয়ার

1
'এটি একটি মহৎ অঙ্গভঙ্গি। আমি আপনার ভোটটি নম্রভাবে গ্রহণ করি, ভাল স্যার বা ম্যাডাম। ডিলি ডিলি
বি লেয়ার

14

আমি মনে করি না যে এটি বেশ সহজ তবে আপনি এখানে রুবি কোডটি নিজেই দেখতে পারেন:

https://github.com/igrigorik/vimgolf/tree/master/lib/vimgolf

আমি কীলগিংয়ের জন্য একটি ক্লাস দেখতে পাচ্ছি, একটির জন্য।

এখানে কমান্ড যে লঞ্চ করার জন্য ব্যবহৃত হয় vimমধ্যে lib / অনুপস্থিত vimgolf / cli.rb :

 vimcmd = GOLFVIM.shellsplit + %W{-Z -n --noplugin --nofork -i NONE +0 
    -u #{challenge.vimrc_path} -U NONE -W #{challenge.log_path} #{challenge.work_path}}

@ স্টাটক্সটি প্রায় ছিল -w outfile... -W outfile(আসলে প্রায়) , যা টাইপ করা অক্ষরগুলি এতে যুক্ত করার পরিবর্তে যে ফাইলটিতে প্রেরণ করা হয় সেটিতে ওভাররাইট করে। তবে যেমনটি আমি বলেছি, "একেবারে সহজ" নয় ... সেই ফাইলগুলির মধ্যে একটির এবং যেটি ভিমগল্ফ সরঞ্জাম দ্বারা উত্পন্ন হয় তার সামগ্রীর সাথে তুলনা করুন। এটি একটি আসল ভিমগল্ফ সমস্যা থেকে ...

-W অনুলিপি করা হলে আউটপুট এখানে আটকানো:

GI0. ý`gvgý`ZZ

বেশ কয়েকটি মুদ্রণবিহীন অক্ষর "অনুবাদে হারিয়ে গেছে"।

-W এটি অন স্ক্রিন হিসাবে প্রদর্শিত হিসাবে আউটপুট:

^VGI0. ^[<80>ý`gvg^A<80>ý`ZZ

ঠিক আছে, এটা কৃপণ।

ভিমগল্ফ প্রদর্শিত / আপলোড আউটপুট:

<C-V>GI0. <Esc>gvg<C-A>ZZ

আহ, এটা আরও ভাল।


আপডেট: আমি জিনিসগুলিতে কিছুটা কাছাকাছি দেখার জন্য কয়েক মিনিট ব্যয় করেছি এবং কয়েকটি নতুন তথ্য পেয়েছি।

প্রথমত, আমি উপরে উল্লিখিত কীলগার শ্রেণি কীলগ.আরবি প্রকৃতপক্ষে ধাঁধার একটি বড় অংশ তবে এটি আসলে মোটামুটি সোজা। ভিগ যে কীকোডগুলি নির্গত করে এবং -Wলগ ফাইলে সেভ হয় সেগুলি হয় একটি বাইট বা তিনটি বাইট (0x80 এর প্রথম বাইট মান দ্বারা নির্দেশিত) এবং দুটি সেটের প্রতিটিটির জন্য একটি হ্যাশ মানচিত্র রয়েছে।

এক-বাইট সংস্করণটি বাইট মানটিকে কীকোডের স্ট্রিং উপস্থাপন যেমন 0বা হিসাবে মানচিত্রের মানচিত্র করে g। থ্রি-বাইট সংস্করণ একইভাবে একটি স্ট্রিংকে মানচিত্র করে (যেমন <Esc>বা <C-V>) তবে কী হিসাবে দুটি এবং তিনটির বাইটের সম্মিলিত মানগুলি ব্যবহার করে। কিছু ব্যতিক্রম / কর্নার-কেস রয়েছে যা বিভিন্নভাবে পরিচালনা করা হয় তবে বেশিরভাগ কীকোডগুলি এই দুটি মানচিত্রে সরল দেখার জন্য সমাধান করা হয়।

কী লগার কোডটি কতটা বেসিক ছিল তা আমি কীকোড লগ ফাইলগুলিতে যা দেখছিলাম তার সাথে কিছু ভুল ছিল তা বলতে পারি (যেমন উপরের উদাহরণটি আটকানো হয়েছে)। দেখা যাচ্ছে যে ভিমগল্ফ বিধি দ্বারা প্রয়োজনীয় vimrc ফাইলটি আমার ব্যবহার করা উচিত ছিল। বিশেষত এই লাইন

set t_RV= 

সঠিক লগিং ফলাফল। উপরের "অন-স্ক্রিনে প্রদর্শিত হবে" উদাহরণটি বাস্তবে এরকম দেখাবে:

^VGI0. ^[gvg^AZZ

এখন কেউ এই "কাঁচা" স্ট্রিং থেকে ভিমগল্ফের রেন্ডার করা ফর্মের সরল রেখা দেখতে পাবে।

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