কমান্ড-লাইন মোড টাইপ করুন <এসএসএস> এবং সিটিআরএল কমান্ডগুলি


11

কল্পনা করুন আপনি নীচের শব্দটি উদ্ধৃত করতে চান। যদি |কার্সার অবস্থান থাকে তবে আপনি cw""<Esc>Pসাধারণ মোড থেকে শব্দটি সহজেই উদ্ধৃত করতে পারেন ।

|below

কমান্ড-লাইন মোডে আমি একই আচরণ অর্জন করতে চাই। আমার প্রশ্ন হ'ল আমি কমান্ড-লাইন মোডে কীভাবে বলতে পারি যে আমি একটি টাইপ করতে চাই <Esc>। আমি চেষ্টা করেছি :norm cw""<Esc>Pএবং কিছু অন্যান্য বৈকল্পিক কিন্তু আমি কেবল এর ""<Esc>Pপরিবর্তে পেয়েছি "below"

এখনও এর সাথে সম্পর্কিত আমি কীভাবে কমান্ড-লাইন মোড টাইপ সিটিআরএল কমান্ড তৈরি করতে পারি তা জানতে চাই। উদাহরণস্বরূপ আমি cw"<C-r>""<Esc>পরিবর্তে পূর্বোক্ত শব্দটি উদ্ধৃত করতে পারলাম । তবে তারপরে আমার টাইপ করার <C-r>জন্য আমার কমান্ড-লাইন দরকার । কিভাবে আমি এটি করতে পারব?


1
<C-x><C-e>কমান্ড-লাইনটি সম্পাদনা করতে রিডলাইনে যেমন রয়েছে $EDITOR, <C-f>তেমনি আপনার কমান্ড-লাইন উইন্ডোটি খুলতে ভিমে থাকতে হবে। দেখুন :help cmdline-window
রোমেনেল

উত্তর:


11

<C-v>আপনি যা খুঁজছেন তা এটি আপনাকে Escকোনও কিছু এড়ানোর প্রয়োজন ছাড়াই আক্ষরিক অক্ষরগুলিতে (যেমন, "Esc" স্ট্রিংয়ের পরিবর্তে একটি আক্ষরিক ) প্রবেশ করতে দেয় ।

:norm cw""<C-v><Esc>P

প্রদর্শিত হবে:

:norm cw""^[P

এবং আপনি যা চান তা করবেন (অর্থাত্ শব্দটি উদ্ধৃত করুন)। আপনি অন্যান্য <C-?>ম্যাপিংয়ের সাথে এটিও ব্যবহার করতে পারেন । উদাহরণস্বরূপ, আপনার দ্বিতীয় অনুরোধ:

:norm cw"<C-v><C-r>""

প্রদর্শিত হবে:

:norm cw"^R""

এবং উপরের মত একই ফলাফল হবে। Escশেষে অতিরিক্তটি অন্তর্ভুক্ত করার দরকার নেই ।


10

এটি কারণ বিশেষ কীগুলি হ'ল কমান্ডগুলিতে <Esc>অনুবাদ হয় না normalএবং আপনার চাপ মতো আচরণ করা হয় <Esc>। এর প্রতিকারের জন্য, আপনি একটি execআদেশ ব্যবহার করতে পারেন । তাই ভালো:

:exec "norm cw\"\"\<Esc>P"

নোট করুন যে আপনাকে অবশ্যই উদ্ধৃতি এবং এর আগে একটি ব্যাকস্ল্যাশ রাখতে <Esc>হবে এবং ডাবল উদ্ধৃতিগুলির পরিবর্তে একক উদ্ধৃতি ব্যবহার করা কার্যকর হবে না।


এটি কি সিটিআরএল কমান্ডের জন্যও কাজ করে? কমান্ডে তাদের কীভাবে লিখব?
গোনালো রিবেইরো

হ্যাঁ, এটি কাজ করা উচিত। আপনি এগুলি তাদের মতো লিখতে পারেন:"\<C-{insert key}>"
চিরসবুজ

2

কমান্ড-লাইন মোড পৃথক; আপনি সেখানে একই (সাধারণ মোড) সম্পাদনা কমান্ড ব্যবহার করতে পারবেন না। আপনি এখানে আদেশের একটি তালিকা পেতে পারেন :help c_CTRL-V

এখন, কমান্ড-লাইন উইন্ডো আছে ( :help command-line-window), যা q:সাধারণ- এবং <C-F>কমান্ড-লাইন মোড থেকে প্রবেশ করা যায় । ইন যে উইন্ডোটি, আপনি সমস্ত স্বাভাবিক কমান্ড এবং ম্যাপিং ব্যবহার করতে পারেন, যাতে বিকল্প 1 হবে।

বিকল্প 2 কমান্ড-লাইন মোডের জন্য বিশেষ ম্যাপিং। যেমনটি আমি বলেছি, আপনি :normalএট আল এর মাধ্যমে পদ্ধতির ব্যবহার করতে পারবেন না । :help c_CTRL-\_eএগুলি সংজ্ঞায়িত করার মূল চাবিকাঠি হ'ল ম্যাপিং, যা "[s] {expr} মূল্যায়ন করে এবং ফলাফলের সাথে পুরো কমান্ড লাইনকে [গুলি] প্রতিস্থাপন করে।" এখানে একটি সাধারণ উদাহরণ যা কেবলমাত্র কমান্ড-লাইনের শেষে সঠিকভাবে কাজ করে:

:cnoremap <F1> <C-\>esubstitute(getcmdline(), '\w\+$', '"&"', '')<CR>

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