Vim - टिप्पणी चरित्र के साथ टिप्पणी लाइन के चारों ओर


27

आज मुझे एहसास हुआ कि मैं अक्सर अपने कोड में वर्गों को परिभाषित करना पसंद करता हूं:

####################
# Helper Functions #
####################

लेकिन ऐसा करना थकाऊ है। यह मानते हुए कि मेरे पास एक पंक्ति है:

# Helper Functions #

vimइसे में लपेटने के लिए कीस्ट्रोक्स का सबसे छोटा सेट क्या है #? इस चुनौती में शिफ्ट एक कीस्ट्रोक के रूप में नहीं गिना जाता है।

परीक्षण के मामलों:

Input: "#test test test#"
Output:
################
#test test test#
################

Input: "#this is a nice block comment#"
Output:
##############################
#this is a nice block comment#
##############################

Input: "# s p a c e s must be supported a l s o#"
Output:
########################################
# s p a c e s must be supported a l s o#
########################################

3
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि "vim keystrokes" मूल रूप से एक IDE की कमांड चलाने का अर्थ है, जैसे Ctrl - C, या Ctrl - R ST2 में। यह किसी भी रूप में कोडिंग नहीं है।
ऑप्टिमाइज़र

3
@ ऑप्टिमाइज़र विम एक ट्यूरिंग पूरी भाषा है (उदाहरण के लिए मैक्रोज़ का उपयोग करके) जिसमें कई अलग-अलग कंस्ट्रक्शन कोडिंग हैं और एडिटिंग के लिए प्राथमिक विधि एक क्रिया (क्रिया) एक ऑब्जेक्ट (मूवमेंट) पर आधारित है। विम गोल्फिंग के लिए पहले से ही एक लोकप्रिय वेब पेज है: www.vimgolf.com। (लेकिन मैं इस बात से सहमत हूं कि यह विशेष प्रश्न बहुत ही उबाऊ है)
हेजल

1
@ ओप्टिमाइज़र: क्या एक अधिक उपयुक्त एसई साइट है जिस पर सवाल उठाया जा सकता है? विम की व्यापक स्क्रिप्टिंग / मैक्रो भाषा को देखते हुए, कुछ लोग इसे अपने आप में एक भाषा मान सकते हैं।
shearn89

1
@ shearn89 शत्रुतापूर्ण? तुम्हारी किस बारे में बोलने की इच्छा थी ? PPCG यह साइट है।
ऑप्टिमाइज़र

2
यदि आप अपने मैक्रो सिस्टम में प्रोग्राम लिख सकते हैं तो अन्य IDE की अनुमति क्यों नहीं दी जाएगी? वह क्या है जो इसे "प्रोग्रामिंग नहीं" बनाता है?
हज़ुले

जवाबों:


40

11 8 7 कीस्ट्रोक्स

YpVkr#p

Yp - duplicate current line, leaving the cursor at the lower of the two
V - enter visual line mode
k - go up and select both lines
r# - replace every selected character with #. Leaves visual mode and leaves cursor at the upper line.
p - put the yanked line (the original) on the next line.

(याद दिलाने के लिए doorknob का धन्यवाद Y = yy)


3
एक चरित्र को बचाने के लिए के yyसाथ बदलें Y
दरवाज़े

2
वाह, यह rआदेश शक्तिशाली है
justhalf

10

16 15 14 कीस्ट्रोक्स

Yp
:s/./#/g
<cr>
YkP

सीधे-आगे का दृष्टिकोण: लाइन को डुप्लिकेट करें, सभी वर्णों को प्रतिस्थापित #करें, परिणाम की प्रतिलिपि बनाएँ और इसे ऊपर चिपकाएँ।

मैं गिनती कर रहा हूं Pऔर :प्रत्येक कीस्ट्रोके के रूप में (बजाय दो के लिए Shift+ pया Shift+ ;)। कहा जा रहा है, सवाल "कमांड" को गिनने के लिए निर्दिष्ट करता है, जहां मुझे यकीन नहीं है कि प्रतिस्थापन की गणना कैसे करें।


बदलें: @ rcrmn के जवाब के रूप में ही टिप्पणी yyके साथ Yएक चरित्र को बचाने के लिए।
दरवाज़े

मेरा मानना ​​है कि यह वास्तव में 14 कीस्ट्रोक्स है, क्योंकि आपको इंट्रो को हिट कमांड को निष्पादित करने के लिए
मारना होगा

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