আমি কি ভিএম এর জন্য একটি কাস্টম এনকোডিং সংজ্ঞায়িত করতে পারি?


9

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

আমি কি আমার নিজস্ব কাস্টম এনকোডিং ব্যবহার করার জন্য ভিআইএম কনফিগার করতে পারি? আমি ইউনিকোড কোড-পয়েন্টগুলিতে বাইটগুলির ম্যাপিং কনফিগার করতে চাই। উদাহরণ স্বরূপ:

0x01 == "¢"

তারপরে, আমি যখন টাইপ করব <C-v><C-a>, এটি একটি ¢অক্ষর প্রদর্শন করবে এবং আমি যখন লিখব তখন এটি বাইট সংরক্ষণ করবে 0x01

এটি কি দূর থেকেও সম্ভব? এবং এছাড়াও, এটি সিস্টেম ক্লিপবোর্ডের সাথে ভাল কাজ করবে? (উদাহরণস্বরূপ, আমি আমার ব্রাউজার থেকে ভিএম এবং তদ্বিপরীত অনুলিপি এবং পেস্ট করতে পারেন)


2
আপনার সম্ভবত নিজের সিনট্যাক্স স্ক্রিপ্ট লিখতে হবে এবং ব্যবহার করতে হবে :help conceal
রোমেনেল

এর জন্য ভিম সহায়তাটি দেখে encodingএবং charconvertআমি দেখেছি এটি অভ্যন্তরীণভাবে iconvঅক্ষর সেটগুলিতে রূপান্তর করতে প্রথমে ফাংশনটি ব্যবহার করার চেষ্টা করে। iconvবিভিন্ন চরিত্রের সেটগুলির মধ্যে রূপান্তর পরিচালনা করতে পারে। একটি অক্ষর সেট কীভাবে যুক্ত করবেন তার একটি উত্তর এখানেiconv পাওয়া যাবে (মনে হয় আপনাকে রক্ষণাবেক্ষণকারীকে মেল করতে হবে)। হতে পারে এটি আপনাকে সহায়তা করে। :)
এরউইন রুইজাকার্স

উত্তর:


7

রোমেনেলের পরামর্শ অনুসারে, আপনি ভিআইএম এর concealবৈশিষ্ট্য সহ এটি অর্জন করতে পারেন ।

এখানে একটি স্ক্রিপ্ট উদাহরণ যা ব্যবহার করা যেতে পারে:

let rules = [
      \ ['01' , '☺'],
      \ ['02' , '☻'],
      \ ['03' , '♥'],
      \ ['04' , '♦'],
      \ ['05' , '♣'],
      \ ['06' , '♣'],
      \ ['07' , '•'],
      \ ['08' , '◘'],
      \ ['^A' , '¢'],
      \ ]

for [value, display] in rules
  execute "syntax match vartest /".value."/ conceal cchar=".display
endfor

" Ensure the character is concealed
set conceallevel=2
set concealcursor=nvc

আপনি দেখতে পাচ্ছেন, আমি গুরুত্ব সহকারে ম্যাপিং এবং আপনার ^Aউদাহরণের কয়েকটি গ্রহণ করেছি । আপনি যদি এই কোডটি অনুলিপি / পেস্ট করতে চান তবে সাবধান, ^Aটাইপ করা দরকার <C-v> <C-A>

এই কোডটি যা করে তা হ'ল এটি প্রতিটি value/ displayজোড়ের জন্য একটি সিনট্যাক্স মিলের সংজ্ঞা দেয়।

যেমন

syntax match vartest /08/ conceal cchar=◘

প্রতিটি 08ক্রম এবং ফাইলটি মিলবে এবং চরিত্রের সাথে তাদের গোপন করবে ।

আপনি দেখতে পাবেন , তবে ফাইলটির আসল পাঠ্যটি হ'ল 08


তারপরে আপনি নিয়মের একটি তালিকা নিতে পারেন এবং (অভিনব ম্যাক্রো সহ, যেমন: গুরুত্ব সহকারে 0i\ ['^[f s', '^[lxf)s'],^[ld$:) প্রতিটি লাইনকে ব্যবহারযোগ্য ভিম অ্যারে রূপান্তর করতে পারেন।

এছাড়াও, আপনি যদি ভিএম দিয়ে আক্ষরিক ইউনিকোড টাইপ করতে চান তবে আপনি এই ওয়ার্কফ্লোটি ব্যবহার করতে পারেন:

<C-V> u XXXX

XXXXইউনিকোড মানটি কোথায় , তাই টাইপিং পছন্দসই হিসাবে <C-V>u0001প্রবেশ করানো হবে ^A


আপনি যদি ফাইলটির বিষয়বস্তু যাচাই করতে চান তবে আমি ফাইলটির একটি হেক্সাস ডাম্প ব্যবহার করার পরামর্শ দিচ্ছি, যা আপনার এক্সএক্সডি সহ থাকতে পারে ।

যেমন

$ vim

<C-V><C-A><C-V><C-B>
:x a.txt

$ xxd a.txt
0000000: 0102 0a                                  ...

আপনি এখানে আপনার ^Aহিসাবে 01এবং ^Bহিসাবে হিসাবে দেখতে পারেন 02। ( 0aফাইলের শেষে নতুন লাইন উপস্থাপন করে)

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