ভিআইএম-এ বা এর আশেপাশে কার্সার শব্দ মুছুন


212

আমি এখন VIMটেক্সটমেট থেকে স্যুইচ করছি । আমি ^+WINSERT মোডে খুব দরকারী। যাইহোক, আমি কেবল কার্সারের আগে শব্দটি নয়, কার্সারের পরে বা আশেপাশের শব্দটিও মুছতে চাই।

আমি কিছু গুগলিং করেছি, তবে ^+Wকার্সারের আগে শব্দটি মুছে ফেলা কেবলমাত্র আমি খুঁজে পেতে পারি ।

উত্তর:


78

আপনার যা করা উচিত তা হ'ল ধারাবাহিক কমান্ডের জন্য একটি নির্দিষ্ট কীটির একটি ইমপ্যাক তৈরি করা, এক্ষেত্রে কমান্ডগুলি আপনাকে স্বাভাবিক মোডে ফেলে দেবে, বর্তমান শব্দটি মুছে ফেলবে এবং তারপরে আপনাকে আবার প্রবেশের দিকে রাখবে:

:imap <C-d> <C-[>diwi

29
": এইচ ডিউ" প্রচুর দরকারী শর্টকার্টের জন্য!
ক্লকপ

12
<কো> ব্যবহারের জন্য বোনাস বোনাস পয়েন্ট। এটি নরমাল মোডে একটি কমান্ড কার্যকর করে এবং সরাসরি sertোকাতে লাফ দেয়, সুতরাং এর মতো কিছু imap <C-d> <C-o>diwকাজ করে। এটি একটি পূর্বাবস্থার বিন্দুও তৈরি করে না, যা << এসএসস> প্রায় সবসময়ই করে।
জেল্ক

<কো> সন্নিবেশ মোডে আমার দিনটি তৈরি করেছে :)
লস্ক 116

541

স্বাভাবিক অবস্থা:

daw : delete the word under the cursor    
caw : delete the word under the cursor and put you in insert mode 

125
এটিকে দা'র মতো ভাবতে আমার পক্ষে সহায়ক: একটি শব্দ এবং কাওটি মুছুন: একটি শব্দ পরিবর্তন করুন।
ওয়েলবোনিও

1
ঈশ্বর আমি ব্যবহার হয়েছে da)এবং ci)কিন্তু এই কখনও ভাবি নি!
আকাশ

1
এটাই সোনার জেরি! স্বর্ণ! আমি আমার .vimrcফাইলে এই শিশুদের ম্যাপ করেছি: nmap <Leader>d daw এবংnmap <Leader>c caw
racl101

1
সম্ভবত এটি উল্লেখযোগ্য যে awবিষয়টি অবজেক্ট নির্বাচনের একটি উদাহরণ। তাদের কী প্রভাব রয়েছে তা দেখতে আপনি ভিজ্যুয়াল মোডে অবজেক্ট নির্বাচনের চেষ্টা করতে পারেন: vimdoc.sourceforge.net/htmldoc/motion.html#object-sese
cranok

103

আমি মনে করি এটি ঠিক আছে daw

daw - delete a word

1
আমি জানি যে aএটি একটি কমান্ড Append text after the cursor [count] times.তবে কীভাবে dawকাজ করে?
সিনেট্যাগমা

3
@REACHUS প্রাথমিক চরিত্রটি dনির্দেশ দেয় আপনি 'মোছা' হবেন। 'এ' হ'ল এক ধরণের প্যারামিটার, উল্লেখ করে যে মুছে ফেলাটি একটি সীমানাঙ্ক অন্তর্ভুক্ত করে। অবশেষে ' parameterডাব্লু ', যদি আপনি অন্যটি নির্দিষ্ট করেন যে একটি wordইউনিট মুছে ফেলা হবে।
ভ্লাদ-আরডিলিয়ান

2
dwএবং মধ্যে পার্থক্য কি daw?
একে_

5
@ ক _ দেরীতে প্রতিক্রিয়া, তবে আপনি যদি কোনও শব্দের মাঝামাঝি থাকেন dwতবে কার্সার থেকে শব্দের শেষ পর্যন্ত dawমুছে ফেলা হবে এবং পুরো স্পেস সহ পুরো শব্দটি মুছে ফেলবে। diwচারপাশের সাদা জায়গা স্পর্শ না করে পুরো শব্দটি মুছে ফেলবে।
ডিমিটার্স

67

নীচেরটি সাধারণ মোডের জন্য কাজ করে: আমি ড্যান ওলসনের উত্তরের সাথে একমত যে আপনাকে বেশিরভাগ মোছার জন্য সম্ভবত স্বাভাবিক মোডে থাকা উচিত। নীচে আরও বিশদ।

যদি কার্সার শব্দের ভিতরে থাকে:
diwশব্দের মধ্যে মুছতে (ফাঁকা স্থানগুলি অন্তর্ভুক্ত নয়)
dawশব্দটির চারপাশে মুছতে (পরের শব্দের আগে ফাঁকা স্থান অন্তর্ভুক্ত)।

কার্সার শব্দের শুরুতে থাকলে, টিপুন dw

এটি চলাচলের জন্য সাধারণ সংখ্যা যুক্ত করে গুণ করা যায়, উদাহরণস্বরূপ 2 শব্দকে 2 শব্দ এগিয়ে নিয়ে যাওয়ার জন্য, তাই d2w দুটি শব্দ মুছে দেয়।

মোড
sertোকান ^ w ভিমে চলাচলের জন্য এইচজেকিএল ব্যবহার করার ধারণাটি হ'ল সারিটিতে আপনার হাত রাখা আরও উত্পাদনশীল। একটি শব্দের শেষে ^ w শব্দটি দ্রুত মুছে ফেলার জন্য দুর্দান্ত কাজ করে। আপনি যদি সন্নিবেশ মোডে চলে গেছেন, কিছু পাঠ্য প্রবেশ করিয়েছেন এবং হোম সারি দর্শনের বিরুদ্ধে গিয়েছেন এমন শব্দের মাঝামাঝি শেষ করতে তীর কীগুলি ব্যবহার করেছেন।
আপনি যদি স্বাভাবিক মোডে থাকেন এবং শব্দটি cপরিবর্তন dকরতে চান তবে আপনি যদি শব্দটি পুরোপুরি পরিবর্তন করতে চান তবে (মুছে ফেলার) পরিবর্তে (পরিবর্তন) ব্যবহার করতে পারেন এবং iফিরে পেতে চাপ না দিয়ে সন্নিবেশ মোডে আবার প্রবেশ করতে পারেন টাইপ করতে।


42

আপনি কি মানে?

dw

10
পার্টিতে দেরীতে, তবে ডাব্লু বর্তমান অবস্থান থেকে শব্দের শেষ পর্যন্ত মুছে ফেলবে, পুরো শব্দটি শুরু থেকে মুছে ফেলতে ডিউ বা দা ব্যবহার করুন
ডিভিড সিলভা

1
dwহাইফেন বা অন্যান্য বিরামচিহ্নের অতীত মুছবে না।
সিসিপিজ্জা

* দ্রষ্টব্য: এটি বাফার / শেষ ইয়ঙ্ক ওভাররাইট করবে। এটি 'কাটা' অপারেশন এর বেশি, কেবল 'মুছুন' না।
এমডি মহিউদ্দিন আহমেদ

23

স্বাভাবিক মোডে দুটি সাদা অংশের মধ্যে সমস্ত অক্ষর মুছতে :

daW

কেবল একটি শব্দ মুছতে:

daw 

20

দেখে মনে হচ্ছে কোনও বিল্ট-ইন আছে সন্নিবেশ মোডে করার উপায় আছে বলে মনে হচ্ছে না, যা ছিল প্রশ্ন। অন্যান্য কয়েকটি উত্তর স্বাভাবিক মোডের জন্য সঠিক, পাশাপাশি sertোকানো মোডে কার্যকারিতা যুক্ত করতে একটি কাস্টম ম্যাপিং তৈরি করা যেতে পারে তা নির্দেশ করে।

সত্য, আপনার সম্ভবত মোড মোডে মোছার বেশিরভাগটি করা উচিত। ^ ডাব্লুটি সম্পর্কে জানার জন্য ঝরঝরে, তবে আমি নিশ্চিত নই যে আমি এমন পরিস্থিতিটি সম্পর্কে ভাবতে পারি যেখানে আমি স্বাভাবিক মোডে যাওয়ার চেয়ে এসএস্কের চেয়ে বরং এটি করতে পারি এবং আমার কাছে আরও শক্তিশালী মুছে ফেলার নির্দেশ রয়েছে।

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


1
আমি ওয়া ওয়াট ব্যবহার করি, বেশিরভাগ ক্ষেত্রে যখন আমি কোনও শব্দ ভুল টাইপ করি - ফিরে গিয়ে অনুপস্থিত চিঠি / ইত্যাদি যুক্ত না করে আমি কেবল পুরো জিনিসটি মুছে ফেলি এবং আবার শুরু করি normal কেবল একটি শব্দ মুছতে নরমাল-মোডে যাওয়াকে মনে হয় অপব্যয়ের মতো কয়েকটি কী-স্ট্রোকের জন্য .. উদাহরণস্বরূপ, "উদাহরণ wrd [^ w] শব্দ" "" উদাহরণ wrd [^ c] [dw] [i] শব্দ "
ডিবিআর

1
ডিবিআর: যদিও সে ভিম সমর্থন করে তবে সে মৌলিক ^ ডাব্লু আচরণ করতে বলছিল না। তিনি সন্নিবেশ মোডে থাকাকালীন মাঝখানে থাকাকালীন সমস্ত শব্দ মুছে ফেলতে বলছিলেন, যা ভিমের জন্য এক বিস্ময়কর পরিস্থিতি এবং তাই এটি করার কোনও আদেশ নেই। আপনি যদি কার্যত কার্যকারিতাটি না রাখেন তবে আপনি সর্বদা sc Q কে <Esc> ciw এ আবদ্ধ করতে পারেন। ওহ, [] সি] [ডিডাব্লু] [i] এও [i] অপ্রয়োজনীয়, আপনি ব্যবহার করতে পারেন [^ সি] [সিআইউইউ]
বিফ্যাব্রি

4
"এটি কোনও উপায় বলে মনে হচ্ছে না ..." - এটি করার অনেকগুলি উপায় আছে - আফিক, কেবল কোনও অন্তর্নির্মিত উপায় নেই। যদিও আমি সন্নিবেশ মোড বনাম স্বাভাবিক মোডের বিষয়ে ড্যানের বক্তব্যটির সাথে পুরোপুরি একমত, আপনি অবশ্যই কেবল একটি সন্নিবেশ মোড ম্যাপিং সংজ্ঞায়িত করতে পারেন, ": সহায়তা ইমপ্যাব" দেখুন যা আপনি অর্জন করতে চান যা করতে চান যদি সন্নিবেশ মোডে কার্যকারিতা প্রয়োজন হয়।
ব্যবহারকারী 55400

13

পুরো শব্দটি মুছতে আপনার কার্সারটি ব্যবহারে রয়েছে আপনার সম্পূর্ণ কার্সরটি diw
মুছে ফেলার জন্য আপনার কার্সারটি চালু রয়েছে এবং আপনি ciw
যদি পুরো শব্দটি মুছতে না চান তবে আপনি যেখান থেকে মুছুন তা সন্নিবেশ মোডে ব্যবহার করতে পারেনdw/cw


8

যেহেতু একটি শব্দ মুছে ফেলার অনেকগুলি উপায় রয়েছে, আসুন আমরা তাদের চিত্রিত করি।

ধরে নিচ্ছি আপনি সম্পাদনা করছেন:

foo-bar quux

এবং কার্সারটি 'বার' ইন 'বারে থাকাকালীন একটি কমান্ডের আবেদন করুন:

foo-bquux  # dw:  letters then spaces right of cursor
foo-quux   # daw: letters on both sides of cursor then spaces on the right 
foo- quux  # diw: letters on both sides of cursor
foo-bquux  # dW:  non-whitespace then spaces right of cursor
quux       # daW: non-whitespace on both sides of cursor then spaces on the right
 quux      # diW: non-whitespace on both sides of cursor

5

দুর্ভাগ্যক্রমে, সন্নিবেশ মোডে এরকম কোনও কমান্ড নেই। ভিআইএম-তে, পুরো শব্দটি কার্সারের নীচে মুছে ফেলতে আপনি সাধারণ viwdমোডে টাইপ করতে পারেন । যার মানে " ভী isual-ব্লক আমি nner ডব্লিউ Ord ডি elete"। Wবিরামচিহ্ন অন্তর্ভুক্ত করতে একটি উচ্চতর কেস ব্যবহার করুন ।


3

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

" delete current word, insert and normal modes
inoremap <C-BS> <C-O>b<C-O>dw
noremap <C-BS> bdw

এটি সিটিআরএল-ব্যাকস্পেস মানচিত্র করে, সাধারণ মোডেও কাজ করে।


আমি এই উত্তরটি আরও ভাল পছন্দ করি কারণ এটি স্বাভাবিক মোডেও কাজ করে।
শিববধু

2

কার্সারের আগে নির্দিষ্ট পরিমাণের অক্ষর মুছে ফেলার জন্য আপনি এক্স ব্যবহার করতে পারেন the কার্সারের পরে নির্দিষ্ট সংখ্যক শব্দ মুছে ফেলার জন্য আপনি ডাব্লু ব্যবহার করতে পারেন (উদাহরণস্বরূপ 3 টি শব্দের জন্য 3 ডিডব্লু ব্যবহার করে একাধিক শব্দ মুছতে পারেন)। সাধারণভাবে কার্সারের চারপাশে মুছে ফেলার জন্য, আপনি দা ব্যবহার করতে পারেন।


2

পুরানো vi bতে কার্সার শব্দের শুরুর দিকে কার্সারের আগে wসরিয়ে নিয়ে যায়, কার্সার শব্দের শুরুর eদিকে কার্সার পরে যায়, কার্সার পরে শব্দের শেষে কার্সার এবংdw মুছে ফেলা হয়।

আপনি যদি টাইপ করেন তবে আপনি wbdwকার্সারের চারপাশে শব্দটি মুছুন, এমনকি কার্সার শুরুর দিকে বা শব্দের শেষে থাকলেও। মনে রাখবেন যে কোনও শব্দের পরে শ্বেতস্থানগুলি মুছে ফেলার শব্দের অংশ হিসাবে বিবেচনা করে।


2

আপনার "পূর্বে" এবং "পরে" এর ব্যবহার সম্পর্কে ঠিক নিশ্চিত নয়, তবে আপনি চেষ্টা করেছেন

dw

?

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


2

আমি দুটি ম্যাপিং তৈরি করেছি যাতে আমি সন্নিবেশ এবং সন্নিবেশ মোডের বাইরে ধারাবাহিকতা পেতে পারি।

:map <'Key of your choice'> caw

:imap <'Key of your choice'> <'Esc'> caw


0

আমি কেবল কার্সারের আগে শব্দটিই নয়, কার্সারের পরে বা তার কাছাকাছি শব্দটিও মুছতে চাই।

সেক্ষেত্রে ওপির প্রস্তাবিত সমাধানটি (যেমন ব্যবহার করা <c-w>) গ্রহণযোগ্য উত্তরের সাথে একত্রে দেওয়া যেতে পারে:

inoremap <c-d> <c-o>daw<c-w>

বিকল্পভাবে (সংক্ষিপ্ত সমাধান):

inoremap <c-d> <c-o>vawobd

নমুনা ইনপুট:

word1 word2 word3 word4
               ^------------- Cursor location

আউটপুট:

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