এটিতে পরিসংখ্যানগুলি করতে আমার কীবোর্ড ইনপুটটি কীভাবে রেকর্ড করবেন?


12

কোডিংয়ের সময় আমি যে সাধারণ প্যাটার্নগুলি ব্যবহার করছি তা আমি খুঁজে পেতে চাই। সুতরাং আমি আমার সমস্ত কীবোর্ড ইনপুট যখন ভিএম এ থাকি তখন অবশ্যই টাইমস্ট্যাম্প সহ রেকর্ড করার উপায় খুঁজছি। তারপরে আমি খুব সাম্প্রতিক ব্যবহৃত ব্যবহৃত নিদর্শন / গতি সম্পর্কে কোনও বিশ্লেষণ করতে পারি যে কোনও ক্রিয়া কী সময় নেয় এবং অনুকূলিত করার জন্য জিনিসগুলি সন্ধান করতে পারে।

ভিমে এটি করার কোনও মূ ?় উপায় আছে? আমি কি এর জন্য একটি প্লাগইন চেষ্টা করে লিখব? এরকম কিছু করার পারফরম্যান্সের কী কী প্রভাব পড়বে?

ধন্যবাদ


1
আপনি -wযখন ভিএম শুরু করবেন তখন আপনার পতাকাটি দেখা শুরু করা উচিত । আপনি এটির সাথে প্রতিটি কীস্ট্রোক রেকর্ড করতে পারেন।
nobe4

4
সম্পর্কিত ব্লগ পোস্ট ( লিঙ্ক )। এটি আপনাকে দেখায় যে কীভাবে আপনার ইনপুট ( vim -w file.log) রেকর্ড করা যায় এবং ফাইলটিকে পৃথক কমান্ডে পার্স করার জন্য একটি হ্যাস্কেল স্ক্রিপ্ট সরবরাহ করে যা আপনি তারপরে বিশ্লেষণ করতে পারেন। যদিও টাইমস্ট্যাম্প নেই।
টোকোয়ামী

আপনাকে ধন্যবাদ @ নোবি 4 এটি কার্যকর মনে হচ্ছে এবং প্রায় আমি খুঁজছিলাম। আমি এখনও ভাবছি সময়টি যদি কোনওভাবে সংগ্রহযোগ্য হয়। টাইমস্ট্যাম্প নাও হতে পারে, তবে কী স্ট্রোকগুলির মধ্যে সময় পার্থক্য করে। এটি কীভাবে জিনিসগুলি যায় তার গতি সন্ধানে সহায়তা করতে পারে।
6D65

আসলে এটি আপনার দুজনের জন্যই প্রশ্ন ছিল। এটি কেবলমাত্র আমাকে একটি মন্তব্যে উল্লেখ করার অনুমতি দেয়নি।
6D65

কীভাবে টাইমস্ট্যাম্প ক্যাপচার করবেন সে সম্পর্কে এখানে একটি ধারণা দেওয়া হয়েছে: নীচের স্ক্রিপ্টটি ব্যবহার করুন এবং এইভাবে ভিমকে কল করুন: vim -w <(./test-io.py > log)( vim -w <(tee raw-log | ./test-io.py > log)আপনি যদি কাঁচা আউটপুটও চান তবে) ( শুধুমাত্র * নিক্স )। এটিতে টাইমস্ট্যাম্পগুলি সহ, প্রতিটি সারি প্রতি বাইট, ইনপুট লিখতে হবে log। আমি যা লক্ষ্য করেছি তা হ'ল ভিম কমান্ডগুলি একের পর এক আউটপুট দেয় না তবে সেগুলি ফ্লাশ করে।
টোকয়ামি

উত্তর:


4

-wকমান্ড লাইন বিকল্পটি যখন কোনও ফাইলের সাথে পাস করা হয় তখন ভিম সমস্ত ইনপুট লগ করার অনুমতি দেয় :

-w {স্ক্রিপ্টআউট you আপনি টাইপ করা সমস্ত অক্ষর স্ক্রিপ্টআউট file ফাইলটিতে রেকর্ড করা হয়, যতক্ষণ না আপনি ভিম থেকে প্রস্থান করেন। আপনি যদি "vim -s" বা ": উত্স!" ব্যবহারের জন্য কোনও স্ক্রিপ্ট ফাইল তৈরি করতে চান তবে এটি দরকারী। যদি {স্ক্রিপ্টআউট} ফাইলটি বিদ্যমান থাকে তবে অক্ষরগুলি সংযোজন করা হয়।

এখন যেহেতু আমাদের ইনপুটটিতে অ্যাক্সেস রয়েছে আমরা যেখানে চাই সেখানে এটি পুনর্নির্দেশ করতে পারি। উদাহরণস্বরূপ নিম্নলিখিত উপায় ( কেবলমাত্র * নিক্স সিস্টেমগুলি ):

vim -w >(./timestamper.py > log)
vim -w >(tee raw-log | ./timestamper.py > log) # If we want the raw log, too

timestamper.pyনিম্নলিখিত সংক্ষিপ্ত পাইথন লিপিটি কোথায় :

#!/usr/bin/env python

import sys
import datetime

while True:
    if (sys.stdin.closed):
        sys.stdout.write("Input closed\n")
        break

    a = sys.stdin.read(1)
    if (not a):
        break
    sys.stdout.write("[{}]: {}\n".format(datetime.datetime.now(), a))

আপনি আরও পরিশীলিত কিছু করতে চাইলে স্ক্রিপ্টটি অন্য কোনও প্রোগ্রামের সাথে প্রতিস্থাপন করা যেতে পারে যা ইনপুট নেয়।

দ্রষ্টব্য: কিছু সংক্ষিপ্ত পরীক্ষার পরে আমি জানতে পেরেছি যে ভিএম মনে হয় যে এটি ইনফুটগুলি একটি বাফার রাখবে যা এটি কোনও কোনও সময়ে এবং প্রস্থান করার সময় প্রবাহিত হয়। এটি টাইমস্ট্যাম্পগুলি মোটামুটি অবিশ্বাস্য করে তোলে।


হ্যাঁ। আমি ভাবছি যদি আমি এর জন্য কোনও নেওভিম ইস্যু তুলতে পারি। সম্ভবত ছেলেরা এই বৈশিষ্ট্যটি সরবরাহ করতে আগ্রহী। অথবা আমি প্রথমে মাথা ডুবিয়ে দিতে পারলাম এবং অনুমতি পেলে তা নিজেই প্যাচ করার চেষ্টা করতে পারব, যদিও আমার সম্ভবত সময় হবে না।
6D65

@ 6D65 আমি মনে করি আপনি নীওভিম প্রকল্পের জন্য একটি ইনপুট ডিবাগ লগ বৈশিষ্ট্যটি প্রস্তাব করতে পারেন যেখানে ব্যবহারকারীর প্রতিটি ইনপুট টাইমস্ট্যাম্পের সাহায্যে প্রদর্শিত হয়। আমি প্রায়শই :terminalইনপুট সম্পর্কিত সমস্যাগুলি চেষ্টা করতে এবং ডিবাগ করার জন্য অস্থায়ীভাবে প্যাচিং কোডটি দেখেছি যাতে এটি একটি কার্যকর বৈশিষ্ট্য হওয়া উচিত। তাদের কাছে থাকা রিমোট প্লাগইন এপিআইয়ের সাথে আমি পরিচিত নই, তবে আসল সময়ে ইনপুট পাওয়ার জন্য এর কিছু উপায় থাকতে পারে।
টোকয়ামি

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