संपादित करें : मैंने अभी vim-textobject-latex प्लगइन खोजा है , जो आपके द्वारा ढूंढी जा रही सटीक कार्यक्षमता को जोड़ता है (कुछ अन्य चीजों के अलावा)। प्लगइन की README से:
वर्तमान में समर्थित टेक्स्ट ऑब्जेक्ट हैं:
a i Description
a\\ i\\ Inline math surrounded by ``\\(`` and ``\\)``.
a$ i$ Inline math surrounded by dollar signs.
aq iq Single-quoted text ``\`like this'``.
aQ iQ Double-quoted text ``\``like this''``.
ae ie Environment ``\begin{...}–\end{...}``
तो आप उपयोग कर सकते हैं caq
और जैसा आप चाहते थे। मैंने इसका परीक्षण किया, और यह विज्ञापित के रूप में काम करता है, लेकिन ध्यान दें कि यह vim-textobject-user प्लगइन पर निर्भर है । यह भी ध्यान दें कि आपको यह सुनिश्चित करना होगा कि textobject-user
प्लगइन पहले लोड हो , अन्यथा चीजें काम नहीं करेंगी।
यदि आप प्लगइन्स के साथ गड़बड़ नहीं करना चाहते हैं, हालांकि, मेरा मूल उत्तर उपयोगी है:
इन दो पंक्तियों को जोड़ने से आप जो चाहते हैं, उसमें से अधिकांश.vimrc
को कवर किया जाएगा ।
onoremap aq :<c-u>normal! F`vf'<cr>
onoremap iq :<c-u>normal! T`vt'<cr>
इन नए पाठ वस्तुओं (बनाने aq
और iq
) जो वापस पिछले करने के लिए जाना `
, दृश्य चयन मोड में प्रवेश, तो अगला को चुनें '
।
इस के लिए काम करेंगे ciq
, caq
, yiq
, और diq
। हालाँकि, yaq
और daq
बाहरी उद्धरणों को याँक / डिलीट नहीं करेगा, इसलिए मैंने a"
इसे संभालने के लिए एक और टेक्स्ट ऑब्जेक्ट बनाया , (जिसकी i"
आवश्यकता नहीं है, लेकिन मैंने चीजों को लगातार बनाए रखने के लिए जोड़ा:
onoremap a" :<c-u>normal! 2F`v2f'<cr>
onoremap i" :<c-u>normal! 2T`v2t'<cr>
प्रमुख नकारात्मक पक्ष यह है कि यह सामान्य टूट जाएगा है ca"
, आदि का उपयोग करें। यदि आप उनके साथ प्रस्तावना रखते हैं au FileType tex
, तो आपके पास केवल उस समस्या को .tex
फाइलों में रखना होगा , लेकिन यह अभी भी कभी-कभी एक झुंझलाहट हो सकती है। आप वस्तु को कुछ ऐसा भी नाम दे सकते हैं जैसे ad
/ id
('डी' 'डबल' उद्धरण के लिए), लेकिन वह मुझे कम सहज लगता था (मैं सामान्य ऑपरेशन से कम से कम अंतर के लिए लक्ष्य कर रहा था)।
जिस तरह से मैं सिर्फ दो पाठ वस्तुओं में लपेटने के बारे में सोच सकता हूं वह एक फ़ंक्शन लिखना होगा जो पहले सेट के बाहर किसी अन्य उद्धरण के लिए जांच करता है और aq
पाठ ऑब्जेक्ट्स को कॉल करने के लिए सेट करता है।
नोट : इन के साथ कुछ अन्य छोटे मुद्दे हैं:
- यांकिंग आपके कर्सर को अनपेक्षित स्थान पर छोड़ सकता है (इसे कमांड्स (जैसे
ma2F`v2f'<cr>`a
) में एक निशान जोड़कर तय किया जा सकता है , बस यह सुनिश्चित करें कि एक का उपयोग न करें जिसे आप अक्सर मैन्युअल रूप से उपयोग करते हैं)
- कर्सर को उद्धरण के अंदर होना चाहिए; अजीब बात है अगर यह उद्धरण पर है।
उन सभी को लपेटने के लिए, यह वही है जो मैं व्यक्तिगत रूप से .vimrc
इस मुद्दे के लिए जोड़ूंगा:
augroup filetype_latex
au!
au FileType tex,plaintex onoremap a' :<c-u>normal! muF`vf'<cr>`u
au FileType tex,plaintex onoremap i' :<c-u>normal! muT`vt'<cr>`u
au FileType tex,plaintex onoremap a" :<c-u>normal! mu2F`v2f'<cr>`u
au FileType tex,plaintex onoremap i" :<c-u>normal! mu2T`v2t'<cr>`u
end augroup
जैसा कि आप देख सकते हैं, मैंने सामान्य ca'
/ ya"
/ आदि कार्यक्षमता को तोड़ने का विकल्प चुना है, इसलिए मुझे उनके लिए नए कमांड सीखने की ज़रूरत नहीं होगी क्योंकि मैं सामान्य कार्यक्षमता का उपयोग नहीं करूँगा क्योंकि लाटेक्स वैसे भी। यह सिर्फ एक व्यक्तिगत प्राथमिकता है; ऑब्जेक्ट नामों को स्विच करना मुश्किल नहीं है। मैंने फ़िल्टाइप डिटेक्शन और मार्क्स में भी जोड़ा।
iq
, लेकिन उदाहरण के लिए, के साथ काम नहीं करता हैdaq
।