मैं vim कमांड के तर्क के रूप में चर सामग्री का उपयोग कैसे करूं?


11

उदाहरण के लिए मान लीजिए मैंने किया

:let foo=pattern

और अब मैं शाब्दिक स्ट्रिंग के बजाय Ggrep patterचर का उपयोग करना चाहता हूं ।foopatter

:echo foo

आउटपुट pattern, लेकिन

:Ggrep foo

सिर्फ फू के लिए लग रहा है

अपडेट करें:

कमांड का एक तार बनाना और फिर दौड़ना: इस पर अमल करना कोई हल नहीं है, इसकी हैक है। और यह किसी भी गैर-तुच्छ परिवर्तनशील मूल्यों के साथ टूट जाता है।


क्या है Ggrep(कैपिटल जी?)
— अकीरा

git grep 'fugutive' vim plugin से
— विटाली

उदाहरण कमांड गलत है। इसे foo = 'pattern' होने देना चाहिए। यह कहें कि: निष्पादित एक हैक पूरी तरह से गलत है। यही समाधान है: आप इसे निष्पादित करने से पहले कमांड का मूल्यांकन करना चाहते हैं
— अल्बफैन

जवाबों:


2

यह वेरिएबल के बारे में नहीं है, लेकिन शायद vim संक्षिप्तीकरण कमांड मदद कर सकता है। कमांड लाइन से कोशिश करें:

:abbreviate foo pattern

फिर

:Ggrep foo<space>

यह आपके 'पैटर्न' को 'फू' पूरा करेगा।


अब दौड़ने की कोशिश करो echo foo। विरोध echo patternजो एक चर नहीं है। यह हैक और गुमराह करने वाला है।
— एल्बफैन

6

किस बारे में:

:execute ':grep ' . foo

मैं फू की सामग्री को ठीक से कैसे बचूँ? इसमें विशेष चरित्र जैसे ", ', /, \, आदि शामिल हो सकते हैं
— विटाली कुशनर

1
@Vitaly कुशनर: "देखें: मदद से बच ()" और ": मदद fnameescape ()"।
— garyjohn

मुझे पता है कि भागने (), लेकिन क्या पात्रों के बचने के बारे में निश्चित नहीं है
— विटाली कुशनर 13

fnameescape () अच्छा नहीं है, इसका फ़ाइल नाम तर्क नहीं है, यह प्लगइन फ़ंक्शन के लिए एक arg है। मान लीजिए मैं: foo = "aaa \" bbbb'cccc "
— विटाली

1
मैं इस पर भी अपने बाल खींच रहा हूं। आप let xyz = tabpagenr()तब जैसी कोई आदेश जारी नहीं कर सकते tabnext xyz। विम की स्क्रिप्टिंग भाषा उतनी ही त्रुटिपूर्ण है जितनी कि इसका मोडल वातावरण निर्दोष है।
— PUK

2

यदि आपको :exeसमाधान पसंद नहीं है , तो आप =अभिव्यक्ति रजिस्टर का उपयोग करके चर की सामग्री को कमांड लाइन में "पढ़" सकते हैं । उदाहरण के लिए, टाइप करें :Ggrepऔर उसके बाद Ctrl- rऔर फिर टाइप करें =fooऔर प्रेस Enter। foo"पैटर्न" वाले चर को मानते हुए , आपकी कमांड लाइन अब दिखनी चाहिए:

:Ggrep pattern

इसका लाभ यह है कि आप वास्तविक कमांड को देख सकते हैं, जिसे चलाया जाएगा, और Enterदूसरी बार दबाने से पहले इसे संशोधित भी कर सकते हैं ।

देख:

:help "=
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.