ভিমের কমান্ডে যাওয়ার জন্য আমি কীভাবে বর্তমান ফাইলটির পুরো পথটি প্রসারিত করতে পারি?


123

আমি যখন কমান্ড মোডে গিয়ে টাইপ করি

:!mycommand %

আমি আমার কমান্ডটি বর্তমান ফাইলটিতে সম্পাদন করব (বর্তমান ফাইলের %নামটিতে প্রসারিত)। এখানে কি এমন কোনও নির্মাণ রয়েছে যা পুরো ফাইলের নামটি (পুরো পথ সহ) প্রসারিত করে?

আমি উইন্ডোজ ব্যবহার করছি।



:! মাইকম্যান্ড "%"
— এসডিডস

উত্তর:


161

:!mycommand %:p

সম্পর্কিত:

:!cd %:p:h


23
আপনি কীভাবে এই ভিআইএম সহায়তা পেতে পারেন?
— কেফলাভিচ

57
@ কেফ্লাভিচ:help filename-modifiers
— আনিকা ব্যাকস্ট্রোম

বর্তমান ফাইল রয়েছে এমন ডিরেক্টরি পেতে, আমি মনে করি যে%: h যথেষ্ট। এখানে কেন%: p: h দরকার?
— এইচভিএনএসইয়েটিং

1
@HVNSweeting :%pআপেক্ষিক পথের পরিবর্তে ফাইলের পরম পথ। :%p%hফাইলের পিতামহ ডিরেক্টরিতে পরম পথ। ন্যায়সঙ্গত ব্যবহারের %:hফলে কোনও আপেক্ষিক পথ তৈরি হতে পারে।
— আনিকা ব্যাকস্ট্রোম

2
@ এইচভিএনএসওয়েটিং শেল:, cd ~ ; vim .vimrcভিম :, :!echo %:hপ্রদর্শন করা উচিত '। আপেক্ষিক পথের জন্য
— আনিকা ব্যাকস্ট্রোম

65

অন্য দুটি উত্তর আমার পক্ষে কার্যকর হয়নি (কোনও কারণে)। তবে, আমি দেখতে পেয়েছি যে এই মোডোটি সাধারণ মোডে টাইপ করার সময় পুরো পথটি প্রদর্শন করে:

1তারপরে টিপুনCtrlG

উত্স: ভিম টিপস উইকিতে " বর্তমান ফাইলটির নাম পান "। আরও দেখুন {count}CTRL-Gবিভাগে :help CTRL-G।


5
এটি একটি ভিন্ন বিষয়। প্রশ্নটি একটি কমান্ড স্ট্রিং (এইভাবে নেতৃস্থানীয় :!) এর বাফার পাথকে অন্তর্ভুক্ত করার বিষয়ে । আপনার {count}CTRL-Gক্রমটি ইউআইতে পুরো পথটি প্রদর্শনের জন্য।
— স্টিফান মাজেউস্কি

3
@ স্টেফানমাজেউস্কি প্রশ্নের শিরোনাম সম্পর্কে যা আসলে আমাকে এখানে এনেছে, এটিই বেছে নেওয়া উচিত উত্তর।
— doc_id

29

সংযোজন :p, উদা

:!mycommand %:p

এবং %:p:hআপনাকে যে ডিরেক্টরিটিতে ফাইলটি বাস করে তার পথনির্দেশ দেবে।


9

বর্তমান ভিম ফাইলের নাম মুদ্রণ করতে:

:help expand
:echo expand("%:p")    " absolute path
:echo expand("%:p:h")  " absolute path dirname
:echo expand("%:p:h:h")" absolute path dirname dirname
:echo expand("%:.")    " relative path
:echo expand("%:.:h")  " relative path dirname
:echo expand("%:.:h:h")" relative path dirname dirname

:echo expand("<sfile>:p")  " absolute path to [this] vimscript

:help filename-modifiers

উদাহরণস্বরূপ (ক তেজ ফাংশন), জন্য resolve()এবং expand()বর্তমান স্ক্রিপ্ট সঠিক পথটি কোনো symlinks <sfile>:p(পরিবর্তে %:p), এবং তারপর execথেকে -ed ফাইলের নাম একটি ফাংশন-স্থানীয় তেজ পরিবর্তনশীল অন্তর্ভুক্ত :sourcefnameescapel:vimrcfilename

 "  g:__sfile__dirname     -- directory containing this vimrc script
 "                            after symlinks
 "                            ~dirname(abspath(realpath(__file__)))
 let g:__sfile__dirname=fnamemodify(resolve(expand("<sfile>:p")), ":h")

 "  Source_dotvim(filename)  -- source dirname(this_vimrc)/filename
 function Source_dotvim(filename)
     let l:vimrcfilename=g:__sfile__dirname . "/" . a:filename
     if filereadable(l:vimrcfilename) && !empty(l:vimrcfilename)
         "source s:vimrcfilename "this doesn't work, so exec:
         exec "source " . fnameescape(l:vimrcfilename)
     else
         echo l:vimrcfilename . " empty or not found."
     endif
 endfunction 

 call Source_dotvim("vimrc.local.01-env.vimrc")

মন্তব্য:

তথ্যসূত্র



0

আপনি যদি নিজের মধ্যে পুরো পথটি vimrcব্যবহার করতে চান তবে আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন:

let vimFiles = '$HOME/.vim'
let absPath  = expand(vimFiles . '/subDir')

এটি আপনাকে উইন্ডোজে ব্যাকস্ল্যাশ সহ একটি পথ দেবে।

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