क्या मैं विम में पाठ को सही ठहरा सकता हूं?


38

एकमात्र कारण है कि मैं कभी भी पिको या नैनो में एक पाठ फ़ाइल को संपादित करूंगा, और विम में इसका "जस्टिफ़ाइ" कमांड नहीं था ^J। यह पाठ के एक पैराग्राफ को सुधार देगा, शब्द विराम पर लाइन ब्रेक बनाता है ताकि पाठ तय चौड़ाई स्क्रीन पर अच्छी तरह से तैर जाए - पाठ को पूर्वनिर्धारित 80 कॉलम में फिट करने के लिए, केवल शब्दों के बीच में लाइन ब्रेक का निर्माण करना। जैसा कि फ़ंक्शन सीमित था, यह बहुत उपयोगी था, चाहे लम्बी टिप्पणी ब्लॉकों, प्रलेखन फ़ाइलों को प्रारूपित करना हो, या बस पठनीय की अंतहीन रेखा को कुछ अधिक पठनीय के साथ बदलना।

क्या मैं विम में ऐसा कुछ कर सकता हूं?

जवाबों:


37

आप एक गति कमांड के साथ संयुक्त gqया gwऑपरेटरों का उपयोग कर सकते हैं । डिफ़ॉल्ट रूप से, यह fmtदिए गए पाठ को प्रारूपित करने के लिए प्रोग्राम (लिनक्स में) का उपयोग करता है । हालांकि, मेरे ज्ञान का सबसे अच्छा करने के लिए, यह लाइनों को सही नहीं ठहराता है, इसलिए आपको सही मार्जिन मिलेगा।

जिस तरह से मैं इसका उपयोग करता हूं वह gwipएक पैरा पर कर्सर के साथ (सामान्य मोड) है। यह कर्सर को उसी स्थिति में रखते हुए वर्तमान पैराग्राफ को प्रारूपित करेगा। मैं इसे इस तरह से उपयोग करता हूं कि यह सुनिश्चित करें कि केवल वर्तमान पैराग्राफ स्वरूपित है। पाठ फ़ाइल को संपादित करते समय, फ़ाइल gwGकी शुरुआत में (सामान्य मोड) जारी करके पूरे पाठ को प्रारूपित किया जाएगा। एक अच्छे अभ्यास के रूप में, पैराग्राफ के बीच कम से कम एक रिक्त रेखा को छोड़ना सुनिश्चित करें।

बहुत कुछ कॉन्फ़िगरेशन है जो किया जा सकता है। साथ शुरू करने के लिए, यहाँ कुछ प्रासंगिक सहायता कर रहे हैं: :h gq, :h gw, :h fo(प्रारूप विकल्प), :h fp(प्रारूप कार्यक्रम), :h fo-table(संभव विकल्पों पर स्पष्टीकरण)।


1
gq / gw निश्चित रूप से जाने का रास्ता है। इस संदेश में जोड़ने के लिए आप प्रारूप कार्यक्रम को बदलकर अधिक विकल्प रख सकते हैं। चेकआउट vimcasts.org/episodes/formatting-text-with-par
Bambu

3
डिफ़ॉल्ट रूप से, विम किसी भी बाहरी प्रोग्राम का उपयोग नहीं करता है, हालांकि आप 'formatprg'विकल्प सेट करके एक का उपयोग करना चुन सकते हैं ।
जामसेन

15

इस विषय पर एक महान विमकास्ट है।

http://vimcasts.org/episodes/formatting-text-with-par/

असल में, आपको स्थापित करने की आवश्यकता है par:

$ brew install par
# or
$ sudo apt-get install par

और फिर, जब से आप कॉलम को 80 कॉलम में लपेटना चाहते हैं:

:set formatprg=par\ -w80

अब आप gqअन्य उत्तरों (जैसे gqip) की तरह ऑपरेटर का उपयोग कर सकते हैं , और यह विम के बिल्ट-इन फॉर्मेटर के बजाय Par का उपयोग करेगा।

Par काफी उन्नत है, और यह इस तरह की टिप्पणियों को प्रारूपित करेगा:

/* This is a long */
/* multiline comment */

11

से :help usr_25:

JUSTIFYING TEXT                                                                 

Vim has no built-in way of justifying text.  However, there is a neat macro     
package that does the job.  To use this package, execute the following          
command:                                                                        

        :runtime macros/justify.vim                                             

This Vim script file defines a new visual command "_j".  To justify a block of  
text, highlight the text in Visual mode and then execute "_j".

तो, आपको बस इतना करना है

:ru macros/justify.vim

और फिर टाइप करें

_j

संपूर्ण फ़ाइल में पाठ को सही ठहराने के लिए।

(बेशक, आप ru macros/justify.vimअपने .vimrc में भी जोड़ सकते हैं ताकि आपको हर बार इसे टाइप न करना पड़े।)

नोट : यह आपके लिए लाइन ब्रेक नहीं जोड़ता है। आपको उन लोगों को मैन्युअल रूप से जोड़ना होगा gq। इसके लिए आपको textwidthअपने इच्छित मान के माध्यम से डिफ़ॉल्ट (0) को भी सेट करना होगा

set textwidth=80

और - यदि आप चाहते हैं-स्वत: पाठ के tमाध्यम से -flag सेटिंग द्वारा लपेटकर

set formatoptions+=t

यदि आप चाहते हैं, तो आप अपने .vimrc में एक मैपिंग सेट कर सकते हैं जो आपके लिए पूरी बात है:

nnoremap <C-j> gggqG_j

यह फ़ाइल की शुरुआत में चलता है ( gg), सभी लाइनों को लपेटता है ( gqतब तक G), और फिर _jपाठ को ustify करता है।


फ़ॉर्मेटिंग पर करीब से देखने के लिए, देखें: VIM USER MANUAL - संपादन स्वरूपित पाठ
Suuuehgi

मुझे :set fo+=aपूरे अनुच्छेद के स्वत: सुधार के लिए बहुत उपयोगी विकल्प मिला । :help fo-tableअन्य विकल्पों के लिए एक नज़र है । वहाँ भी एक अच्छा वीडियो ट्यूटोरियल है यहाँ
सूयूहेगी

पूरी तरह से निर्मित समाधान के लिए +1। _jमानचित्रण मैक्रो से जोड़ा मेरे लिए पूरी फ़ाइल का औचित्य साबित करने लगता है, या यह एक linewise दृश्य चयन के साथ सीमित किया जा सकता।
CHES

5

जबकि नैनो की मदद ^Jकमांड को "जस्टिफाई" कहती है, यह वास्तव में टेक्स्ट को सही नहीं ठहराता है, यह स्क्रीन के दाहिने मार्जिन से पहले लाइनों को तोड़ने वाले टेक्स्ट को रिफॉर्मेट करता है (या कुछ विन्यास योग्य कॉलम में, मुझे लगता है)।

आप चर सेट करके विम में एक ही बात कर सकते हैं textwidth, से :help 'textwidth':

पाठ की अधिकतम चौड़ाई जो डाली जा रही है। इस चौड़ाई को पाने के लिए सफेद स्थान के बाद लंबी लाइन को तोड़ा जाएगा। एक शून्य मान इसे निष्क्रिय करता है।

यह कहना है: जब आप टाइप कर रहे हैं, यदि कोई लाइन textwidthवर्णों से अधिक लंबी है , तो VIM लाइन की लंबाई कम या बराबर रखने के लिए पहले स्थान पर लाइन लपेटेगी textwidth

इस काम के लिए विकल्प formatoptionsमें अक्षर होना चाहिए t। देखें :help 'formatoptions'और :help fo-tableउपलब्ध विकल्पों के लिए, उदाहरण के लिए आप cटिप्पणियों के साथ स्वरूपण कार्य करने के विकल्प में रुचि ले सकते हैं ।

संपादित करें : यदि आप एक ही आपरेशन, डाल करने के लिए आवश्यकता के बिना प्रदर्शन कर सकते हैं tमें formatoptionsआदेश का उपयोग, gw{motion}है, यह वर्तमान कर्सर स्थिति और बाद कर्सर की स्थिति के बीच पाठ स्वरूपों {motion}gwआदेश दृश्य मोड में भी उपलब्ध है, यह चयनित लेख फ़ॉर्मेट।


1
यह टाइपिंग के लिए अच्छा है। क्या मैं पहले से मौजूद पाठ के लिए आवेदन कर सकता हूं?
एसएफ।

3

यहां दो आसान विकल्प दिए गए हैं:

  1. चयनित पाठ के ब्लॉक के साथ, टाइप करें !fmt
  2. ब्लॉक की शुरुआत में अपने कर्सर के साथ टाइप करें !}fmt

ये दोनों टेक्स्ट को यूनिक्स के लिए एक ब्लॉक भेजते fmtहैं man fmt, विकल्प देखें । आप विम से विकल्प तर्क पास कर सकते हैं। उदाहरण के लिए, किसी ब्लॉक को 50 वर्ण चौड़ा करने के लिए, टाइप करें !}fmt -w 50


इसके बारे में खेद है, अब ठीक किया गया
kaan

यदि आप परिणाम पसंद नहीं करते हैं, तो आप अपनी पूरी फ़ाइल :%!fmtको किसी एक के साथ टाइप करके और पूर्ववत करके भी प्रारूपित कर सकते हैं u
वाइल्डकार्ड

-1

दृश्य कमांड का उपयोग करके पाठ को चिह्नित करें और फिर उपयोग करें:

:!par 40j 

जहां 40 कॉलम की चौड़ाई है और jइसका मतलब है औचित्य।


2
हमारी साइट पर आपका स्वागत है! आपका प्रश्न वर्तमान में निम्न गुणवत्ता का है क्योंकि इसमें आपके द्वारा उपयोग किए जा रहे उपकरण ( par) और आपके समाधान के काम करने के बारे में स्पष्टीकरण का अभाव है । आप अपने उत्तर की गुणवत्ता में सुधार करने और भविष्य के पाठकों के लिए इसे अधिक उपयोगी बनाने के लिए अधिक विवरण जोड़ना चाह सकते हैं।
statox
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.