আমি কীভাবে ভিমে থাকা ফাইলগুলির বর্তমান ফাইলের নামটি sertোকাতে পারি?


38

কিছু অনুসন্ধানের পরে, আমি জানতে পারি :echo @%যে ভিএম-স্ক্রিনের নীচের লাইনে বর্তমান ফাইলের নামটি প্রদর্শন করে।

আমি ফাইল নামটি (পুরো পথ সহ এবং ছাড়া) ফাইলের বিষয়বস্তুগুলিতে না রেখেই ফেলে দিতে চাই vim

এই কাজ করতে কোন উপায় আছে কি?

উত্তর:


27

আমি নিশ্চিত যে এটি করার অন্যান্য উপায় আছে ... তবে আপনি যে প্রধান কমান্ডটি চান তা হ'ল :r[ead]যা কোনও আদেশের আউটপুট বাফারে প্রবেশ করিয়ে দেয়।

সুতরাং, কেবলমাত্র ফাইলের নাম সন্নিবেশ করতে:

:r! echo %

এবং পুরো পথটি অন্তর্ভুক্ত করতে:

:r! echo %:p

আরও তথ্যের জন্য:

:help read
:help filename-modifiers 

37

বর্তমান ফাইলের নামটি "%রেজিস্টারে রয়েছে, সুতরাং আপনি এটি সহ (সন্নিবেশ মোডের সাথে) সন্নিবেশ করতে পারেন <c-r>%; পুরো পথটি withোকানো যেতে পারে <c-r>=expand("%:p")। আপনি যদি এটি প্রায়শই ব্যবহার করেন তবে আপনি এটির ম্যাক্রো তৈরি করতে পারেন। আরও অনুরূপ কৌশল, দেখুন :h expandএবং :h "=


হতে পারে আমি এটি ভুলভাবে পড়ছি, কিন্তু <c-r>রেডো কমান্ড হিসাবে ম্যাপ করা হচ্ছে না ?
জে সি ইয়ামোকস্কি

10
সন্নিবেশ মোডে, <c-r>উল্লেখ করে যে পরবর্তী অক্ষরটি একটি রেজিস্টার।
কেভিন

রাইটো, ধন্যবাদ সম্পূর্ণরূপে সন্নিবেশ মোডে স্যুইচ করতে ভুলে গেছেন ...
জে সি ইয়ামোকস্কি

আপনি "%pসাধারণ বা ভিজ্যুয়াল মোডেও করতে পারেন।
naught101

15

যেমন দেখা যায় :h registers, "%রেজিস্টারটিতে বর্তমান ফাইলের নাম রয়েছে। :pu[t]কমান্ড পাঠ্যে একটি রেজিস্টার বিষয়বস্তু সন্নিবিষ্ট করে।

সুতরাং, প্রকৃত ফাইলের নাম সন্নিবেশ করতে আপনি কমান্ড মোডে এগুলির মধ্যে যে কোনওটি টাইপ করতে পারেন:

:put %

অথবা

"%p

পুরো পাথ সহ ফাইলের নাম সন্নিবেশ করতে, টাইপ করুন

:put=expand('%:p')

কমান্ড মোডে।


অধিক তথ্য:

:h pu[t]

টাইপ করে "rpআপনি নিবন্ধের সামগ্রীগুলি পেস্ট করতে পারেন "r


3
:put "%:p"আমার জন্য কাজ বলে মনে হচ্ছে না। এটি কেবল প্রসারিত () এর মতো: যেমন দিয়ে কাজ করে বলে মনে হচ্ছে :put =expand('%:p')এটি <c-r>=expand('%:p')দুর্ভাগ্যক্রমে তুলনায় খুব কম জটিল নয় ।
উকভেল

@াকাভেল আপনি সঠিক, আমি উত্তরটি আপডেট করব। ধন্যবাদ! ;) এবং, প্রকৃতপক্ষে, উভয়ই সমান ভার্জোজ।
ব্রুনমাগ্রিন

5

একটি সহজ উপায় চালানো হয়:

!!echo %
  • !! কমান্ডের ফলাফল অনুসরণ করে বর্তমান লাইনটি প্রতিস্থাপন করছে।

  • % কমান্ডে সম্পাদিত ফাইলের নাম দ্বারা প্রতিস্থাপন করা হয় যাতে এটি সম্পাদিত ফাইলটিতে কার্যকরভাবে নামটি প্রবেশ করান।

ফাইল নাম হ'ল আপনি যা vi (এম) কমান্ডে পাস করেছেন এবং এতে কোনও আপেক্ষিক বা পরম পথ থাকতে পারে। আপনি এটি স্ট্রিপ করতে চান এবং কেবল ফাইলের নাম ধরে রাখতে চান, চালান

!!basename %

1

আপনার যদি ঘন ঘন এটি করার প্রয়োজন হয় তবে http://vim.wikia.com/wiki/Insert_current_filename অনুসারে আপনি যা চান তার মূল অনুক্রম বাঁধাই কার্যকর হতে পারে

আপনি সন্নিবেশ মোডে থাকা অবস্থায় কার্সার অবস্থানে এক্সটেনশন ছাড়াই বর্তমান ফাইলের নাম সন্নিবেশ করান।

:inoremap \fn <C-R>=expand("%:t:r")<CR>

এক্সটেনশন ব্যবহার রাখতে:

:inoremap \fn <C-R>=expand("%:t")<CR>

ডিরেক্টরিটির পরম পাথ সন্নিবেশ করতে ফাইলটি ব্যবহৃত হচ্ছে:

:inoremap \fn <C-R>=expand("%:p:h")<CR>

ডিরেক্টরিটির আপেক্ষিক পাথ সন্নিবেশ করতে ফাইলটি ব্যবহৃত হচ্ছে:

:inoremap \fn <C-R>=expand("%:h")<CR>

উপরের সমস্তগুলি সরাসরি vimঅধিবেশনের জন্য কাজ করে বা আপনি এটিতে রাখতে পারেন .vimrc(যেখানে লাইনের শীর্ষস্থানীয় কোলন alচ্ছিক)।


0

আমি বর্তমান পজিশনে বর্তমান ফাইলের নাম (পাথ বা এক্সটেনশন ছাড়াই) সন্নিবেশ করার একটি সহজ উপায় গুগল করছিলাম (কোনও নতুন লাইন নেই, বর্তমান লাইন প্রতিস্থাপন করা হবে না)। সুতরাং পূর্ববর্তী উত্তরগুলি এবং এই লিঙ্কটির সংমিশ্রণ , এটিই আমি খুঁজছিলাম।

ইন সন্নিবেশ মোড:

<C-R>=expand("%:t:r")

তারপরে পরবর্তী সময় (ইতিমধ্যে ইতিহাসে আদেশটি সহ):

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