केंद्रित पाठ के साथ 80-कॉलम चौड़ा टिप्पणी हेडर ब्लॉक जोड़ना


9

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

################################################################################
#################################### LOAD ######################################
################################################################################

ये #बीच में केंद्रित शीर्षक वाली 3 80-कॉलम चौड़ी रेखाएं हैं । अब तक मुझे इनको उत्पन्न करने का कोई त्वरित तरीका नहीं मिला है।

आमतौर पर मैं क्या करता हूं 80i#और फिर yyppमुझे 3 लाइनें देने के लिए कुछ लाइनों के साथ है , लेकिन फिर मुझे बीच में नेविगेट करने और पाठ जोड़ने की आवश्यकता है। मैं आमतौर पर प्रतिस्थापित के साथ ऐसा करता हूं, लेकिन हेडर हेडर को अंदर नहीं करता है #... #इसलिए मैं #मैन्युअल रूप से अतिरिक्त को हटा देता हूं ।

मध्य पंक्ति में पाठ को कैसे केंद्र में रखा जाए? और इस परिणाम को प्राप्त करने का एक तेज़ तरीका क्या होगा?

जवाबों:


16

यहाँ थोड़ा और अधिक कुशल / आसान तरीका है। इसे टेक्स्ट की लाइन की शुरुआत में कर्सर से टाइप करें (यानी LOAD) जिसे आप केंद्र में रखना चाहते हैं।

  • :center 80<cr>: विम के फंक्शन में बनाए गए टेक्स्ट को केंद्र में रखें
  • hhv0r#: #बाईं ओर एस जोड़ें
  • A<space><esc>40A#<esc>: #सही पर खूब जोड़ो
  • d80|: #दाईं ओर अतिरिक्त s हटाएं
  • YppVr#kk.: ऐड ऊपर और नीचे #रों

तो, पूरा आदेश:

:center 80<cr>hhv0r#A<space><esc>40A#<esc>d80<bar>YppVr#kk.

सुविधाजनक मैपिंग जोड़ने के लिए आप अपने .vimrc में कुछ इस तरह से डाल सकते हैं:

nnoremap <C-b> :center 80<cr>hhv0r#A<space><esc>40A#<esc>d80<bar>YppVr#kk.

मिनी-स्क्रैंकेस्ट प्रदर्शन:

प्रदर्शन


3

सबसे पहले, आपको करने की आवश्यकता है :set expandtab

  1. 80i#Esc शीर्ष पंक्ति बनाने के लिए
  2. Yp इसकी नक़ल करना
  3. OSpaceLOADSpaceEsc
  4. :center 80( 80आपकी textwidthसेटिंग के आधार पर छोड़ा जा सकता है ।)
  5. hhv0r# बाईं ओर भरने के लिए (दृश्य चयन और बदलें का उपयोग करके)
  6. $hjlly$kp दाईं ओर भरने के लिए (नीचे पंक्ति से कुछ वर्णों की नकल करके)

3

मैं उस के लिए एक vimscript फ़ंक्शन का उपयोग करेगा।

function Header(width, word)
    let a:inserted_word = ' ' . a:word . ' '
    let a:word_width = strlen(a:inserted_word)
    let a:length_before = (a:width - a:word_width) / 2
    let a:hashes_before = repeat('#', a:length_before)
    let a:hashes_after = repeat('#', a:width - (a:word_width + a:length_before))
    let a:hash_line = repeat('#', a:width)
    let a:word_line = a:hashes_before . a:inserted_word . a:hashes_after

    :put =a:hash_line
    :put =a:word_line
    :put =a:hash_line
endfunction

और इसे कहा जा सकता है

: call Header(80, 'Hello')

1
धन्यवाद, यह एक बहुत अच्छा जवाब है। किसी भी संख्या में लाइनों के लिए काम करता है और यहां तक ​​कि आसानी से अन्य वर्ण (न केवल #) को शामिल करने के लिए संशोधित किया जा सकता है। शर्म करो मैं केवल 1 उत्थान दे सकता हूं और केवल एक ही उत्तर स्वीकार कर सकता हूं। इस बार मुझे उसी के साथ जाना था जिससे मैं अधिक परिचित हूं (और लेखन कार्य - मैं उससे परिचित नहीं हूं, लेकिन आपके लिए धन्यवाद मैं देखता हूं कि वे कैसे काम करते हैं)।
कारोलिस कोन्सेविअस

2

या आप दृश्य ब्लॉकों का उपयोग कर सकते हैं:

  1. सुनिश्चित करें कि आपके पास पहले से ही शीर्ष पर कम से कम तीन रिक्त लाइनें हैं, फिर CtrlV80L

  2. R#

  3. ब्लॉक के बीच में ले जाएँ (आप इस पर नज़र रखने वाले हैं)
  4. CtrlV और उस ब्लॉक का क्षेत्र चुनें जिसे आप हटाना चाहते हैं
  5. RSpace
  6. खाली स्थान की शुरुआत में जाएं, हिट करें Rऔर अपना हेडर टाइप करें।

दी, यह एक शीर्ष लेख बनाने का सबसे सही तरीका नहीं है, जैसा कि आपको इसे नेत्रगोलक करना है, लेकिन यह विज़ुअल चयन के लिए एक दिलचस्प मामला है।

परिणाम

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