উত্তর:
আপনার যা করা উচিত তা হ'ল ধারাবাহিক কমান্ডের জন্য একটি নির্দিষ্ট কীটির একটি ইমপ্যাক তৈরি করা, এক্ষেত্রে কমান্ডগুলি আপনাকে স্বাভাবিক মোডে ফেলে দেবে, বর্তমান শব্দটি মুছে ফেলবে এবং তারপরে আপনাকে আবার প্রবেশের দিকে রাখবে:
:imap <C-d> <C-[>diwi
imap <C-d> <C-o>diw
কাজ করে। এটি একটি পূর্বাবস্থার বিন্দুও তৈরি করে না, যা << এসএসস> প্রায় সবসময়ই করে।
স্বাভাবিক অবস্থা:
daw : delete the word under the cursor
caw : delete the word under the cursor and put you in insert mode
da)
এবং ci)
কিন্তু এই কখনও ভাবি নি!
.vimrc
ফাইলে এই শিশুদের ম্যাপ করেছি: nmap <Leader>d daw
এবংnmap <Leader>c caw
aw
বিষয়টি অবজেক্ট নির্বাচনের একটি উদাহরণ। তাদের কী প্রভাব রয়েছে তা দেখতে আপনি ভিজ্যুয়াল মোডে অবজেক্ট নির্বাচনের চেষ্টা করতে পারেন: vimdoc.sourceforge.net/htmldoc/motion.html#object-sese
আমি মনে করি এটি ঠিক আছে daw
daw - delete a word
a
এটি একটি কমান্ড Append text after the cursor [count] times.
তবে কীভাবে daw
কাজ করে?
d
নির্দেশ দেয় আপনি 'মোছা' হবেন। 'এ' হ'ল এক ধরণের প্যারামিটার, উল্লেখ করে যে মুছে ফেলাটি একটি সীমানাঙ্ক অন্তর্ভুক্ত করে। অবশেষে ' parameter
ডাব্লু ', যদি আপনি অন্যটি নির্দিষ্ট করেন যে একটি word
ইউনিট মুছে ফেলা হবে।
dw
এবং মধ্যে পার্থক্য কি daw
?
dw
তবে কার্সার থেকে শব্দের শেষ পর্যন্ত daw
মুছে ফেলা হবে এবং পুরো স্পেস সহ পুরো শব্দটি মুছে ফেলবে। diw
চারপাশের সাদা জায়গা স্পর্শ না করে পুরো শব্দটি মুছে ফেলবে।
নীচেরটি সাধারণ মোডের জন্য কাজ করে: আমি ড্যান ওলসনের উত্তরের সাথে একমত যে আপনাকে বেশিরভাগ মোছার জন্য সম্ভবত স্বাভাবিক মোডে থাকা উচিত। নীচে আরও বিশদ।
যদি কার্সার শব্দের ভিতরে থাকে:
diw
শব্দের মধ্যে মুছতে (ফাঁকা স্থানগুলি অন্তর্ভুক্ত নয়)
daw
শব্দটির চারপাশে মুছতে (পরের শব্দের আগে ফাঁকা স্থান অন্তর্ভুক্ত)।
কার্সার শব্দের শুরুতে থাকলে, টিপুন dw
।
এটি চলাচলের জন্য সাধারণ সংখ্যা যুক্ত করে গুণ করা যায়, উদাহরণস্বরূপ 2 শব্দকে 2 শব্দ এগিয়ে নিয়ে যাওয়ার জন্য, তাই d2w দুটি শব্দ মুছে দেয়।
মোড
sertোকান ^ w ভিমে চলাচলের জন্য এইচজেকিএল ব্যবহার করার ধারণাটি হ'ল সারিটিতে আপনার হাত রাখা আরও উত্পাদনশীল। একটি শব্দের শেষে ^ w শব্দটি দ্রুত মুছে ফেলার জন্য দুর্দান্ত কাজ করে। আপনি যদি সন্নিবেশ মোডে চলে গেছেন, কিছু পাঠ্য প্রবেশ করিয়েছেন এবং হোম সারি দর্শনের বিরুদ্ধে গিয়েছেন এমন শব্দের মাঝামাঝি শেষ করতে তীর কীগুলি ব্যবহার করেছেন।
আপনি যদি স্বাভাবিক মোডে থাকেন এবং শব্দটি c
পরিবর্তন d
করতে চান তবে আপনি যদি শব্দটি পুরোপুরি পরিবর্তন করতে চান তবে (মুছে ফেলার) পরিবর্তে (পরিবর্তন) ব্যবহার করতে পারেন এবং i
ফিরে পেতে চাপ না দিয়ে সন্নিবেশ মোডে আবার প্রবেশ করতে পারেন টাইপ করতে।
আপনি কি মানে?
dw
dw
হাইফেন বা অন্যান্য বিরামচিহ্নের অতীত মুছবে না।
দেখে মনে হচ্ছে কোনও বিল্ট-ইন আছে সন্নিবেশ মোডে করার উপায় আছে বলে মনে হচ্ছে না, যা ছিল প্রশ্ন। অন্যান্য কয়েকটি উত্তর স্বাভাবিক মোডের জন্য সঠিক, পাশাপাশি sertোকানো মোডে কার্যকারিতা যুক্ত করতে একটি কাস্টম ম্যাপিং তৈরি করা যেতে পারে তা নির্দেশ করে।
সত্য, আপনার সম্ভবত মোড মোডে মোছার বেশিরভাগটি করা উচিত। ^ ডাব্লুটি সম্পর্কে জানার জন্য ঝরঝরে, তবে আমি নিশ্চিত নই যে আমি এমন পরিস্থিতিটি সম্পর্কে ভাবতে পারি যেখানে আমি স্বাভাবিক মোডে যাওয়ার চেয়ে এসএস্কের চেয়ে বরং এটি করতে পারি এবং আমার কাছে আরও শক্তিশালী মুছে ফেলার নির্দেশ রয়েছে।
ভিম এইভাবে অন্যান্য বেশ কয়েকটি সম্পাদক (টেক্সটমেট সহ) থেকে খুব আলাদা। আপনি যদি এটি উত্পাদনশীলভাবে ব্যবহার করে থাকেন তবে আপনি সম্ভবত দেখতে পাবেন যে আপনি সন্নিবেশ মোডে খুব বেশি সময় ব্যয় করেন না।
পুরো শব্দটি মুছতে আপনার কার্সারটি ব্যবহারে রয়েছে আপনার সম্পূর্ণ কার্সরটি diw
মুছে ফেলার জন্য আপনার কার্সারটি চালু রয়েছে এবং আপনি ciw
যদি পুরো শব্দটি মুছতে না চান তবে আপনি যেখান থেকে মুছুন তা সন্নিবেশ মোডে ব্যবহার করতে পারেনdw/cw
যেহেতু একটি শব্দ মুছে ফেলার অনেকগুলি উপায় রয়েছে, আসুন আমরা তাদের চিত্রিত করি।
ধরে নিচ্ছি আপনি সম্পাদনা করছেন:
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
মুছে ফেলা শব্দটি মুছে ফেলার শব্দগুলি পুনরাবৃত্তি করার চেষ্টা করার সময় ব্যর্থ হয়, পরিবর্তে এই সমাধানটি চেষ্টা করুন:
" delete current word, insert and normal modes
inoremap <C-BS> <C-O>b<C-O>dw
noremap <C-BS> bdw
এটি সিটিআরএল-ব্যাকস্পেস মানচিত্র করে, সাধারণ মোডেও কাজ করে।
কার্সারের আগে নির্দিষ্ট পরিমাণের অক্ষর মুছে ফেলার জন্য আপনি এক্স ব্যবহার করতে পারেন the কার্সারের পরে নির্দিষ্ট সংখ্যক শব্দ মুছে ফেলার জন্য আপনি ডাব্লু ব্যবহার করতে পারেন (উদাহরণস্বরূপ 3 টি শব্দের জন্য 3 ডিডব্লু ব্যবহার করে একাধিক শব্দ মুছতে পারেন)। সাধারণভাবে কার্সারের চারপাশে মুছে ফেলার জন্য, আপনি দা ব্যবহার করতে পারেন।
পুরানো vi b
তে কার্সার শব্দের শুরুর দিকে কার্সারের আগে w
সরিয়ে নিয়ে যায়, কার্সার শব্দের শুরুর e
দিকে কার্সার পরে যায়, কার্সার পরে শব্দের শেষে কার্সার এবংdw
মুছে ফেলা হয়।
আপনি যদি টাইপ করেন তবে আপনি wbdw
কার্সারের চারপাশে শব্দটি মুছুন, এমনকি কার্সার শুরুর দিকে বা শব্দের শেষে থাকলেও। মনে রাখবেন যে কোনও শব্দের পরে শ্বেতস্থানগুলি মুছে ফেলার শব্দের অংশ হিসাবে বিবেচনা করে।
আমি কেবল কার্সারের আগে শব্দটিই নয়, কার্সারের পরে বা তার কাছাকাছি শব্দটিও মুছতে চাই।
সেক্ষেত্রে ওপির প্রস্তাবিত সমাধানটি (যেমন ব্যবহার করা <c-w>
) গ্রহণযোগ্য উত্তরের সাথে একত্রে দেওয়া যেতে পারে:
inoremap <c-d> <c-o>daw<c-w>
বিকল্পভাবে (সংক্ষিপ্ত সমাধান):
inoremap <c-d> <c-o>vawobd
নমুনা ইনপুট:
word1 word2 word3 word4
^------------- Cursor location
আউটপুট:
word1 word4