আমি যখন কমান্ড মোডে গিয়ে টাইপ করি
:!mycommand %
আমি আমার কমান্ডটি বর্তমান ফাইলটিতে সম্পাদন করব (বর্তমান ফাইলের %
নামটিতে প্রসারিত)। এখানে কি এমন কোনও নির্মাণ রয়েছে যা পুরো ফাইলের নামটি (পুরো পথ সহ) প্রসারিত করে?
আমি উইন্ডোজ ব্যবহার করছি।
আমি যখন কমান্ড মোডে গিয়ে টাইপ করি
:!mycommand %
আমি আমার কমান্ডটি বর্তমান ফাইলটিতে সম্পাদন করব (বর্তমান ফাইলের %
নামটিতে প্রসারিত)। এখানে কি এমন কোনও নির্মাণ রয়েছে যা পুরো ফাইলের নামটি (পুরো পথ সহ) প্রসারিত করে?
আমি উইন্ডোজ ব্যবহার করছি।
উত্তর:
:!mycommand %:p
সম্পর্কিত:
:!cd %:p:h
:help filename-modifiers
:%p
আপেক্ষিক পথের পরিবর্তে ফাইলের পরম পথ। :%p%h
ফাইলের পিতামহ ডিরেক্টরিতে পরম পথ। ন্যায়সঙ্গত ব্যবহারের %:h
ফলে কোনও আপেক্ষিক পথ তৈরি হতে পারে।
cd ~ ; vim .vimrc
ভিম :, :!echo %:h
প্রদর্শন করা উচিত '। আপেক্ষিক পথের জন্য
অন্য দুটি উত্তর আমার পক্ষে কার্যকর হয়নি (কোনও কারণে)। তবে, আমি দেখতে পেয়েছি যে এই মোডোটি সাধারণ মোডে টাইপ করার সময় পুরো পথটি প্রদর্শন করে:
1তারপরে টিপুনCtrlG
উত্স: ভিম টিপস উইকিতে " বর্তমান ফাইলটির নাম পান "। আরও দেখুন {count}CTRL-G
বিভাগে :help CTRL-G
।
:!
) এর বাফার পাথকে অন্তর্ভুক্ত করার বিষয়ে । আপনার {count}CTRL-G
ক্রমটি ইউআইতে পুরো পথটি প্রদর্শনের জন্য।
সংযোজন :p
, উদা
:!mycommand %:p
এবং %:p:h
আপনাকে যে ডিরেক্টরিটিতে ফাইলটি বাস করে তার পথনির্দেশ দেবে।
বর্তমান ভিম ফাইলের নাম মুদ্রণ করতে:
: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 ফাইলের নাম একটি ফাংশন-স্থানীয় তেজ পরিবর্তনশীল অন্তর্ভুক্ত :source
fnameescape
l: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")
মন্তব্য:
:help fnamemodify
%:p
(বাফার ফাইল) / <sfile>:p
(স্ক্রিপ্ট ফাইল)expand('<sfile>')
কোনও ফাংশনের মধ্যে থেকে কাজ করে নাl:varname
কাজ করে না; সুতরাং, exec
- স্ট্রিং সংক্ষিপ্তকরণ - এবংfnameescape
:messages
অতি সাম্প্রতিক 200 ভিআইএম [ত্রুটি,] বার্তা মুদ্রণ করেতথ্যসূত্র
বর্তমান ফাইলটির নাম পান http://vim.wikia.com/wiki/Get_the_name_of_t__current_file
সেট_কাজিং_ডাইরেক্টরি_ টু_সেন্টাল_ফায়াল http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file
আপনি যদি নিজের মধ্যে পুরো পথটি vimrc
ব্যবহার করতে চান তবে আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন:
let vimFiles = '$HOME/.vim'
let absPath = expand(vimFiles . '/subDir')
এটি আপনাকে উইন্ডোজে ব্যাকস্ল্যাশ সহ একটি পথ দেবে।