কীভাবে সিলেকশনটি ভিএম-তে ইনভার্ট করবেন?


12

Vকমান্ডটি দিয়ে বিভিন্ন রেখা বেছে নেওয়ার পরে , আমি নির্বাচিত নয় এমন ফাইলের প্রতিটি লাইন মুছে ফেলতে চাই, তবে নির্বাচনটি উল্টে দেওয়ার উপায় - নির্বাচিত নয় এমন প্রতিটি লাইন নির্বাচন করুন?

যেভাবে

:g!/FOO/d

প্রত্যেক লাইন যা নেই মুছে ফেলে না থাকতে যদি foo ।

যদি আমার মনে মনে কিছু পরিসীমা থাকে এবং এর বিপরীতটি ব্যবহার করতে চাইতাম:

'a,'b

আমার দুটি রেঞ্জ ব্যবহার করা দরকার:

1,'a-1

এবং

'b+1,$

আমি সন্দেহ করি যে এটি এক ধাপে করা যায় না - তবে এটি দুর্দান্ত হবে!


সুতরাং আপনি একটি "ক্রপ" স্টাইল অপারেশন চান?
— কোয়াকোট কোয়েক্সোট

উত্তর:


7

প্রথমে নিম্নলিখিত ম্যাপিংটি তৈরি করুন (উদাহরণস্বরূপ <F4>কীটি আবদ্ধ )

map <F4> :<C-U>1,'<-1:delete<CR>:'>+1,$:delete<CR>

তারপরে, ভিজ্যুয়াল মোডে একটি ব্যাপ্তি নির্বাচন করার পরে, কেবলমাত্র <F4>সম্পর্কিত কমান্ডটি ট্রিগার করতে টিপুন । কমান্ডটি সহজেই কিছু অংশে ব্যাখ্যা করা যায়:

  • " :" কমান্ড লাইন মোডে সন্নিবেশ করান।
  • " <C-U>" কার্সার অবস্থান এবং লাইনের শুরুতে সমস্ত অক্ষর মুছে ফেলুন।
  • " 1,'<-1" বর্তমান নির্বাচন শুরুর আগে ফাইলের প্রথম লাইন থেকে রেখার রেঞ্জটি নির্দিষ্ট করুন Spec
  • " :delete<CR>" মুছে ফেলুন (রেখার পূর্বে নির্দিষ্ট রেঞ্জ)।
  • " :'>+1,$:delete<CR>" পরিসরে রেখাগুলি মুছুন " '>+1,$", অর্থাৎ নির্বাচন শেষে ফাইলের শেষে লাইন থেকে। "

2
কেবল এটি ব্যাখ্যা করার জন্য: 1, '<- 1 হ'ল নির্বাচন শুরুর অবধি 1 লাইন থেকে শুরু করে। '> + 1, নির্বাচন শেষে 1 লাইন থেকে শেষ অবধি ...
— আকিরা

কেবলমাত্র একটি "মুছে ফেলা" কমান্ড দিয়ে এটি করার কোনও উপায় আছে?
— কেভিন পানকো

1
@ কেভিন পানকো: আপনার একক অভিব্যক্তিতে ব্যাপ্তিগুলি একত্রিত করতে হবে। আমি দস্তাবেজগুলি দেখেছি এবং আমার মনে হয় না পরিসীমা সিনট্যাক্স এ জাতীয় কোনও জিনিসকে সমর্থন করে। vimdoc.sourceforge.net/htmldoc/cmdline.html#cmdline-ranges ,,, vim.wikia.com/wiki/Ranges
— quixote

15
  1. আপনার পাঠ্য নির্বাচন করুন
  2. "*yggdG"*p যার অর্থ ...

    "*y    " yank it to the selection register
    ggdG   " delete everything
    "*p    " and paste the selection again 
    

9
ygg "_ডিজিপি একই তবে খাটো
— কেভিন প্যাঙ্কো

1
শেষ পর্যন্ত আপনি একই পাঠ্যটি পেয়েছেন, সত্য :)
— আকিরা

আমি কেবল আকীরা এবং কেভিন পানকো উত্তরগুলি উল্লেখ করতে চাই (আমি মন্তব্য যুক্ত করতে পারি না)। "[ও] পপোসাইট [ডি] ইলেভেন্ট ইন (ভি) আইসুয়াল মোড ভিএমএপ ওড ইজিজি" _ডিজিপি
— মার্সিন রোগাকি

Github.com/maxbrunsfeld/vim-yankstack এর মতো প্লাগইনগুলি এই পদ্ধতিকে আরও সহজ করে তোলে। আপনার ইয়ঙ্ক রেজিস্টারটি মুছে ফেলার ফলে আপনার এতটা চিন্তা করার দরকার নেই।
— জ্যাক ও'কনোর

কীওয়ার্ড ম্যাপিং হিসাবে এটি যুক্ত করা যায় .vimrc? আমি কয়েকটি চেষ্টা করেছি কিন্তু এখনও তা অর্জন করতে পারি নি। আমার চেষ্টা ছিল map <F4> n"*yggdG"*p এবংnmap <F4> "*yggdG"*p
— ব্র্যাড পার্কগুলি

7

শুধু উত্তরোত্তর জন্য:

:v/\%V/d

এটি নির্বাচনের অংশ নয় এমন লাইনে একটি বিপরীত গ্লোবাল করে। দ্রষ্টব্য: v একটি লাইন-ভিত্তিক নির্মাণ, সুতরাং যে কোনও লাইন যে কোনও নির্বাচনের সমন্বয় করে, এটি লাইন, প্রবাহ বা ব্লক নির্বাচন হোক না কেন মুছে ফেলা হবে।


1

যেহেতু 'ইনভার্টিং' এর অর্থ মূলত 'মাল্টিলেকশনস' তৈরি করা (মূল নির্বাচনের আগে এবং পরে অঞ্চল) আমি পুনরায় ভিমস্ক্রিপ্টগুলি অনুসন্ধান করেছি http://www.vim.org/scriptts/script.php?script_id=953 । এটা চেষ্টা কর.

 There are a number of operations to very
 easily manipulate selections such as modifying 
 the regions (add/delete/inverte/clear), hiding, 
 refreshing, saving and restoring etc."
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.