Vim বর্ধিত লাইন লিখতে পারেন? অর্থাৎ প্রতিটি লাইনে A বি হয়ে যায় এবং 1 টি 2 হয়


8

আমি এটি লিখতে চেয়েছিলাম:

A = mapping[0]
B = mapping[1]
C = mapping[2]
D = mapping[3]
E = mapping[4]
F = mapping[5]
G = mapping[6]
H = mapping[7]
I = mapping[8]
J = mapping[9]
K = mapping[10]
L = mapping[11]
M = mapping[12]
N = mapping[13]
O = mapping[14]
P = mapping[15]
Q = mapping[16]
R = mapping[17]
S = mapping[18]
T = mapping[19]
U = mapping[20]
V = mapping[21]
W = mapping[22]
X = mapping[23]
Y = mapping[24]
Z = mapping[25]

আমি লিব্রেএল্যাক ব্যবহার করে শেষ করেছি, বিভিন্ন কক্ষের বিভিন্ন অংশ রেখে চিঠি এবং সংখ্যা যুক্ত করেছি, ফলাফলকে সুস্পষ্ট করে এবং লটটি আবার ভিমে আটকালাম।

আমি প্রশংসা করি যে আমি যা লিখতে চেয়েছিলাম তা ভীষণ কোড। আমি এই মুহুর্তে পাইথন অধ্যয়ন করছি এবং আমি নিজেই যে তথ্য অনুসরণ করছি তা পরবর্তী সময়ে আবৃত হবে এমন তথ্য নিজেই সন্ধান করতে এড়াতে চাইছি ( http://interactivepython.org/ )।

আমি ভিএম-তে এটি করার দ্রুততম উপায়টি ছিল এরকম কিছু টাইপ করা

A = mapping[0] <ESC> hh <CTRL>+<V> BBh y $ o B <ESC> y 1] <CR>

আমি জানি ভিম খুব শক্তিশালী (আমি এটি কয়েক সপ্তাহ ধরে ব্যবহার করছি, সত্যই এটি উপভোগ করছি)।

আমি কি কিছু ভিএম কমান্ড দিয়ে লিখতে চেয়েছি তা কি সম্ভব হত?

উত্তর:


11

স্ক্রিপ্টিং দিয়ে এটি করা যায়, আপনার যদি ভিমের খুব সাম্প্রতিক সংস্করণ থাকে (যেমন আর্চ লিনাক্সের একটি) তবে আপনি g Ctrl-aভিজ্যুয়াল ব্লককে বাড়িয়ে তুলতে পারেন । আপনার ক্ষেত্রে:

  1. মূল লাইনটি লিখুন: A = mapping[0] Esc
  2. ইয়াঙ্ক লাইন এবং তার 25 টি অনুলিপি নীচে রাখুন: yy25p
  3. প্রথম লাইনটি বাদ দিয়ে 0চারটি (ব্লক নির্বাচন, ব্যবহার করে Ctrl-v) সমন্বিত কলামটি দৃশ্যত নির্বাচন করুন 0(যাতে আপনি শেষ 25 টি শূন্যযুক্ত কলামটি দিয়ে শেষ করেন), তারপরে এগুলি বাড়িয়ে দিন g Ctrl-a
  4. সমন্বিত কলামের জন্য একই পদ্ধতি প্রয়োগ করুন A

( নোট : মন্তব্যগুলি দেখান হিসাবে, এক চাহিদা যোগ করার জন্য alphaকরতে nrformatsঅপশন, যাতে বৃদ্ধি চিঠি পাবে, যেমন: set nrformats+=alpha.My vimrc আছে: set nrformats=hex,alpha, এইভাবে অকট্যাল ও বাইনারি বৃদ্ধি নিষ্ক্রিয়, যা আমি ব্যবহার করবেন না)


তুমি আমার পক্ষে কাজ করছ না আমি www.vimcheatsheet.com থেকে যে প্রকারটি ছাপিয়েছি তা দেখতে পাচ্ছি যে এটি একটি খুব মানক আদেশ standard ভিম - রূপান্তর এটি প্রদান করে: পেস্টবিন . com / ডিসিএফএক্সজেড 1 এস । এটি আমার জন্য কেন কাজ করছে না তা তদন্ত করতে হবে ... (আমি ভিজ্যুয়াল কমান্ড এবং সন্নিবেশ মোডে চেষ্টা করেছি)। এছাড়াও আমি যখন পেস্ট করি তখন এটি সমস্ত একই লাইনে উপস্থিত হয়। তবে আমি জি সিটিআরএল-এ চেষ্টা করেছি এবং এটি যা চেয়েছিল ঠিক তা-ই করে দিয়েছে, আপনাকে ধন্যবাদ :)
ডানকান বেটস

1
:verbose map yআপনার সাথে শুরু হওয়া কোন ম্যাপিংগুলি রয়েছে yএবং সেগুলি কোথায় সেট করা হয়েছিল তা আপনাকে দেখাতে হবে । তবে আপনাকে yyসাধারণ মোডে ব্যবহার করতে হবে ।
ভ্যানলাসার


1
এর কি সংস্করণ vimবাড়ায় হবে Aথেকে Bসঙ্গে Ctrl-aকর্ম? আমার স্পষ্টভাবে না, এবং আমি চালু 7.4 1-1202
Cory Klein

4
@CoryKlein টাইপিং করার চেষ্টা করুন :set nrformats+=alpha। এটি alphaবিকল্পটিতে মান যুক্ত করবে 'nrformats'এবং Ctrl-aবর্ণানুক্রমিক অক্ষরগুলিকে "বৃদ্ধি" করার অনুমতি দেবে should আপনি যদি এই আচরণটি পছন্দ করেন তবে আপনি এটি আপনার ভিআরসিআরিতে যুক্ত করতে পারেন। অন্যথায়, আপনি অপারেটরের সাথে বিকল্পটিতে এটি যুক্ত করতে পারেন +=এবং অপারেটর -=( :set nrformats-=alpha) দিয়ে এটি অপসারণ করতে পারেন ।
saginaw

6

আমি @ ভ্যানলেসার ব্যবহার করা ভিজ্যুয়াল ইনক্রিমেন্ট সলিউশনটি পছন্দ করি (দেখুন :h v_CTRL-A) তবে আমি এটি ম্যাক্রোর মাধ্যমেও করা যেতে দেখাব।

শুরু করা:

A = mapping[0]

নিম্নলিখিত পছন্দগুলি আপনার পছন্দের ম্যাক্রোতে রেকর্ড করুন (উদাঃ q):

yyp:set nrformats+=alpha<cr><c-a>:set nrformats-=alpha<c-a>

এটি লাইনটি সদৃশ করবে এবং তারপরে প্রথম অক্ষরটি বৃদ্ধি করবে (উদাঃ A) এবং তারপরে সংখ্যাটি বৃদ্ধি করবে। এই ম্যাক্রোটি 24 বার চালান এবং আপনার কাজ শেষ হয়, যেমন 24@q

  • qq - রেজিস্টার মধ্যে রেকর্ডিং শুরু q
  • yyp - লাইনটি নকল করুন
  • :set nrformats+=alpha<cr>- 'nrformatsনেই alphaডিফল্টরূপে
  • <c-a>- alphaআমরা এখন চিঠি বৃদ্ধি করতে পারেন
  • :set nrformats-=alpha<cr>- alphaথেকে সরান'nrformats'
  • <c-a> - পরবর্তী নম্বর বৃদ্ধি
  • q - রেকর্ডিং বন্ধ করুন
  • 24@q- q24 বার নিবন্ধে ম্যাক্রো পুনরায় খেলুন

আরও সহায়তার জন্য দেখুন:

:h q
:h @
:h yy
:h p
:h 'nrformats'
:h :set
:h CTRL-A
:h v_CTRL-A

ভাল লাগল :) 25?
ভ্যানলাসার

1
@ ভ্যানল্যাসার: ১ (প্রারম্ভিক লাইন) + ১ (ম্যাক্রোর রেকর্ডিং) + ২৪ =
..

4

ইতিমধ্যে সরবরাহ করা দুর্দান্ত উত্তর, আমি এটিকে এত সুন্দর করে দেখার চিন্তা করতাম না। আমি সমস্ত অক্ষর একটি এক লাইনে টাইপ করে তারপরে পাঠ্য এবং লাইন ব্রেকটি একটি এক্সপ্রেশন প্রতিস্থাপন (বর্ধিত সংখ্যার জন্য লাইন নম্বর ব্যবহার করে) দিয়ে প্রবর্তন করতাম, এরকম কিছু

iABCDEFGHIJKLMNOPQRSTUVXYZ<Esc>:s/./\=submatch(0)." = mapping[".line('.')."]\n"/g

খুব ঠান্ডা ! (+1)
জাজাও

2

প্রায়শই সর্বদা এটির মতো কিছু করার সময় আমি :substituteম্যাক্রোগুলির বেশি ব্যবহার পছন্দ করি । বিশেষ করে প্রতিস্থাপনের সময় অভিব্যক্তি মূল্যায়নের সক্ষমতা \=এটি প্রায়শই সম্ভব করে তোলে (দেখুন :h sub-replace-special)।

আপনার জায়গায় খালি লাইনগুলি ( 25i<Enter><Esc>) বসানোর পরে আপনি কমান্ডটি ব্যবহার করতে পারেন

:1,26s/^/\=nr2char(line('.')+64) . ' = mapping[' . (line('.')-1) . ']'

প্রয়োজনীয় ক্রমগুলি বর্তমান লাইন ( '.'আর্গুমেন্ট) নম্বরটি ফাংশন দ্বারা প্রত্যাবর্তন করে line()এবং দশমিক সংখ্যাগুলিকে ASCII সমতুল্য (65 = A) তে রূপান্তর করতে nr2char () ব্যবহার করে প্রয়োজনীয় ক্রমগুলি তৈরি করা হয় । প্রয়োজনীয় স্ট্রিংগুলি ব্যবহার করে সংক্ষিপ্ত করা হয়.


1

আপনি সর্বদা অপারেটিং সিস্টেমটি ব্যবহার করার চেষ্টা করতে পারেন ...

:r ! perl -E 'for(A..Z){say "$_ = mapping[", ord($_)-64 ,"]"}'

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