vim: একটি ফাইলের মধ্যে সমস্ত লাইন প্রথম অক্ষর লুকান


12

আমি ভিএম ব্যবহার করে লগ ফাইলটি বিশ্লেষণ করছি এবং ফর্ম্যাটটি দেখতে এটির মতো দেখাচ্ছে

YYYY-MM-DD HH:MM:SS.USEC PID Name LogText

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


আপনি কীভাবে এটি ভিএম করেন তা আমি জানি না তবে আপনি যদি কোনও অস্থায়ী ফাইল তৈরি করতে আপত্তি করেন না তবে আপনি চালনা করতে পারেন cut -c36- logfile > logfile_with_first_35_chars_missingএবং তারপরে পর্যালোচনা করুন।
ওয়ারউইক

উত্তর:


7

আপনি প্রথম অক্ষরগুলি কীভাবে গোপন করবেন সেগুলি সম্পর্কে জিজ্ঞাসা করেছিলেন, সেগুলি সরাতে বা দেখার জন্য এগুলি স্ক্রোল করবেন না - তাই এখানে কীভাবে তাদের লুকিয়ে রাখবেন তা এখানে:

গোপন ব্যবহার করে টেক্সটটি লুকান H

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

প্রতিটি লাইনের প্রথম 25 টি অক্ষরটি গোপন করতে:

:syn match Concealed '^.\{25\}' conceal
:set conceallevel=2

পরিবর্তে একটি তারিখের বিরামচিহ্নের সাহায্যে কেবল রেখাগুলি আড়াল করতে:

:syn match Concealed '^....-..-.. ..:..:..\..... ' conceal

গোপন করা:

:syn clear Concealed
:set conceallevel=0

এটি সাধারণত দেখতে কেমন লাগে:

YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText

প্রথম দুটি কমান্ড কার্যকর করার পরে এটি দেখতে পাবেন:

PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText


এছাড়াও দেখুন - ভিতরে vim:
help :syn-match
help :syn-conceal
help 'conceallevel'
help 'concealcursor'


(এটি যদি এরূপ আচরণ না করে তবে আমাকে জানান - এমন আরও কিছু সেটিংস থাকতে পারে যা সম্পর্কে আমি অবগত নই - আমি এটি কাজে লাগিয়ে দেব))


1
ভাল কাজ করে, আমি মনে করি এটি কাজ করার জন্য ভিমকে +conceal(খনিটি) বিকল্পটি সংকলন করা দরকার । set concealcursor=ncকার্সার লাইনটি প্রসারিত হওয়া থেকে বিরত রাখতেও করণীয় ভাল ।
ব্যবহারকারী 881300

হ্যাঁ, +concealবৈশিষ্ট্যটি বিকল্পটি কয়েক বছরের মতো স্ট্যান্ডার্ড। দুঃখের বিষয় যে এটি এতক্ষণে সুপরিচিত নয়। এটি সত্যিই দুর্দান্ত এবং নমনীয়। প্রচুর নতুন বিকল্প দেয় ...
ভোলকার সিগেল

8

ভিমের ফিল্টার কার্যকারিতা ব্যবহার করুন । চালান:

:%!cut -b36-

cutকমান্ডের মাধ্যমে আপনার বাফারের সামগ্রীগুলি চালনার জন্য , কেবলমাত্র 36 বাইট এবং তারপরে বজায় রাখা। %মানে পুরো বাফারটি চালানো এবং আউটপুটটির সাথে এর বিষয়বস্তুগুলি প্রতিস্থাপন করা, তারপরে !ফিল্টার কমান্ড, প্রোগ্রামটি চালানোর জন্য বাকী লাইনের সাথে। আপনি উপরের দিকে বাফারটি সংরক্ষণ না করে এটি অন্তর্নিহিত ফাইলটি পরিবর্তন করে না।

আসল নিরক্ষিত বাফারটি ফিরে পেতে আপনি ব্যবহার করতে পারেন :e, তবে এটি সরবরাহ করা হয় যে এটি আসল ফাইল দ্বারা সমর্থনপ্রাপ্ত।


এবং তারপর %!cat %এটি ফিরে পেতে ব্যবহার করবেন? এটি দুর্দান্ত কাজ করে এবং আমি mapএই দুটির মধ্যে টগল করতে একটি ব্যবহার করতে পারি
ব্যবহারকারীর 881300

হ্যাঁ, এটি কার্যকর হবে, যতক্ষণ না আপনার বাফারকে সমর্থন করার জন্য একটি আসল ফাইল থাকে।
মাইকেল হোমার

3
@ মিশেল হোমার: এটি এখন ইউনিকোড চরিত্রগুলির সাথে কাজ করবে।
cuonglm

6

আমি মনে করি আপনি যা খুঁজছেন তার সাথে সামঞ্জস্য রেখে আরও অনুভূমিক স্ক্রোলিং

Z অনুভূমিক স্ক্রোলিং কমান্ড কীটি, এর পরে বাম বা ডান তীর কী দিয়ে সরানোর দিকনির্দেশ।

প্রথমে :set nowrapলাইন মোড়ানো অক্ষম করুন। তারপর প্রেস z, 35, 35 স্পেস স্ক্রোল করতে।


লগগুলি পড়ার সময় এটি খুব দরকারী, আপনাকে ধন্যবাদ!
ফ্যাবিও এফ

ঠিক আছে, একক পৃষ্ঠার জন্য দুর্দান্ত, তবে ... কীভাবে পৃষ্ঠাটি নীচে বা পৃষ্ঠায় কীভাবে কর্সার ছাড়াই লাইনের শুরুতে আবার ঝাঁপ দেওয়া যায়?
elysch

@ ইউজার 2987828 উত্তরে এটি কীভাবে সন্ধান করা হয়েছে তা খুঁজে পেয়েছি: ব্যবহার করে:set nosol
ইলিশ

আপনি যে অক্ষরটি লুকিয়ে রাখতে চান তার উপর কার্সার রাখুন। তারপরে ...[Esc] z s
রোব্লগিক

2

কমান্ড মোডে, চেষ্টা করুন:

:%s/^.\{35}//
  • %s/pat/sub/: প্যাট প্রতিটি ঘটনা সাব সঙ্গে প্রতিস্থাপন
  • ^.\{35}: প্রথম 35 টি লাইনের অক্ষর মেলে

এই কমান্ডটি প্রতিটি লাইনের প্রথম 35 টি অক্ষর সরিয়ে দেয়। আপনি :h regular-expressionনিয়মিত প্রকাশ সম্পর্কে আরও বিশদে পড়তে পারেন vim


1

বাফার বা ফাইলগুলিকে সংশোধন না করে সমাধান মনে রাখা সহজ। Lআপনি যে ফাইল অংশটি দেখতে চান তার প্রথম অক্ষরে ( আপনার উদাহরণে) আপনার কার্সারটি রাখুন , তারপরে টাইপ করুন

:set nowrap
zs

zsকমান্ড ইচ্ছা সেটআপ ষষ্ঠ যাতে স্ক্রীনে প্রথম কলামে এ কার্সার প্রদর্শিত অক্ষর। নিশ্চিত হয়ে নিন যে আপনি :set nosolনিজের কনফিগারেশন ফাইলগুলিতে টাইপ করেন নি ।

g$কমান্ড গত প্রোফাইল কলামে আপনার কার্সার সরে যাবে।

g0কমান্ড এল ধারণকারী প্রথমে প্রোফাইল কলামে আপনার কার্সার পিছান করবে

যদি কোনও কী কার্সারটি দৃশ্যমান কলামগুলির মধ্যে বাম বা ডানদিকে সরিয়ে দেয়, তবে দৃশ্যমান উইন্ডোগুলি স্থানান্তরিত হবে।


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