बाहर से विम की बात हो रही है


12

क्या मैं किसी अन्य शेल से विम के उदाहरण में एक चर को बदल सकता हूं (tmux के माध्यम से कुंजी भेजे बिना)?

मैं पूछता हूं क्योंकि मैं लेटेक्समेक के संकलन_ cmd, success_cmd और विफलता_cmd विकल्पों का उपयोग स्टेटसलाइन पर संकलन स्थिति दिखाने के लिए करना चाहूंगा।

शायद मैं कुछ फ़ाइलों के अस्तित्व या गैर-अस्तित्व की तलाश कर सकता था (बूलियन चर के रूप में फ़ाइलों का उपयोग करके)? लेकिन यह थोड़ा गंदा लगता है; उम्मीद है कि एक बेहतर तरीका है।

जवाबों:


19

यदि आप तर्क के साथ अपना पहला विम सत्र शुरू करते हैं --servername VIM:

$ vim --servername VIM

फिर आप किसी अन्य शेल से किसी भी कमांड को तर्क के साथ भेज सकते हैं --remote-send

उदाहरण के लिए, यदि आप कुछ वैरिएबल के मान को प्रदर्शित करने के लिए अपने स्टेटसलाइन का उपयोग करते हैं g:myvar, और आपके vimrc में निम्न लाइनें हैं:

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>'

दूसरा उपाय:

अपने vimrc में निम्नलिखित फ़ंक्शन को परिभाषित करें:

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

फिर, अपने खोल में:

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

धन्यवाद! मुझे लगता है कि यह सुविधा संकलित नहीं है, इसलिए मैं फिर से तैयार करूँगा। उम्मीद है कि नवगीत में भी ऐसा ही है।
टूथ्रोट

3
@ लॉरेंस मैं गलत हो सकता है, लेकिन मुझे लगता है कि neovim +clientserverफीचर ( github.com/tpope/vim-dispatch/issues/163#issuecomment-175383047 ) को लागू नहीं करता है । अगर ऐसा है, तो शायद यह प्लगइन आपकी मदद करेगा: github.com/mhinz/neovim-remote
user9433424

ऐसा लगता है कि यह tmux के साथ चाबियाँ भेजने के समान प्रभाव है, और यह जानने पर निर्भर करता है कि vim सर्वर किस मोड में है (उदाहरण सामान्य मोड मानता है)। आदर्श रूप से, मैं सीधे एक चर सेट करने में सक्षम होना चाहता हूं।
टूथोट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.