বাইরে থেকে ভিমে কথা বলছি


12

আমি কি অন্য শেল (টিএমউক্সের মাধ্যমে কী না পাঠিয়ে) থেকে ভিএম-এর উদাহরণে একটি পরিবর্তনশীল পরিবর্তন করতে পারি?

আমি জিজ্ঞাসা করছি কারণ আমি স্থিতরেখায় সংকলনের স্থিতি প্রদর্শন করতে ল্যাটেক্স্মকের সংকলন_সিএমডি, সাফল্য_সিএমডি এবং ব্যর্থতা_সিএমডি বিকল্পগুলি ব্যবহার করতে চাই।

সম্ভবত আমি কিছু ফাইলের অস্তিত্ব বা অস্তিত্বের জন্য ফাইল খুঁজে পেতে পারি (ফাইলগুলি বুলিয়ান ভেরিয়েবল হিসাবে ব্যবহার করে)? তবে এটি কিছুটা নোংরা বলে মনে হচ্ছে; আশা করি এর থেকে আরও ভাল উপায় আছে

উত্তর:


19

আপনি যদি যুক্তি দিয়ে আপনার প্রথম ভিম সেশনটি চালু করেন --servername VIM:

$ vim --servername VIM

তারপরে আপনি আর্গুমেন্টের সাহায্যে অন্য কোনও শেল থেকে কোনও আদেশ পাঠাতে পারেন --remote-send

উদাহরণস্বরূপ, যদি আপনি কিছু ভেরিয়েবলের মান প্রদর্শন করতে আপনার স্ট্যাটাসলাইন ব্যবহার করেন এবং আপনার ভিএমআরসি-তে g:myvarনিম্নলিখিত লাইনগুলি রয়েছে:

let g:myvar = "foo"
set stl+=%{g:myvar}

তারপরে আপনি :let g:myvar = "bar"অন্য শেল থেকে এর মান ( ) পরিবর্তন করতে পারবেন :

$ vim --remote-send ':let g:myvar = "bar"<cr>'

স্থিতিরেখার মান পরিবর্তন প্রতিবিম্বিত করা উচিত।


যেমনটি আপনার শেষ মন্তব্যটি বলেছে, আপনার ভিম উদাহরণটি যদি স্বাভাবিক মোডে না থাকে তবে পূর্ববর্তী কমান্ডটি প্রত্যাশার মতো কাজ করবে না। আরও সহজ হতে পারে তবে এখানে 2 টি সম্ভাব্য সমাধান রয়েছে:

1) <esc>সাধারণ মোডে থাকার কীটি যুক্ত করুন
2) কোনও অভিব্যক্তি মূল্যায়নের --remote-exprপরিবর্তে যুক্তিটি ব্যবহার করুন --remote-sendএবং একটি ছোট সহায়ক সহায়ক ফাংশন লিখুন যার কোডটি আপনার ভেরিয়েবলকে নতুন মান নির্ধারণ করবে

প্রথম সমাধান:

$ vim --remote-send '<esc>:let g:myvar = "bar"<cr>'

দ্বিতীয় সমাধান:

আপনার ভিএমআরসিতে নিম্নলিখিত ফাংশনটি সংজ্ঞায়িত করুন:

function! Myfunc(value)
    let g:myvar = a:value
endfunction

তারপরে, আপনার শেলটিতে:

$ vim --remote-expr 'Myfunc("bar")'

ধন্যবাদ! আমি দেখতে পাচ্ছি যে এই বৈশিষ্ট্যটি সংকলিত নেই, তাই আমি পুনরায় কম্পাইল করব। আশা করা যায় নিওভিমে এটি একই রকম।
টুথরট

3
@ লরেন্স আমি ভুল হতে পারি, তবে আমি মনে করি নিওভিম +clientserverবৈশিষ্ট্যটি প্রয়োগ করে না ( github.com/tpope/vim-dispatch/issues/163#issuecomment-175383047 )। যদি এটি হয় তবে সম্ভবত এই প্লাগইনটি আপনাকে সহায়তা করবে: github.com/mhinz/neovim-remote
user9433424

দেখে মনে হচ্ছে এটি টিএমউক্সের সাথে কীগুলি প্রেরণের মতো একই প্রভাব ফেলে এবং ভিম সার্ভারটি কোন মোডে রয়েছে তা জানার উপর নির্ভর করে (উদাহরণটি সাধারণ মোডটি ধরে নেয়)) আদর্শভাবে, আমি সরাসরি কোনও ভেরিয়েবল সেট করতে সক্ষম হতে চাই।
টুথরট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.