मैं विम स्क्रिप्ट के साथ एक स्ट्रिंग को कैसे रिवर्स कर सकता हूं


11

मैं एक स्ट्रिंग को उलटने की कोशिश कर रहा हूं, ताकि वह 'abc defg hij'बन जाए 'jih gfed cba'। मैं जिस समाधान के साथ आया हूं

join(reverse(split(l:text, '.\zs')), '')

क्या कोई और अधिक सुंदर समाधान है या मुझे जो कुछ भी मिला है उसके साथ रहना चाहिए?


1
यह निर्भर करता है कि आप "सुरुचिपूर्ण" से क्या मतलब है। यदि आप पूछ रहे हैं, तो स्ट्रिंग को उलटने के लिए कोई आंतरिक कार्य समर्पित नहीं है। यदि आप आंतरिक कार्यों के लिए दो या उससे कम कॉल करते हैं और कोई अतिरिक्त कथन नहीं है, तो यह संभव भी नहीं लगता।
सातो कट्सुरा

1
आपका वर्तमान समाधान पहले से ही सुरुचिपूर्ण और मुहावरेदार दोनों है ।
रोमेनैल

1
छोड़ दो '।' विभाजित भाग में।
क्रिश्चियन ब्रेबेंड

1
@SatoKatsura वास्तव में, मुझे लगता है कि यह अधिक कुशल है, क्योंकि regexp इंजन को कुछ भी मिलान करने की आवश्यकता नहीं है। इसके अलावा, यह प्रलेखन से पसंदीदा तरीका है।
क्रिश्चियन ब्रेबेंड

1
@ChristianBrabandt नियमावली के अनुसार, विकल्प के split()बिना {keepempty}शुरुआत में एक भी खाली वस्तु को हटाना चाहिए, और अंत में एक खाली वस्तु को। यह वर्तमान में सूची के मध्य वाले सभी खाली आइटमों को हटा देता है, (यदि आप मुझसे पूछें तो प्रलेखित व्यवहार की तुलना में अधिक उपयोगी है, लेकिन आप शायद नहीं हैं)। मुझे लगता है कि इस पर हाल ही में चर्चा हुई है vim_dev
सातो कैटसुरा

जवाबों:


10

आपका समाधान बहुत सुरुचिपूर्ण है! एक विकल्प यदि आप यूनिक्स आधारित एनवी में हैं:

!!rev

3

विकिया से

vnoremap <Leader>r c<C-O>:set revins<CR><C-R>"<Esc>:set norevins<CR>

अधिक देखने के लिए: :h revins


2

यदि आप vix में यूनिक्स जैसी प्रणाली का उपयोग कर रहे हैं, तो पूर्व कमांड टाइप करें :%! rev

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