सेट पाठ्यपुस्तक के किनारे पर विम को एक पंक्ति प्रदर्शित करें


26

इन दिनों मैं जिन पाठ संपादकों और IDE का उपयोग करता हूं उनमें से अधिकांश में एक विशेषता है जहां वे पाठ बफर में एक निश्चित चरित्र की लंबाई पर एक पंक्ति प्रदर्शित कर सकते हैं। यह उपयोगी है जब आप एक निश्चित लंबाई के तहत एक फ़ाइल में लाइनें रखना चाहते हैं।

क्या कोई तरीका है विम को ऐसा करने के लिए, अधिमानतः पहले से परिभाषित textwidthमूल्य का उपयोग करते हुए ? लाइनें स्वचालित रूप से उस बिंदु पर लपेटेंगी, लेकिन मैं वास्तव में यह देखना चाहूंगा कि यह कहां है।

अगर यह मायने रखता है, तो मैं मुख्य रूप से विंडोज पर जीवीएम का उपयोग कर रहा हूं, लेकिन अगर यह समाधान विम संस्करणों में काम करता है तो मुझे अच्छा लगेगा।

जवाबों:


41

(छ) विम के लिए, निम्नलिखित का उपयोग करें:

set colorcolumn=80

या जो भी चौड़ाई आप चाहते हैं। Vim और gvim दोनों में काम करता है। मेरे पास एक IF के भीतर है, इसलिए यह सशर्त है कि मैं किस प्रकार की फ़ाइलों को संपादित करता हूं।

आप स्तंभ के आधार स्थान के लिए + + / से- और पाठ्य-क्रम के लिए x / -x का भी उपयोग कर सकते हैं।

set textwidth=80
set colorcolumn=-2

प्रभावी चार वर्ण स्थिति में रंगीन पट्टी आकर्षित करेगा। बेशक, आप पाठ्यपुस्तक को स्वयं सेट नहीं कर सकते हैं, इसलिए यह 0 (डिफ़ॉल्ट) हो सकता है। मैं पूर्ण स्थिति प्रपत्र का उपयोग करता हूं।

यदि आप चाहें तो उपयोग किए गए रंग को भी बदल सकते हैं:

highlight ColorColumn ctermbg=green guibg=orange

(हालांकि मैं इन रंगों की सिफारिश नहीं करता हूं)

यह विकल्प (g) vim 7.3 में जोड़ा गया था।


विम किस संस्करण में समर्थित है? यह मेरे लिए gvim 7.2 में काम नहीं कर रहा है।
हर्म्स

मैं 7.3 चला रहा हूं। मैंने सिर्फ स्रोत कोड खींचा और देखा, यह कमांड 7.3 में पेश किया गया था।
lornix

मेरे लिए Ubuntu 12.04 पर vim 7.3 के साथ काम करता है। विंडोज़ के लिए gvim 7.3 2010 के कम से कम अक्टूबर से उपलब्ध है। @ क्या आप इसका उत्तर दे सकते हैं?
poindexter

यह अच्छा होगा अगर यह कई खिड़कियों के किनारे-किनारे का उपयोग करते समय काम करता है। मेरी निगरानी एक पंक्ति में कई विंडो दिखाने के लिए पर्याप्त है, हर एक> 80 वर्ण लेकिन colorColumn केवल पहली (सबसे बाईं ओर) विंडो पर काम करता है।
Eno

3

Google कोड पर एक स्निपेट है जिसे आप आज़मा सकते हैं:

augroup vimrc_autocmds
au!
    autocmd BufRead * highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
    autocmd BufRead * match OverLength /\%81v.*/
augroup END

हम्म, उस धागे से पता चलता है कि विंडोज़ की gvim पहले से ही इसका समर्थन करती है, लेकिन मैं यह पता नहीं लगा सकता कि इसे कैसे चालू किया जाए।
हर्म्स

थ्रेड में अपनी gvimrc फ़ाइल फ़ॉथर को जोड़ने के लिए कुछ कोड है।
ईबीग्रीन

ऐसा लगता है कि बस वर्णों के लिए पृष्ठभूमि को बदल देता है जो उस रेखा से परे जाते हैं। मैं अन्य संपादकों की तरह हमेशा एक दृश्यमान मार्गदर्शिका रखता हूँ।
हर्म्स

गुई की प्रकृति के कारण मैं सकारात्मक नहीं हूं जो वर्तमान में संभव है।
ईबीग्रीन

यह प्रश्न में अनुरोध की तरह पाठ्यपुस्तक के अनुकूल नहीं है।
स्टीवन रूज

2

प्रति StackOverflow उत्तर :

highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.*/

अपने स्वाद के अनुरूप समायोजित करें।


हम्म, नहीं काफी है कि मैं क्या (जब वर्ण लाइन अतीत जाना ही प्रदर्शित करता है) के लिए देख रहा हूँ, लेकिन यह कुछ नहीं से बेहतर है।
हर्म्स

यह प्रश्न में अनुरोध की तरह पाठ्यपुस्तक के अनुकूल नहीं है।
स्टीवन रूज

1

मुझे लोरनिक्स पसंद है, लेकिन मैं हर समय कॉलम को हाइलाइट करना नहीं चाहता , केवल तभी जब कम से कम एक लाइन लंबाई से अधिक हो:

कॉलम दिखा रहा है जब लाइनें बहुत लंबी हैं

यहाँ मैं इसे अपनी हास्केल फ़ाइलों के लिए कैसे करूँ:

augroup HaskellCommands
autocmd!
  " When a Haskell file is read or the text changes in normal or insert mode,
  " draw a column marking the maximum line length if a line exceeds this length
  autocmd BufRead,TextChanged,TextChangedI *.hs call ShowColumnIfLineTooLong(80)
augroup END

" Color the column marking the lengthLimit when the longest line in the file
" exceeds the lengthLimit
function! ShowColumnIfLineTooLong(lengthLimit)
  " See /programming/2075276/longest-line-in-vim#2982789
  let maxLineLength = max(map(getline(1,'$'), 'len(v:val)'))

  if maxLineLength > a:lengthLimit
    highlight ColorColumn ctermbg=red guibg=red
    " Draw the vertical line at the first letter that exceeds the limit
    execute "set colorcolumn=" . (a:lengthLimit + 1)
  else
    set colorcolumn=""
  endif
endfunction

0

यह अक्सर #vim, और कुछ मंचों पर चर्चा की गई थी। जहां तक ​​चीजें अब तक खड़ी हैं, यह संभव नहीं है। तो उल्लिखित समाधान आपका एकमात्र विकल्प है, afaik।

बात यह है कि, विम उन स्थानों के साथ कुछ भी कर सकते हैं जहां चरित्र हैं (उन्हें अक्षर, संख्या या सिर्फ सादे व्हाट्सएप)। लेकिन यह एक अलग रंग में पृष्ठभूमि को चित्रित नहीं कर सकता (जैसे आप चाहें), अगर वहां कुछ भी नहीं है। और इससे पहले कि आप कुछ लिखें, वहाँ कुछ भी नहीं है, इसलिए यह एक रेखा / मार्जिन नहीं खींच सकता है।

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