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


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.