माचिस के रीगेक्स से सामान्य मोड कमांड लागू करें


10

मैं क्लोजर फ़ंक्शन परिभाषा के नीचे प्रलेखन स्ट्रिंग से मेल खाने के लिए निम्नलिखित नियमित अभिव्यक्ति का उपयोग कर रहा हूं:

\vdefn.*\n\s*\zs"([^"]|\n)*"

क्या gqदिए गए फ़ाइल में इस पैटर्न के सभी मैचों पर सामान्य मोड (प्रारूप लाइनें) कमांड चलाने का कोई तरीका है ?

जवाबों:


10

की शक्ति g:

:g/\vdefn.*\n\s*\zs"([^"]|\n)*"/normal gngq

/S के बीच का हिस्सा काफी स्व-व्याख्यात्मक है, क्योंकि यह आपके मूल प्रश्न से rexx है।

normal gngqअंत में कुछ दिलचस्प है। gnनियमित अभिव्यक्ति के अगले मैच का चयन करेंगे, और gqनिश्चित रूप से, इस चयन को प्रारूपित करता है (जैसा कि आपने अपने प्रश्न में उल्लेख किया है)।

:gवास्तव में महान हिस्सा है। यह, मेरी राय में, विम की सबसे उपयोगी विशेषताओं में से एक है। gपूर्व आदेश एक regex और एक पूर्व आदेश लेता है, और यह हर लाइन पर regex मैचों आदेश निष्पादित करता है। यदि आपने :gपहले से ही इसके बारे में नहीं सीखा है , तो मैं आपको ऐसा करने की सलाह देता हूं, क्योंकि यह आपकी उत्पादकता को बढ़ाएगा। Vim wiki पर कुछ संसाधन Vim के अपने :help :gया Power of g हैं


gnटुकड़ा लाइन जहां से चयन किया जाता है Vकरने के लिए शुरू हो रहा है अगले पैटर्न की घटना (एक ही लाइन पर नहीं एक)। विम के प्रलेखन में कहा गया है कि यदि दृश्य मोड सक्रिय है, तो चयन को अगले पैटर्न के माध्यम से वर्तमान लाइन से बढ़ाया जाता है। इससे अवांछित व्यवहार हो रहा है।

@merb वूप्स, यह एहसास नहीं था। संपादित।
डॉर्कनोब

चयन अभी भी मैच की रेखा से अगले मैच तक है। सामान्य मोड कमांड के माध्यम से कदम रखना मैन्युअल रूप से दिखाता है कि //s<cr>वर्तमान लाइन पर मैच की शुरुआत में //e<cr>मुझे छोड़ देता है , लेकिन मुझे अगले मैच के अंत में छोड़ देता है, वर्तमान मैच नहीं।

1
समस्या के साथ प्रतीत होता है //s<cr>V। जब मैं दौड़ता :normal Vहूं तो मैं उम्मीद के मुताबिक विजुअल लाइन मोड में चला जाता हूं। जब मैं उम्मीद के मुताबिक मैच :normal //s<cr>के पहले दिन अपना कर्सर लैंड करता हूं "। जब मैं दौड़ता :normal //s<cr>Vहूं तो मुझे दृश्य चयन नहीं मिलता है।

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