मैं पाठ (500+ वर्ण) में बहुत लंबी लाइनों से कैसे निपटूं?


19

कुछ टेक्स्ट फॉर्मेट के लिए, लाइन ब्रेक मैटर।

उदाहरण के लिए, मैं अक्सर मीडियाविकि दस्तावेज लिखने के लिए विम का उपयोग करता हूं, जहां आप सिर्फ मार्कडाउन के विपरीत कहीं भी लाइनब्रेक नहीं लगा सकते हैं। इसलिए मैं बहुत सारे पात्रों के साथ लाइनें लिखने के लिए मजबूर हूं।

इससे लंबी (200+ चार्ट) या बहुत लंबी (1000+ चार्ट) लाइनें बन सकती हैं। मुझे विम में उपयोग करने के लिए यह बहुत अजीब लगता है। एक उदाहरण है कि अगर मैं 1000 वर्ण-रेखा के बीच में कुछ संपादित करना चाहता हूं, तो मुझे अपने कर्सर को 500 बार स्थानांतरित करने की आवश्यकता है।

यह wया के साथ थोड़ा तेज किया जा सकता है /, लेकिन यह अभी भी अजीब है।

क्या इससे निपटने के बेहतर तरीके हैं? बेहतर आंदोलन कुंजी? कुछ प्रकार के "नकली रैपिंग" (पाठ व्यवहार करता है जैसे कि tw=80, लेकिन \nफ़ाइल में नहीं ), या कुछ और?


1
आप स्क्रीन के अंत में रिक्त @ लाइनों से बचने के लिए प्रदर्शन = अंतिम पंक्ति भी सेट करना चाह सकते हैं।
रैंडम 832

जवाबों:


21

gदृश्यमान स्क्रीन क्षेत्र की सीमाओं पर जाने के लिए आप श्रंखला की श्रंखलाओं का उपयोग कर सकते हैं । उदाहरण के लिए, g$स्क्रीन के दाहिने किनारे पर ले जाता है (जो जरूरी नहीं कि पंक्ति का अंत है)। gjकर्सर को एक पंक्ति में नीचे ले जाता है क्योंकि यह आपकी स्क्रीन पर दिखाई देता है (जो जरूरी नहीं कि एक तार्किक रेखा से नीचे हो)।

शायद आप तीर कुंजी को रिवाइंड कर सकते हैं:

nnoremap <Up> gk
nnoremap <Down> gj

या कुछ लोग सीधे तौर पर विद्रोह भी करते हैं kऔर j:

nnoremap k gk
nnoremap j gj

सम्मिलित मोड के लिए, आप उपयोग कर सकते हैं:

inoremap <C-k> <C-o>gk
inoremap <C-j> <C-o>gj

या:

inoremap <Up> <C-o>gk
inoremap <Down> <C-o>gj

इसके अलावा, यदि आप उपयोग करते हैं :set wrap, तो विम लाइनों को लपेट देगा, ताकि आप सभी लाइन देख सकें। आप यह set showsbreak=+दिखाने के लिए भी उपयोग कर सकते हैं +कि विम रैपिंग कर रहा है।


विशिष्ट कॉलम पदों पर जाने के लिए, आप |कमांड का उपयोग कर सकते हैं । उदाहरण के लिए, 200|कॉलम 200 की स्थिति पर जाएगा।


1
... और g5jहमेशा की तरह 5 नीचे कूदने के लिए।
यो '

1
@yo 'मुझे लगता है कि आपका मतलब है5gj
मार्टिन टूरनोइज

1
@Carpetsmoker अजीब; अधिकांश आदेशों के साथ यह मायने नहीं रखता है कि आप उपसर्गों और संख्याओं को किस क्रम में देते हैं, जब तक कि कमांड स्वयं अंतिम न हो। यहाँ यह नहीं है: - /
यो '

@yo ', ठीक है, में g5j, g5पहले देखा जाता है, जो सिर्फ अगले करने के लिए कूदता 5आवेदन करने से पहले j। इसलिए यह वह नहीं कर सकता जो 5gjकरता है।
शाहबाज

3

विम को नरम रैपिंग के लिए समर्थन है, बस set wrapइसे सक्षम करने के लिए और यह दृश्य स्क्रीन से परे जाने वाली लंबी लाइनों को लपेट देगा। आप उपयोग कर सकते हैं gjऔर gkनीचे क्रमश: अधिक ऐसे लिपटे लाइनों ऊपर ले जाने के /।


2

जब मैं बहुत लंबी लाइनों के साथ काम कर रहा हूं, तो सबसे बड़ी दर्द बिंदु को अलग-अलग लाइन की लंबाई के साथ करना है। यही है, लाइनों के सिरों के पास ऊपर या नीचे जाना खिड़की को बहुत बाईं या दाईं ओर स्क्रॉल करता है।

यह सेटिंग से बचा जा सकता है virtualedit=all, जो आपको लाइन के अंत के लंबे समय बाद कर्सर को अंतरिक्ष में स्थानांतरित करने की अनुमति देता है।


1

जैसा कि दूसरों ने कहा है, आप gघूमने के लिए + कुछ का उपयोग कर सकते हैं । हालांकि, जब आपके पास बहुत लंबी लाइनें होती हैं, तो gjनीचे की ओर बढ़ने के लिए कई बार दबाव डालने से एर्गोनोमिक नहीं होता है। मेरे पास .vimrcइतना आसान बनाने के लिए निम्नलिखित है:

vmap <D-j> gj
vmap <D-k> gk
vmap <D-4> g$
vmap <D-6> g^
vmap <D-0> g^
nmap <D-j> gj
nmap <D-k> gk
nmap <D-4> g$
nmap <D-6> g^
nmap <D-0> g^

एक मैक पर, यह मुझे कमांड कुंजी दबाए रखकर प्रदर्शन लाइनों पर जम्मू, के, $, 0 और ^ का उपयोग करने की अनुमति देता है। अन्य प्रणालियों पर, Dआप के बजाय Mया AAlt के लिए, या Cनियंत्रण के लिए कोशिश कर सकते हैं ।

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