2011-10-05 9 views
7

तो यहां मेरी समस्याएं हैं।पायथन में लंबी लाइनों के लिए मैं विम के लाइन ब्रेकिंग व्यवहार को कैसे ठीक कर सकता हूं?

class SomeClass(object): 
    def some_method(self): 
    some_variable = SomeOtherClass.some_other_method(some_parameter=some_value) 

जब मैं विम में इस टाइप करें, ऐसा होता है:

class SomeClass(object): 
    def some_method(self): 
    some_variable = 
    SomeOtherClass.some_other_method(some_parameter=some_value) 

बस नहीं है कि मान लीजिए कि मैं एक अजगर फ़ाइल है और मैं, एक बहुत लंबी लाइन टाइप कर रहा हूँ पिछले एक यहाँ की तरह करते हैं खराब शैली, यह पीईपी 8 तोड़ती है। क्या मैं ऐसा करना चाहते हैं:

class SomeClass(object): 
    def some_method(self): 
    some_variable = SomeOtherClass.some_other_method(
     some_parameter=some_value) 

कौन सा PEP8 के अनुरूप है। (इस चर्चा के लिए, मैं केवल लाइन तोड़ने व्यवहार, नहीं खरोज व्यवहार में दिलचस्पी रखता हूँ।)

संपादित करें:breakat केवल linebreak साथ संयोजन के रूप में काम करता है कैसे लाइनों प्रदर्शित किए जाते हैं नियंत्रित करने के लिए। हार्ड ड्राइव ब्रेक डालने के लिए यह निर्धारित करने के लिए textwidth के साथ संयोजन (स्पष्ट रूप से) काम नहीं करता है। तो नीचे मेरा विचार काम नहीं करेगा ...

आश्चर्य की बात है, मुझे कुछ भी नहीं मिला है जो दूसरों को इस समस्या को साझा करने का संकेत देता है, जिससे मुझे लगता है कि मैं कुछ गलत कर रहा हूं। फिर भी, मेरा विचार ( वर्ण breakat सेटिंग ([ और { के साथ) में जोड़ने के लिए था, जबकि मैं उस पर था)।

मैंने यह कोशिश की है; यहाँ :set breakat के उत्पादन में है:

breakat= ^[email protected]*-+;:,./?([{ 

हालांकि, यह कोई लाभ नहीं हुआ है। कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, विम ऊपर "=" के बाद तोड़ने पर जोर देता है। मेरे पास लंबे फ़ंक्शन नामों के साथ भी यही समस्या है, जहां यह def के ठीक बाद टूट जाएगा।

यहाँ मेरी .vimrc की पूरी सामग्री हैं: (। मेरे पास कोई प्लग इन हो आदि इस पता लगाने की कोशिश के प्रयोजन के लिए स्थापित)

set nobackup 
set nowritebackup 
set noswapfile 
set columns=80 
set tabstop=4 
set shiftwidth=4 
set softtabstop=4 
set autoindent 
set smarttab 
set smartindent 
set textwidth=80 
set wrap 
set breakat=\ ^[email protected]*-+;:,./?\(\[\{ 
filetype indent on 
filetype on 
filetype plugin on 

है किसी को भी किसी भी विचार कैसे है मैं विम को इस ब्रेकैट सेटिंग, या इस व्यवहार से निपटने के सर्वोत्तम तरीके के बारे में किसी भी अन्य विचारों का पालन करने के लिए प्राप्त कर सकता हूं?

+0

मेरे उत्तर में pythonTidy के बारे में जोड़ा गया नोट। –

उत्तर

3

आप लाइनब्रेक सेट नहीं कर रहे हैं। इसके बिना, vim ब्रेकैट चर को अनदेखा करता है। विवरण के लिए here देखें, और बहुत से भलाई की भलाई। यह भी ध्यान रखें कि आपको नोलिस्ट सेट करने की आवश्यकता है क्योंकि यह लाइनब्रेक तोड़ता है।

शब्द रैपिंग here से निपटने वाला एक अन्य ब्लॉग पोस्ट। यह एक नोट करता है कि कुछ फ़ाइल प्रकार स्वचालित रूप से स्वरूप विकल्प "टी" ध्वज शामिल नहीं करते हैं। इसके बिना, ऑटो रैपिंग नहीं होती है।

मुझे लगता है कि करने के लिए सबसे आसान काम :%! pythonTidy चलाने के लिए मैपिंग में जोड़ना होगा। pythonTidy एक स्क्रिप्ट है, पायथन में, stdIn पर पायथन कोड लेने और stdOut के लिए एक सुंदर संस्करण आउटपुट। उस मानचित्रण के साथ, यह आपको इसे अपनी वर्तमान फ़ाइल पर चलाने की अनुमति देगा, और संपूर्ण सामग्री को सुधारित संस्करण के साथ प्रतिस्थापित करेगा। जब भी आप पाइथन फाइलों में सम्मिलित मोड से बाहर निकलें, इसे चलाने के लिए एक ऑटोोकॉन्ड जोड़ें, और आपको सेट किया जाना चाहिए।

+0

एचएम। इसे 'सेट लाइनब्रेक' और 'सेट नोलिस्ट' के साथ आज़माएं। यह मेरे लिए काम नहीं करता है।वास्तव में, मैंने ब्रेकैट से स्पेस चार को हटाने का भी प्रयास किया। इसने व्यवहार को नहीं बदला। जब मैं एक लंबी लाइन टाइप करने के बीच में हूं, तो विम बस अंतरिक्ष में एक नई लाइन तोड़ता है इससे कोई फर्क नहीं पड़ता कि मैं क्या करता हूं ... – jsdalton

+0

ठीक है, ठीक है, मुझे समस्या दिखाई देती है। 'लाइनब्रेक' और 'ब्रेकैट' केवल लाइनों को प्रदर्शित करने के तरीके को नियंत्रित करते हैं, जबकि 'टेक्स्टविड्थ' वास्तविक हार्ड लाइन ब्रेक लगाता है। यह वह व्यवहार है जो मैं चाहता हूं। ऐसा लगता है कि, हालांकि, टेक्स्टविड्थ "गूंगा" है और केवल व्हाइटस्पेस पर लाइन ब्रेक जोड़ता है। तो मुझे लगता है कि मुझे टेक्स्टविड्थ लाइन ब्रेक सम्मिलन व्यवहार को संशोधित करने का एक तरीका चाहिए? – jsdalton

+0

चूंकि उसने पीईपी 8 का उल्लेख किया है, मुझे लगता है कि वह कठिन लाइनब्रेक्स चाहता है, यानी 80 वर्णों से अधिक लाइनें नहीं। हालांकि, मैं नहीं बल्कि 100-चार लाइनों का उपयोग करें - 80 बहुत छोटा है, खासकर यदि आप कुछ हार्डकोडेड तार है - और आजकल लगभग कोई भी वास्तव में 80 वर्ण तक सीमित है टर्मिनल चौड़ाई – ThiefMaster

संबंधित मुद्दे

 संबंधित मुद्दे