কমান্ড লাইনে সংস্করণের জন্য বর্তমান ফাইলের নাম আনুন


10

কমান্ড লাইনে বর্তমান ফাইলটির পথটি কীভাবে আনব, যাতে কোনও অনুরূপ ফাইলের নাম টাইপ করা যায়? আমি একটি সংক্ষেপণ চাই না যা বর্তমান ফাইলের নাম দ্বারা প্রতিস্থাপন করা হবে, আমি ফাইলের নামটি সম্পাদনা করতে চাই, এটির ডিরেক্টরি পথ দিয়ে সম্পূর্ণ করুন complete উদাহরণস্বরূপ, আমি :editএকটি অনুরূপ নাম সহ কোনও ফাইল বা অনুরূপ ডিরেক্টরিতে উদাহরণস্বরূপ চাই want

vim src/submodule/frontend/frobnicate2.c

এবং এখন আমি সম্পাদনা করতে চাই ../trunk/src/submodule/frontend/frobnicate.c, এবং আমি কেবল সন্নিবেশ করতে ../trunkএবং এটি সরাতে চাই 2, পুরো পথটি আবার টাইপ করব না।

আমি অবশ্যই শেলটিতে ফিরে যেতে পারি এবং এর কমান্ডের ইতিহাসটি ব্যবহার করতে পারি, বা আমি জিইউআইয়ের মধ্য দিয়ে পাথটি অনুলিপি করতে পারি, তবে আমি আরও কার্যকর উপায়টির সন্ধান করছি যা ভিম ছেড়ে যাওয়ার দরকার নেই।

উত্তর:


11

আপনি %যেমন নিজেকে আবিষ্কার করেছেন তেমন রেজিস্টার সন্নিবেশ করা ছাড়াও আপনি এটি ব্যবহার করতে পারেন :edit %<Tab>

থেকে :help cmdline-special:

In Ex commands, at places where a file name can be used, the following
characters have a special meaning.  These can also be used in the expression
function `expand()`.

        %       Is replaced with the current file name.           :_% c_%

সুতরাং আপনি, উদাহরণস্বরূপ, ব্যবহার করতে পারেন:

:edit %.orig

সম্পাদনা করতে file.txt.orig। আপনার উদাহরণস্বরূপ, আপনি টাইপ করতে চান :e ../trunk/%, <Tab>আপেক্ষিক পাথের সাথে ফাইলের নাম পেতে টিপুন , এবং টিপানোর 2আগে মুছে ফেলুন <Enter>

আপনি এটিকে সংশোধন করার জন্য কিছু সংশোধককে যুক্ত করতে পারেন; আমি দেখেছি :hবিশেষভাবে উপকারী হবে, এটি পায় "dirname" (অথবা "মাথা" vim-কথা মধ্যে ") বর্তমান পথের:

:edit file/in/a/deeply/nested/subdirectory/here.txt
:edit %:h/in_same_dir_as_above.txt

এমনকি আপনি :hএকাধিকবার ব্যবহার করতে পারেন । উদাহরণ স্বরূপ:

:edit %:h:h:h/file.txt

খুলবে file/in/a/deeply/file.txt

এমন একটিও রয়েছে :pযা আপনাকে পুরো পথ দেয় এবং যা আপনার ক্ষেত্রে কার্যকর হতে পারে: টাইপ করুন :e %:p, টিপুন <Tab>এবং পছন্দ অনুযায়ী পথ সম্পাদনা করুন। এমনকি আপনি একাধিক সংশোধনকারীদের যেমন ব্যবহার করতে পারেন: :e %:p:h

:help filename-modifiersসম্পূর্ণ তালিকা জন্য দেখুন ।

দ্রষ্টব্য: আপনি যদি <Tab>, Vim প্রসারিত হবে %। আপনি যদি ব্যবহার করেন <C-d>, ভিমটি প্রসারিত করবে না %(তবে %পথটি শেষ করার সময় বিকল্পটি দেবে )।


5

উহু. "ফাইলের নাম" এর জন্য অনুসন্ধান করুন :help :! এটি সহজ: বিশেষ r উদাহরণস্বরূপ সন্নিবেশ করানো , যার অর্থ বর্তমান ফাইলের নাম।CTRL-R %%


1
সুতরাং, আপনার উত্তরের উপর ভিত্তি করে: ওপির অনুরোধ অনুসারে পুরো পথটি পেতে, আপনি এর মতো কিছু করতে চাই Ctrl-r =expand('%:p')। এটি = রেজিস্টার ব্যবহার করে ।
lcd047

3

আপনি যদি নিজের ভিমে pathভেরিয়েবলটি সেট করে থাকেন তবে আপনার কাছে :findকমান্ডের পুরো ক্ষমতা থাকবে , নামটি ফাইলের নাম ট্যাব-সমাপ্তি (ডিরেক্টরি অংশটি নির্দিষ্ট করার প্রয়োজন ছাড়াই!)

আপনার ক্ষেত্রে, মত কিছু

set path=./**

:fin frob<tab>আপনার কাজের জন্য যা প্রয়োজন তা হতে পারে । বেহাল বিবরণ জন্য :help find,, :help file-searching


0

আপনি ম্যাপিং চেষ্টা করতে পারেন এখানে:

cnoremap <a-q> <c-c>:let @a=expand('%')<CR>:<Up><c-r>a

এটি বর্তমান কমান্ডটি সংরক্ষণ করে তারপরে বর্তমান ফাইলটির নামের জন্য 'ক' রেজিস্টার করে। তারপরে শেষ কমান্ডটি পুনরায় আহ্বান করা হবে এবং 'এ' রেজিস্টার সামগ্রীগুলি যুক্ত করা হবে। অবশ্যই আপনার যদি 'এ' রেজিস্ট্রারে কিছু কার্যকর থাকে তবে এটি এটি ওভাররাইট করে দেবে।

আপনি ম্যাপযুক্ত অক্ষরগুলি অন্য কোনওটিতে পরিবর্তন করতে চাইতে পারেন। আমি আল্ট কীটি ব্যবহার করতে চাই তবে এটি কিছু টার্মিনালগুলিতে কাজ করে না।

কার্পেটস্মোকার তার উত্তরে যেমন নির্দেশ করেছেন আপনি ফাংশন কলটিতে এই পরিবর্তন করতে পারেন

expand('%:p')

সম্পূর্ণ পথ জোর করা।


1
এটি নিরর্থক নিবন্ধন বাতিল করতে হবে a। পরিবর্তে এর মতো কিছু চেষ্টা করুন:cnoremap <M-q> <C-r>=fnameescape(expand('%:p'))<CR>
lcd047
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.