সাবমাইমেটেক্সটে পছন্দ মতো ভিম মাল্টলাইন এডিটিং?


133

আমি জিভিআইএম ব্যবহার শুরু করেছি এবং মাল্টলাইন সম্পাদনাটি জিভিএম-এ কীভাবে কাজ করে তা আমি বেশ বুঝতে পারি না।

উদাহরণ স্বরূপ:

মূল পাঠ্য:

asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;

ctrl + q, jjjjjj, $ সবকিছু নির্বাচিত হয়, তারপরে আমি মাল্টলাইন সন্নিবেশ করতে টিপুন।

আমার উদ্দেশ্য হ'ল প্রথম লাইনের মতো উদ্ধৃতিগুলি সন্নিবেশ করা এবং তারপরে Esc টিপুন:

asd "asd asd" asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;

কি হলো? সাব্লাইমেক্সটেক্সের মতো আচরণের প্রত্যাশা করেছি:

এখানে চিত্র বর্ণনা লিখুন

এটি কীভাবে কাজ করে তা আপনি যদি না জানেন তবে এটি প্রতিটি লাইনের জন্য ক্রিয়াগুলি পুনরাবৃত্তি করে। কীভাবে তা অর্জন করা যায়? এবং ভিম এখানে কি করছে?


প্রথম লাইনটি পরিবর্তন করতে কেবল একটি কীবোর্ড ম্যাক্রো রেকর্ড করুন এবং তারপরে অন্যান্য সমস্ত লাইনের জন্য ম্যাক্রো প্লেব্যাক করুন।
উচ্চ 5

উত্তর:


215

উইন্ডোজ সামঞ্জস্যতা স্তরটি ফেলে নিজেকে অনুকূল করুন।

ভিজ্যুয়াল-ব্লক মোডে প্রবেশের জন্য সাধারণ শর্টকাটটি <C-v>

অন্যরা ম্যাক্রো রেকর্ডিং নিয়ে কাজ করেছেন, এখানে আরও কয়েকটি ধারণা দেওয়া হল:

শুধুমাত্র ভিজ্যুয়াল-ব্লক মোড ব্যবহার করা ।

  1. দ্বিতীয় শব্দটিতে কার্সারটি রাখুন:

    asd |a|sd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    
  2. ভিজ্যুয়াল-ব্লক মোডে <C-v>প্রবেশ করতে এবং নীচের দিকে আপনার নির্বাচনকে প্রসারিত করতে হিট করুন:

    asd [a]sd asd asd asd;
    asd [a]sd asd asd asd;
    asd [a]sd asd asd asd;
    asd [a]sd asd asd asd;
    asd [a]sd asd asd asd;
    asd [a]sd asd asd asd;
    asd [a]sd asd asd asd;
    
  3. পেতে হিট I"<Esc>:

    asd "asd asd asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    
  4. তৃতীয় শব্দের শেষ চরে কার্সারটি রাখুন:

    asd "asd as|d| asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    asd "asd asd asd asd;
    
  5. ভিজ্যুয়াল-ব্লক মোডে <C-v>প্রবেশ করতে এবং নীচের দিকে আপনার নির্বাচনকে প্রসারিত করতে হিট করুন:

    asd "asd as[d] asd asd;
    asd "asd as[d] asd asd;
    asd "asd as[d] asd asd;
    asd "asd as[d] asd asd;
    asd "asd as[d] asd asd;
    asd "asd as[d] asd asd;
    asd "asd as[d] asd asd;
    
  6. পেতে হিট A"<Esc>:

    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    

সঙ্গে চাক্ষুষ-ব্লক মোড এবং Surround.vim

  1. দ্বিতীয় শব্দটিতে কার্সারটি রাখুন:

    asd |a|sd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    asd asd asd asd asd;
    
  2. ভিজ্যুয়াল-ব্লক মোডে <C-v>প্রবেশ করতে এবং নীচে এবং ডানদিকে আপনার নির্বাচন প্রসারিত করতে হিট করুন:

    asd [asd asd] asd asd;
    asd [asd asd] asd asd;
    asd [asd asd] asd asd;
    asd [asd asd] asd asd;
    asd [asd asd] asd asd;
    asd [asd asd] asd asd;
    asd [asd asd] asd asd;
    
  3. হিট S"সঙ্গে "আপনার নির্বাচনের ঘিরা:

    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    

সঙ্গে চাক্ষুষ-লাইন মোড এবং :normal

  1. Vপুরো লাইনটি নির্বাচন করতে এবং নীচের দিকে প্রসারিত করতে হিট করুন:

    [asd asd asd asd asd;]
    [asd asd asd asd asd;]
    [asd asd asd asd asd;]
    [asd asd asd asd asd;]
    [asd asd asd asd asd;]
    [asd asd asd asd asd;]
    [asd asd asd asd asd;]
    
  2. এই আদেশটি কার্যকর করুন: :'<,'>norm ^wi"<C-v><Esc>eea"<CR>প্রাপ্ত করার জন্য:

    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    asd "asd asd" asd asd;
    
    • :norm[al]আপনাকে বিভিন্ন মোডে সাধারণ মোড কমান্ডগুলি কার্যকর করতে দেয় ( '<,'>অংশটি স্বয়ংক্রিয়ভাবে ভিমের দ্বারা যুক্ত হয় এবং এর অর্থ "নির্বাচিত অঞ্চলে কাজ করুন")

    • ^ লাইনটির প্রথম চরে কার্সার রাখে

    • w পরের শব্দে চলে আসে

    • i""কার্সারের আগে একটি সন্নিবেশ করানো হয়

    • <C-v><Esc>এই প্রসঙ্গে কোনও নিয়ন্ত্রণ চরিত্রকে ইনপুট দেওয়ার জন্য ভিমের উপায়, এখানে এটি সন্নিবেশ মোড <Esc>থেকে প্রস্থান করার জন্য ব্যবহৃত হয়

    • ee পরের শব্দের শেষে চলে যায়

    • a""কার্সার পরে একটি সংযোজন

    • <CR> কমান্ড কার্যকর করে

    Surround.vim ব্যবহার করে উপরের কমান্ডটি হয়ে যায়

    :'<,'>norm ^wvees"<CR>
    

7
4 এবং 5 পদক্ষেপের জন্য আমি gvআপনার আগের ভিজ্যুয়াল নির্বাচনটি ফিরে পেতে হিট করার পরামর্শ দেব এবং তারপরে সম্ভবত অনুভূমিকভাবে স্থানান্তরিত করব 2e। (আরও লাইন, আরও মূল্যবান gv!)
জোয়েটউইডল

4
আশেপাশের.ভিম একটি sসাধারণ মোডে একটি ছোট ব্যবহার করে তবে Sভিজ্যুয়াল মোডে একটি বড় ব্যবহার করে, তাই S"
চারপাশে.ভিম

1
চাক্ষুষ-ব্লক পয়েন্ট 3 + + Surround.vim হওয়া উচিত S", নাs"
zool

1
ভিজ্যুয়াল-ব্লক মোডের 5 এবং 6 পদক্ষেপের পরিবর্তে আপনি কেবল তৃতীয় শব্দটির পরে কার্সারটি রেখে চাপতে পারেন .
জোনাস

2
এটি দুর্দান্ত, তবে এটি কেবলমাত্র কয়েকটি ক্ষেত্রে কাজ করে যেখানে আপনি বিভিন্ন লাইনে যে অক্ষরগুলি সম্পাদনা করতে চান তা প্রতিটি লাইনের ঠিক একই অনুভূমিক অবস্থানে থাকে এবং সম্পাদিত রেখাগুলি একের পর এক ডান হয়। আমরা চেরি-বাছাই করতে পারি না যেখানে ভিমে কোন লাইনের সম্পাদনা মোডে প্রবেশ করতে পারি? আমরা সাবলেমে ... সম্পাদনা করতে পারি : আসলে দ্বিতীয় উত্তরটি আমি যা খুঁজছিলাম তা হল
আলেকজান্দ্রি বুর্লিয়ার

30

এগুলি উপরে বর্ণিত কিছু ভাল-আউট-বক্স সমাধান রয়েছে, তবে আমরা কয়েকটি প্লাগইনও চেষ্টা করতে পারি যা সাব্লাইমের মতো একাধিক কার্সার সরবরাহ করে।

আমি মনে করি এটি এক প্রতিশ্রুতিবদ্ধ দেখাচ্ছে:

এটি কিছু সময়ের জন্য পরিত্যক্ত বলে মনে হয়েছিল, তবে 2014 সালে এর কিছু অবদান রয়েছে।

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

আমার অভিজ্ঞতায় যদি আপনার আরও অনেক প্লাগইন ইনস্টল থাকে তবে আপনি কিছু দ্বন্দ্বের মুখোমুখি হতে পারেন!

এই বৈশিষ্ট্যটিতে আরও কিছু চেষ্টা রয়েছে:

আপনি যদি এগুলির কোনও উন্নতি লক্ষ্য করেন তবে নির্দ্বিধায় এডিট করুন।


দেখে মনে হচ্ছে github.com/osyo-manga/vim-over এই মুহুর্তে গুচ্ছের সর্বাধিক সক্রিয়।
ওয়ার্নাইট

দুর্দান্ত, আমি
এটিই সন্ধান করছিলাম

1
তাদের বেশিরভাগ পরীক্ষার পরেও হিলিসনার / ভিম-মাল্টিএডিটকে সেরা এএফএএসি বলে মনে হচ্ছে
আলেকজান্দ্রে বুউলিয়ার


29

ভিমের মধ্যে এটি সম্পাদন করার বিভিন্ন উপায় রয়েছে। আমি জানি না যা সাব্লাইম টেক্সটের সাথে সর্বাধিক সাদৃশ্যপূর্ণ।


প্রথমটি মাল্টিলাইন সন্নিবেশ মোডের মাধ্যমে হবে । আপনার কার্সারটিকে প্রথম লাইনে দ্বিতীয় "এ" তে রাখুন, টিপুন Ctrl-V, সমস্ত লাইন নির্বাচন করুন, তারপরে টিপুন Iএবং ডাবলকোটে রেখে দিন। টিপুন <esc>প্রতিটি লাইনে ক্রিয়াকলাপ পুনরাবৃত্তি করবে।


দ্বিতীয়টি ম্যাক্রোর মাধ্যমে। প্রথম অক্ষরে কার্সারটি রাখুন এবং এর সাথে ম্যাক্রো রেকর্ডিং শুরু করুন qa। এর সাথে আপনার ডানদিকে যান llll, সন্নিবেশ মোডটি প্রবেশ করুন a, একটি ডাবলকোট রেখে দিন, সন্নিবেশ মোডটি প্রস্থান করুন এবং <home>(বা সমমানের) সাথে আপনার সারির শুরুতে ফিরে যান । jএক সারি নিচে সরাতে টিপুন । এর সাথে রেকর্ডিং বন্ধ করুন q। এবং তারপরে ম্যাক্রোটি পুনরায় খেলুন @a। বেশ কয়েকবার.


উপরোক্ত পদ্ধতির কোনওটি কি আপনার পক্ষে কাজ করে?


15

আপনি যদি "গ্লোবাল" কমান্ডটি ব্যবহার করেন তবে আপনি অনলাইনে যে কোনও সংখ্যক লাইনই যা করতে পারেন তার পুনরাবৃত্তি করতে পারেন।

:g/<search>/.<your ex command>

উদাহরণ:

:g/foo/.s/bar/baz/g

উপরের কমান্ডটি foo রয়েছে এমন সমস্ত লাইন খুঁজে বের করে এবং সেই লাইনের বারের সমস্ত উপস্থিতি বাজ দিয়ে প্রতিস্থাপন করে।

:g/.*/

প্রতিটি লাইনে করতে হবে


1
এটি এত দরকারী, আমি এটি জানতাম না। কমান্ডগুলির এত শক্তিশালী এবং চতুর সংমিশ্রণ বলে মনে হচ্ছে।
0xc0de

সুবিধার্থে, আমি একটি সামান্য ফাংশন লিখেছিলাম যা শব্দটি কার্সারের অধীনে নিয়ে যায় (বা চাক্ষুষভাবে নির্বাচিত শব্দ), একটি প্রতিস্থাপনের জন্য অনুরোধ করে, এবং তারপরে :gএখানে বর্ণিত কমান্ডটি চালায় । আমি /gc"নিশ্চিতকরণ" জিজ্ঞাসা করতে ব্যবহার করতে চাই যাতে আমি আঘাত করতে পারি yবা nপ্রতিটি প্রতিস্থাপনের জন্য, বা aসেগুলি সব পরিবর্তন করতে পারি।
জোয়েটউইডল

11
Ctrl-v ................ start visual block selection
6j .................... go down 6 lines
I" .................... inserts " at the beginning
<Esc><Esc> ............ finishes start
2fdl. ................. second 'd' l (goes right) . (repeats insertion)

পদক্ষেপ 3 এ, Iসন্নিবেশ মোডে প্রবেশ করতে পারে না, আপনি কেন জানেন কেন এটি ঘটে?
নিনজা

কোনও প্লাগইন না দিয়ে ভিএম লোড করার চেষ্টা করুন: vim -u NONEএবং পুনরায় পছন্দসই ক্রিয়া সম্পাদন করার চেষ্টা করুন এটি আপনার ভিমের আচরণ পরিবর্তন করে কিছু মানচিত্র বা প্লাগইন হতে পারে।
সেরজিওআরাউজো

6

আমি নিশ্চিত না যে কী vimকরছে, তবে এটি একটি আকর্ষণীয় প্রভাব। আপনি কীভাবে যা চান তা বর্ণনা করার সাথে সাথে ম্যাক্রোগুলি কীভাবে কাজ করে ( :help macro) এর মতো কিছু আপনি ম্যাক্রো দিয়ে যা চান তা করবে (নরমাল-মোডে শুরু):

  1. qa: রেকর্ড ম্যাক্রো থেকে a রেজিস্ট্রেশন ।
  2. 0w: 0লাইন শুরু হয়েছে,w একটি শব্দ ঝাঁপ দাও।
  3. i"<Esc>: সন্নিবেশ-মোড প্রবেশ করান, সন্নিবেশ করুন a " এবং নরমাল মোডে ফিরে যান।
  4. 2e: দ্বিতীয় শব্দের শেষের দিকে ঝাঁপ দাও।
  5. a"<Esc>: সংযোজন ক "
  6. jq পরবর্তী লাইনে যান এবং ম্যাক্রো রেকর্ডিং শেষ করুন।

একসাথে নেওয়া: qa0wi"<Esc>2ea"<Esc>

এখন আপনি এর সাথে ম্যাক্রো কার্যকর করতে পারেন @a, এর সাথে শেষ ম্যাক্রোর পুনরাবৃত্তি করুন @@। বাকী ফাইলটিতে প্রয়োগ করতে, এমন কিছু করুন99@a যা ধরে নিয়েছে যে আপনার কাছে 99 টিরও বেশি লাইন নেই, ম্যাক্রো সম্পাদনা যখন ফাইলের শেষের দিকে পৌঁছে তখন শেষ হবে।

আপনি যা চান তা কীভাবে অর্জন করবেন তা এখানে visual-block-mode(সাধারণ মোডে শুরু করে):

  1. আপনি যেখানে প্রথম উদ্ধৃতিটি চান তা নেভিগেট করুন।
  2. প্রবেশ করুন visual-block-mode, Gফাইলের নীচে যেতে আপনি যে লাইনগুলি প্রভাবিত করতে চান তা নির্বাচন করুন।
  3. হিট I"<Esc>
  4. আপনি যেটি সন্নিবেশ করতে চান তার পরের স্থানে যান "
  5. আপনি কেবল যা করেছেন তাই পুনরাবৃত্তি করতে চান তাই একটি সাধারণ .ইচ্ছা যথেষ্ট will

4
99 @ a এর দরকার নেই। আপনি যদি ফাইলের প্রতিটি লাইনে একটি ম্যাক্রো চালাতে চান তবে চেষ্টা করুন:% আদর্শ! @a।
দাড়কাক

বিন্দু ছাড়াই (তারা বাক্যগুলির শেষ মাত্র, কমান্ডের অংশ নয়)
রুক

9999@aকুরুচিপূর্ণ হতে পারে তবে এটি টাইপ করা অনেক সহজ এবং :%norm! @aআপনি সদ্য সম্পাদনা করা লাইনে এটি পুনরায় চালিত হয় না। এখনও এটি জেনে রাখা ভাল। :)
জোয়েটউইডল

0

আমার সমাধান হ'ল এই 2 টি ম্যাপিং ব্যবহার করা:

map <leader>n <Esc><Esc>0qq
map <leader>m q:'<,'>-1normal!@q<CR><Down>

এগুলি কীভাবে ব্যবহার করবেন:

  1. আপনার লাইন নির্বাচন করুন। আমি যদি পরবর্তী 12 টি লাইন নির্বাচন করতে চাই তবে আমি কেবল টিপুনV12j
  2. প্রেস <leader>n
  3. আপনার পরিবর্তনগুলি লাইনে করুন
  4. আপনি স্বাভাবিক মোডে আছেন তা নিশ্চিত করুন এবং তারপরে টিপুন <leader>m

অন্য সম্পাদনা করতে আপনাকে আবার নির্বাচন করার দরকার নেই। কেবল চাপুন <leader>n, আপনার সম্পাদনা করুন এবং <leader>mপ্রয়োগ করতে টিপুন ।


এটি কীভাবে কাজ করে:

  • <Esc><Esc>0qq ভিজ্যুয়াল নির্বাচন থেকে প্রস্থান করুন, লাইনের শুরুতে যান এবং ম্যাক্রো রেকর্ডিং শুরু করুন।

  • q ম্যাক্রো রেকর্ডিং বন্ধ করুন।

  • :'<,'>-1normal!@q<CR> ভিজ্যুয়াল নির্বাচনের শুরু থেকে শেষের আগে লাইনে, প্রতিটি লাইনে ম্যাক্রো খেলুন।

  • <Down> শেষ লাইনে ফিরে যান।


আপনি কেবল একই কীটি ম্যাপ করতে পারেন তবে বিভিন্ন মোডের জন্য:

vmap <leader>m <Esc><Esc>0qq
nmap <leader>m q:'<,'>-1normal!@q<CR><Down>

যদিও এটি আপনার অন্য সম্পাদনা করার ক্ষমতা হ্রাস করে। আপনাকে আপনার লাইনগুলি আবার নির্বাচন করতে হবে।

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