দেখা যাক. আমার একটি 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>"