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


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.