vim এ আমি করতে পারি vim --servername fooএবং vim --servername foo --remote-silent bar.txtএকাধিক টার্মিনাল উইন্ডোজ (টিএমউक्स বা যে কোনও মাধ্যমে) ভিএম এর এক উদাহরণে ফাইলগুলি খুলতে পারি । নিওভিমে একই জিনিস কীভাবে অর্জিত হয়?
vim এ আমি করতে পারি vim --servername fooএবং vim --servername foo --remote-silent bar.txtএকাধিক টার্মিনাল উইন্ডোজ (টিএমউक्स বা যে কোনও মাধ্যমে) ভিএম এর এক উদাহরণে ফাইলগুলি খুলতে পারি । নিওভিমে একই জিনিস কীভাবে অর্জিত হয়?
উত্তর:
আমি যতদূর জানি ভিমের এই বৈশিষ্ট্য রয়েছে কারণ জিইউআই ভিম (জিভিআইএম) গ্রাফিকাল এক্স সার্ভারটি ব্যবহার করে। আমি সচেতন যে নন জিইউআই ভিমও --servernameযুক্তিটি ব্যবহার করতে পারে তবে কেবল যখন এক্স 11 চলছে এবং এটি অ্যাক্সেস করেও । অন্যদিকে, নেওভিমের কোনও গ্রাফিকাল সমর্থন নেই; যে কারণে, আমি মনে করি না যে --servernameবিকল্পটি কাজ করতে পারে (যদি না অপশনটি অন্য কোনও উপায়ে পুরোপুরি নতুন করে লেখা হত) তবে কেবলমাত্র সেই উদ্দেশ্যে এক্স 11 সার্ভারটিতে অ্যাক্সেস করার জন্য একটি কনসোল প্রোগ্রাম পাওয়া আমার কাছে অদ্ভুত মনে হবে।
নিউওম রিমোট হ'ল নিউভিম প্রক্রিয়াগুলি নিয়ন্ত্রণের জন্য অজগর স্ক্রিপ্ট। এটিতে ভিম স্টাইল - সার্ভারনেম এবং --রেমোট অপশন রয়েছে। এটি এখন আমি আমার একাধিক-টার্মিনাল কাজের পরিবেশের জন্য ব্যবহার করি।
উল্লিখিত হিসাবে, ক্লায়েন্টেরভারের সমস্ত বৈশিষ্ট্য নিওভিমে সরানো হয়েছে। এটি কারণ যে তারা X11 ভাগ করা মেমরি ব্যবহার করে এবং নিওভিম X11 সমর্থন সরিয়ে ফেলে।
তবে আমি :help --servernameযদি নিওভিমে ব্যবহার করি তবে আমি ফাংশনটির ডকুমেন্টেশনটি শেষ করব serverstart():
serverstart([{address}]) serverstart()
Opens a named pipe or TCP socket at {address} for clients to
connect to and returns {address}. If no address is given, it
is equivalent to:
:call serverstart(tempname())
$NVIM_LISTEN_ADDRESS is set to {address} if not already set.
--servername
The Vim command-line option --servername can be imitated:
nvim --cmd "let g:server_addr = serverstart('foo')"
এটি একটি সকেট তৈরি করবে /tmp/; :echo v:servernameপথের জন্য দেখুন এটি সম্ভবত আরও নির্ধারিত ঠিকানা ব্যবহার করা আরও কার্যকর (যেমন serverstart('/tmp/nvim-remote'); যদিও আপনি সম্ভবত এটি কোনও ফাংশনে গুটিয়ে রাখতে চাইবেন, কারণ এটি --serverstartইতিমধ্যে উপস্থিত থাকলে ভিমের মতো সংখ্যায় সংযুক্ত হবে না )।
আপনি আরপিসি এপিআই দিয়ে কমান্ড প্রেরণ করতে পারেন। যতদূর আমি খুঁজে পেতে পারি নিওভিম (মেহ) দিয়ে কমান্ড পাঠানোর কোনও উপায় নেই। আপনাকে এপিআই ক্লায়েন্টগুলির একটি ইনস্টল করতে হবে । উদাহরণস্বরূপ পাইথন এপিআই ক্লায়েন্টের সাথে (যা নিওভিম রিমোটও ব্যবহার করে):
import neovim
nvim = neovim.attach('socket', path='/tmp/nvim-remote')
try:
nvim.command(':e foo')
finally:
nvim.quit()
আপনি সম্ভবত echo ... >> /tmp/nvim-removeশেল কমান্ডের সাহায্যে একই বাইটগুলি প্রেরণ করতে পারেন , তবে আরপিসি এপিআই কিছুটা তুচ্ছ নন-পাঠ্য প্রোটোকল ("মেসেজপ্যাক আরপিসি") ব্যবহার করে এবং কোন বাইটগুলি হুবহু প্রেরণ করা উচিত তা এই পোস্টের জন্য কিছুটা চেষ্টা ছিল; -)
:help rpcনিওভিমের আরপিসি এপিআই-তে পূর্ণ বিবরণ দেখুন ।
এনবি :help remote.txtপাশাপাশি আরও অনেকগুলি সহায়তা আইটেম (যেমন help server2client()এবং আরও অনেকগুলি) নিওভিমে এখনও বিদ্যমান, তবে এর কোনওটিই কাজ করে না। দেখে মনে হচ্ছে যে কেউ এই বৈশিষ্ট্যটি সরিয়ে নিয়েছে তিনি একটি দুর্দান্ত opালু কাজ করেছেন।
:terminal। এই তথ্য দেওয়া এটি আশ্চর্যজনকভাবে সহজ ছিল।
:help x11-clientserverএটি নিশ্চিত করে বলে মনে হচ্ছে: "ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ এক্স সার্ভারের মধ্য দিয়ে চলেছে [ একটি সার্ভারের নাম স্পষ্টতই "...