দেখা যাক. আমার একটি gvim
দৌড়াচ্ছে এবং আমি ফাইলগুলি খুলতে চাই, যাautocmd
( যা বিধি নিষেধ করে--remote-tab
) respect
এখন আমি জানি যে আমি করতে পারি (মূলত কিছুটা টুইট)
gvim --remote-send ":tabe my_file<CR>"
যা কাজ করে। তবে যদি কোনও ফাইলের মধ্যে ফাঁকা স্থান বা অদ্ভুত অক্ষর থাকে তবে আমাকে নিম্নলিখিতগুলি করতে হবে:
gvim --remote-send ":tabe my\\ file<CR>"
(দ্বিগুণ \\
কারণ এগুলির মধ্যে একটি শেল দ্বারা খাওয়া হয়; এটি ম্যানুয়ালি টাইপের সমতুল্য
`:tabe my\ file`
ইন vim
এবং এটি কাজ করে)। এখন, আমি শেল বা যে কোনও কিছুতে সেই স্ট্রিংটি তৈরি করার একটি উপায় খুঁজে পেতে পারি, তবে আমি আশাবাদী যে আমি ": ট্যাবে" কমান্ডের স্ট্রিংকে "বিশ্বব্যাপী উদ্ধৃতি" দিতে পারব,
gvim --remote-send ":tabe 'my file'<CR>"
অথবা
gvim --remote-send ":tabe \"my file\"<CR>"
--- এটি সরাসরি ভিএম কমান্ড লাইনে লেখার সমতুল্য :tabe "my file"
; মনে হচ্ছে এটি কাজ করছে না। আমি শেল দিয়ে স্ট্রিংয়ের সমস্ত স্থান স্পষ্টভাবে উদ্ধৃত করতে পারি, এমন কিছু করে
# <ESC> because the gvim instance can be in a mode different from normal
# the double CR: do not ask.
# the argument MUST be a full path
file="$(readlink -f "$@")"
fileq="$(echo "$file" | awk '{gsub(/ /,"\\\ ")}1')" # quote spaces FIXME add other chars
exec gvim 2>/dev/null --servername $desktop --remote-send "<ESC>:tabe $fileq <CR><CR>"
তবে এটি কেবল ফাঁকা জায়গাগুলির জন্য এবং অন্যান্য বিশেষ অক্ষরের মতো কাজ করে না যেমন ট্যাবগুলি এবং "
(নয় নিউলাইনগুলি, তবে আপনার ফাইলের নামের মধ্যে যদি নতুন লাইন থাকে তবে আপনি এটি প্রাপ্য!)।
প্রশ্ন :
স্বতন্ত্রভাবে নির্দিষ্ট শেলটিতে, যার সাহায্যে আমি :-) এর পরে কাজ করব, সেখানে কি কোনও উপায় আছে যখন সরাসরি ভিআইম tabe:
লাইনে টাইপ করে বিশ্বব্যাপী একটি ফাইল নাম উদ্ধৃত করার জন্য একটি করে "অদ্ভুত" অক্ষরকে উদ্ধৃত না করে?
gvim --remote-send ":tabe 'f s.txt'<CR>"
আমার পক্ষে কাজ করেনি, বা :tabe 'f s.txt'
ভিমে লেখেনি, পেয়েছি E77: Too many files names
।
gvim --servername $desktop --remote-send "<ESC>:tabe ${file// /\\ }<CR>"
সহজ হবে না ?
shellescape
ফাংশন সহায়ক হতে?
:edit
(এবং এর রূপগুলি) একটি উদ্ধৃত ফাইলের নাম গ্রহণ করে না। সমস্ত বিশেষ অক্ষর পৃথকভাবে পালাতে হবে। সুতরাং, :edit "foo bar.txt"
কাজ করবে না; আপনার যা দরকার তা :edit foo\ bar.txt
। এটি বলেছিল, এর মতো কিছু :execute 'tabedit' escape('$file', ' ')
সঠিক পথে হতে পারে।
gvim --remote-send ':tabe foo\ bar.txt<CR>'
আমার জন্য বাশ এবং zsh কাজ করে। এবং উদ্ধৃতিগুলিও গুরুত্বপূর্ণ মনে হচ্ছে। যদি আমি ব্যবহার"
অভ্যন্তরীণভাবে, এটা কাজ করে নি, কিন্তু'
: করেনিgvim --remote-send ":tabe 'foo bar.txt'<CR>"