विम में पायथन कोड के एक ब्लॉक पर टिप्पणी कैसे करें


186

मैं सोच रहा था कि क्या विम में कोई महत्वपूर्ण मैपिंग है जिससे मुझे कोड की कुछ पंक्तियों को इंडेंट करने की अनुमति मिल सके (चाहे वे लाइनें विजुअल मोड में चुनी गई हों, या वर्तमान कर्सर स्थिति के ऊपर / नीचे n लाइनें)।

तो मूल रूप से कुछ ऐसा है जो निम्नलिखित को रूपांतरित करता है

def my_fun(x, y):
    return x + y

सेवा

#def my_fun(x, y):
#    return x + y

मैं संबंधित पंक्तियों को #या तो उपयोग करने या """टिप्पणी करने के लिए ठीक हूं । आदर्श रूप में, मैं भी लाइनों को अनफिल्ट करने के लिए उसी की-मैपिंग को पसंद करूंगा, यदि दी गई लाइनों पर टिप्पणी की गई है।


पहिया को सुदृढ़ करने की कोई आवश्यकता नहीं है, एक प्लगइन है: आपके लिए tComment , जो कई भाषाओं के लिए (संयुक्त राष्ट्र) टिप्पणी कोड का समर्थन करता है।
मियो

जवाबों:


411

चरण 1: पहली पंक्ति के पहले कॉलम पर जाएं जिसे आप टिप्पणी करना चाहते हैं।

प्रारम्भिक अवस्था

चरण 2: प्रेस: Ctrl+ vऔर उन लाइनों का चयन करें जिन्हें आप टिप्पणी करना चाहते हैं:

लाइनों का चयन करें

चरण 3: Shift - I#space(डालें-डालें-बाईं ओर मोड, डालने के लिए वर्ण टाइप करें। चयन गायब हो जाएगा, लेकिन इसके भीतर की सभी पंक्तियाँ चरण 4 के बाद संशोधित हो जाएंगी)

टिप्पणी

चरण 4: Esc

<Esc>


4
लाइनों को इस तरह से टिप्पणी करना बहुत अच्छा काम करता है। क्या इन पंक्तियों को अनसुना करने का कोई तरीका है? Shift-I # <ESC>काम नहीं किया (शायद मैं इसे गलत कर रहा हूँ)।
ऋषभ मनोचा

41
@ ऋषभ-मनोचा: सभी जोड़े # का चयन करने के लिए दृश्य ब्लॉक (Ctrl-V) का उपयोग करें और उन्हें हटाने के लिए x टाइप करें।
द एप्स

3
आपको याद होगा कि Shift-I का अर्थ है "लाइन में पहले गैर-रिक्त स्थान पर डालें", इसलिए इसे हटाने के लिए उपयोग नहीं किया जा सकता है। Ctrl-V के साथ एक दृश्य चयन करने से पात्रों को संशोधित किया जाता है, फिर "x" चयनित क्षेत्र में एक वर्ण को हटाता है, जो '#' वर्णों को हटाता है। अधिक जानकारी के लिए ": h h I" और ": h CTRL-V" देखें।
द टिन मैन

5
@Samaursa Ctrl-V शायद विंडोज पर काम नहीं कर रहा है। इसके बजाय Ctrl-Q आज़माएं।
अज।

1
2 वर्णों को हटाने के लिए (यदि आपने '#' डाला है), उस शीर्ष रेखा पर कर्सर का पता लगाएं जिसे आप संशोधित करना चाहते हैं, दृश्य ब्लॉक मोड में प्रवेश करने के लिए ctrl-v दबाएं, संशोधित करने के लिए सभी लाइनों को उजागर करने के लिए j (या नीचे तीर) दबाएँ। l (या दायाँ तीर) एक 2-चार चौड़ाई (हाइलाइट करने के लिए प्रति बार एक बार दबाएं) को हाइलाइट करने के लिए, और फिर हाइलाइट किए गए टेक्स्ट को हटाने के लिए d दबाएं।
विचारशील

72

एक तरह से मैन्युअल

:set number
:10,12s/^/#

4
यद्यपि आप उन्हें कैसे निकालते हैं?
चार्ली पार्कर

15
:10,12s/^#//
@CharlieParker

1
पूर्व उत्तर के लिए अंगूठे (पुराने स्कूल :)
एमएलवी

यह इंडेंट कोड के लिए काम नहीं करता है
एंड्रेस पेरेज़-अल्बेला एच।

49

आप निम्नलिखित मैपिंग को अपने .vimrc में जोड़ सकते हैं

vnoremap <silent> # :s/^/#/<cr>:noh<cr>
vnoremap <silent> -# :s/^#//<cr>:noh<cr>

इसके साथ अपने ब्लॉक को हाइलाइट करें:

Shift+v

# पहले कॉलम से अपनी पंक्तियों को टिप्पणी करने के लिए।

-# उसी तरह असहज करना।


5
सरल शानदार है! धन्यवाद!
15

1
जब तक आप दृश्य मोड में नहीं होते हैं, तब @elicectonic का
cdated

1
मैंने थोड़ा सा बदलाव किया है: Ctrl + k टिप्पणी के लिए "vnoremap <sil> <Ck>: s # ^ # \ # ## <cr>: noh <cr>"> Ctrl + u असहजता के लिए: "vnoremap" चुप> <Cu >: s # ^ \ ### <cr>: noh <cr> "
प्रदीप दास

1
@JonathanHartley आपको इस मामले में '/' का उपयोग करने की आवश्यकता नहीं है '#' सीमांकक है। तो: s / ^ / # / और: s / ^ # // बराबर प्रतिस्थापन हैं। इसलिए लाइन की शुरुआत को '#' से बदलें और '#' को पहले कॉलम में '' से बदलें। <cr>: noh <cr> बस खोज स्ट्रिंग को साफ करता है ताकि आपके द्वारा किए जाने पर कुछ भी उजागर न हो।
16

1
@JonathanHartley ईमानदारी से मुझे लगता है कि मैंने इसके बारे में सोचे बिना सिर्फ एक पैटर्न का पालन किया। अब मुझे आश्चर्य है # जल्दी नहीं आया। सामान्य ज्ञान के आधार पर उत्तर को बदल दिया। धन्यवाद!
20

26

इसके साथ अपने ब्लॉक को हाइलाइट करें: ShiftV

चयनित ब्लॉक के साथ टिप्पणी करें: :norm i#(निचला मामला i)

अपने ब्लॉक को फिर से हाइलाइट करने के लिए, और इसके साथ असहज करें: :norm ^x

:normआदेश हर चयनित लाइन के लिए एक कार्य करता है। टिप्पणी करना #प्रत्येक पंक्ति के प्रारंभ में सम्मिलित होगा , और असहजता को हटा देगा #


एक अप-टू-डेट विम और एक सादे विन्यास के साथ, दृश्य मोड (साथ Shift+v) में लाइनों का चयन करना और फिर :norm i#केवल पहले चयनित लाइन को बदलना। यह मेरे लिए लाइनों 389 से 391 टिप्पणी करने के लिए काम करता है::389,391norm i #
एमएमएल

22

मैं आमतौर पर एक दृश्य ब्लॉक ( <C-V>) को मिटा देता हूं , फिर पहले वर्ण को खोजता हूं और उसे प्रतिस्थापित करता हूं :

:'<,'>s/^/#

(कमांड लाइन पर स्वचालित रूप से चुने गए विज़ुअल ब्लॉक के साथ कमांड मोड में प्रवेश करने पर) <, '> कमांड लाइन पर) मैं उसी विज़ुअल ब्लॉक को स्वीप करके ब्लॉक को अनइंस्टॉल कर सकता हूं और:

:'<,'>s/^#//


9

मेरी निम्न पंक्तियाँ हैं .vimrc:

" comment line, selection with Ctrl-N,Ctrl-N
au BufEnter *.py nnoremap  <C-N><C-N>    mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>`n
au BufEnter *.py inoremap  <C-N><C-N>    <C-O>mn<C-O>:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap  <C-N><C-N>    mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>gv`n

" uncomment line, selection with Ctrl-N,N
au BufEnter *.py nnoremap  <C-N>n     mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>:s/^#$//ge<CR>:noh<CR>`n
au BufEnter *.py inoremap  <C-N>n     <C-O>mn<C-O>:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR><C-O>:s/^#$//ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap  <C-N>n     mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>gv:s/#\n/\r/ge<CR>:noh<CR>gv`n

शॉर्टकट आपके कर्सर की स्थिति और आपकी टिप्पणियों को तब तक संरक्षित करते हैं जब तक वे शुरू होते हैं #(# के बाद स्थान है)। उदाहरण के लिए:

# variable x
x = 0

टिप्पणी करने के बाद:

# variable x
#x = 0

असहज होने के बाद:

# variable x
x = 0

अच्छा लगा, लेकिन मुझे लगता है कि आप सरल s/^/#/रीपेक्स का उपयोग करके बेहतर होंगे । मैं लाइन की शुरुआत में होने वाली टिप्पणी चार को पसंद करता हूं ... लेकिन इससे भी महत्वपूर्ण बात यह है कि 'टिप्पणी करना' वास्तव में महत्वपूर्ण है। मैं भी छोड़ देता हूँ au BufEnter *.py, क्योंकि #सामान्य रूप से सभी बफ़र्स में उपयोग किए जाने वाले आदेशों के लिए टिप्पणियां पर्याप्त हैं।
ट्रेक

5

सच कहूँ तो मैं उस लिंक के लिए एक tcomment प्लगइन का उपयोग करता हूं । यह लगभग हर सिंटैक्स को संभाल सकता है। यह अच्छी चाल को परिभाषित करता है, अजगर के लिए विशिष्ट कुछ टेक्स्ट ब्लॉक मैचर्स के साथ इसका उपयोग करना इसे एक शक्तिशाली उपकरण बनाता है।


5

NERDcommenter टिप्पणी करने के लिए एक उत्कृष्ट प्लगइन है जो स्वचालित रूप से कई फ़िलिप और उनके संबंधित टिप्पणी पात्रों का पता लगाता है। रोगज़नक़ का उपयोग करके स्थापित करने के लिए हास्यास्पद रूप से आसान है ।

के साथ टिप्पणी करें <leader>cc। के साथ असहजता <leader>cu। और टिप्पणियों के साथ टॉगल करें <leader>c<space>

( <leader>विम में डिफ़ॉल्ट कुंजी है \)


3

विम के लिए बहुत सारे टिप्पणी प्लगइन्स हैं - जिनमें से कई बहु-भाषा हैं - न कि केवल अजगर। यदि आप Vundle जैसे एक प्लगइन प्रबंधक का उपयोग करते हैं तो आप उन्हें खोज सकते हैं (एक बार जब आप Vundle स्थापित कर चुके हैं) उदाहरण के लिए:

:PluginSearch comment

और आपको परिणामों की एक विंडो मिलेगी। वैकल्पिक रूप से आप टिप्पणी प्लगइन्स के लिए विम-स्क्रिप्ट खोज सकते हैं ।


3

कोई प्लगइन्स या मैपिंग की आवश्यकता नहीं है। अंतर्निहित "मानदंड" कमांड का प्रयास करें, जो सचमुच आपके द्वारा चयनित पंक्ति पर कुछ भी निष्पादित करता है।

टिप्पणी करें

1. shift V to visually select lines
2. :norm i#

# टिप्पणियाँ निकालें

1. visually select region as before
2. :norm x

या यदि आपकी टिप्पणी इंडेंटेड है तो आप कर सकते हैं :norm ^x

ध्यान दें कि ये प्रत्येक लाइन पर उन्हें निष्पादित करने के लिए ": मानक" से पहले की जाने वाली साधारण vim कमांड हैं।

यहां दिए गए उत्तरों में से एक में "आदर्श" कमांड का उपयोग करने के लिए अधिक विस्तृत उत्तर

Vim में टिप्पणी / असहजता रेखाओं का त्वरित तरीका क्या है?


1

एक बहुत ही कम हल्के वजन प्लगइन : विम-कमेंट्री।

gcc
gcgcअसहज करने के लिए एक लाइन टिप्पणी करने के लिए। अधिक के लिए प्लगइन पृष्ठ देखें।

v+k/jब्लॉक को हाइलाइट करें फिर gccउस ब्लॉक पर टिप्पणी करें।


0

CtrlK टिप्पणी के लिए (विजुअल मोड):

vnoremap <silent> <C-k> :s#^#\##<cr>:noh<cr>

CtrlU असहजता (विजुअल मोड) के लिए:

vnoremap <silent> <C-u> :s#^\###<cr>:noh<cr>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.