2012-03-07 12 views
10

में क्षैतिज रेखा vim में क्षैतिज रेखा क्या है? रिमोट फाइल को संपादित करते समय मैं वर्तमान लाइन में एक क्षैतिज रेखा देखता हूं।विम

http://i.stack.imgur.com/M8GXB.png

मैं जबकि स्थानीय फ़ाइलों

संपादन नहीं दिख रहा

संपादित करें: (: डब्ल्यू) जब तक मैं फ़ाइल को सहेजने cursorline नहीं दिखाया गया है। जब मैं टाइप करता हूं: w और पासवर्ड दर्ज करें, कर्सरलाइन दिखाई देती है। इसका ऐसा व्यवहार क्यों है? जब मैं दूरस्थ मशीन कर्सरलाइन में फ़ाइल संपादित करता हूं बंद कर दिया जाता है और दिखाया नहीं जाता है।

+0

क्या आप "एक दूरस्थ फ़ाइल संपादन" मतलब है:

आप नवीनतम संस्करण यहाँ मिल सकता है? एक एसएसएच सत्र में एक अलग मशीन पर vim शुरू करना? क्योंकि जाहिर है कि अन्य मशीन में शायद आपके से एक अलग विन्यास है। –

+0

@NiklasB। मेरा मतलब यह है कि यह आदेश मेरी मशीन पर चला रहा है: "vim scp: //example.com//path/to/script" – user16948

+0

तो यह एक अंतर है कि आप 'vim/local/file' या' vim scp: // रिमोट का उपयोग करते हैं या नहीं/file'? या आप vim के साथ gvim की तुलना कर रहे हैं? वह अजीब है। –

उत्तर

9

जैसा कि अन्य ने उत्तर दिया है, प्रभाव शायद cursorline option के कारण हो रहा है।

आप नीचे ट्रैक कर सकते हैं क्या है स्क्रिप्ट के तहत आदेश set optname? चलाकर एक विकल्प के लिए सबसे हाल ही में परिवर्तन किया verbose command:

:verbose set cursorline? 

आप शायद सिर्फ Netrw प्लगइन यह सेट है कि मिल जाएगा; नेट्रू स्थानीय निर्देशिका ब्राउज़िंग और दूरस्थ निर्देशिका/फ़ाइल एक्सेस को आपके scp:// उदाहरण की तरह संभालता है। Netrw अपने उद्देश्यों (उदा। निर्देशिका सूची) के लिए cursorline (और cursorcolumn) समायोजित करता है, लेकिन यह मान को "उपयोगकर्ता मान" में पुनर्स्थापित करने का प्रयास करता है। दुर्भाग्यवश, नेट्रू कोड लोड के हिस्से के दौरान "उपयोगकर्ता मान" का विचार कैप्चर किया जाता है और बाद में अपडेट नहीं किया जाता है।

मेरा अनुमान है कि, किसी भी तरह (किसी अन्य प्लगइन, या कॉन्फ़िगरेशन के बिट के माध्यम से), cursorline सेट किया जाता है जब नेट्रू लोड (और उसके मूल्य को कैप्चर करता है), लेकिन बाद में इसे पहली फ़ाइल संपादित करने के समय रीसेट कर दिया जाता है। फिर, जब आप फ़ाइल को बाद में सहेजते हैं (:w), नेट्रू "कब्जा" मान पुनर्स्थापित करता है। दुर्भाग्यवश, cursorline विकल्प के इस "कब्जे वाले" मान को अपडेट करने का कोई अच्छा तरीका प्रतीत नहीं होता है (स्क्रिप्ट वैरिएबल का उपयोग करने के लिए "बाहरी" पहुंच नहीं है, और यदि आप मैन्युअल रूप से फ़ाइल को पुनः लोड करते हैं तो यह "पुनः प्राप्त नहीं होता")।

हालांकि, आप क्या कर सकते हैं, स्पष्ट रूप से नेट्रू का थोड़ा भार लोड करता है जो 0 वांछित मूल्य cursorline जब आपका वांछित मान सक्रिय होता है।तुम कर सकते हो कि निम्न दो आदेशों के साथ-सुबह अपनी ~/.vimrc (संभवतः बहुत शीर्ष पर, यदि आवश्यक हो, यह पहली बार autoload/netrw.vim कभी इस्तेमाल किया जाएगा से पहले होने की जरूरत है):

set nocursorline 
runtime autoload/netrw.vim " will 'capture' cursorline and cursorcolumn values 

Netrw अभी भी सेट हो जाएगा/cursorline (और cursorcolumn) रीसेट करें, लेकिन जब तक आप सामान्य रूप से उस मान से मेल खाते हैं जो Netrw लोड होने से पहले सक्रिय है, तो आप इसे नोटिस नहीं करेंगे।

+0

कम से कम "दिखता है" कैप्चर किया गया, अच्छी तरह से, वास्तव में हार्ड-कोडित, मान है 'g: netrw_cursorline' में: http://code.google.com/p/vim/source/browse/runtime/autoload/netrw.vim?name=vim73#161, लेकिन सबसे वर्तमान संस्करण में, उस चर को बहिष्कृत किया गया है और 'netrw_usercul' के साथ प्रतिस्थापित किया गया। – SingleNegationElimination

+0

@TokenMacGuy: मैंने वर्णित" कैप्चर "चर हैं: netrw_usercul' और' s: netrw_usercuc'। उनके मान 'कर्सरलाइन 'और' कर्सर कॉलम 'विकल्पों के मानों से लिया जाता है जब' autoload/netrw.vim' लोड किया गया है (यानी हार्ड-कोडेड नहीं)। नेट्रू v140 (स्टॉक विम 7.3 के साथ भेज दिया गया) में एक बग है कि इन सत्र चर कभी नहीं बनाए जाते हैं यदि 'g: netrw_cursor लाइन' पूर्व परिभाषित है (यानी। आपके '~/.vimrc' में) - Netrw कार्यक्षमता के बाद के उपयोग" अपरिभाषित चर "त्रुटियों को उत्पन्न करेंगे (हालांकि ये त्रुटियां अधिकतर हानिकारक रूप से" स्क्रॉल "कर सकती हैं)। सटीक कामकाज उपयोग में संस्करण पर निर्भर करता है। –

4

यह cursorLine है। इसकी उपस्थिति को आपके रंगीन रंग में परिभाषित किया गया है। रिमोट मशीन पर एक शायद आपके से अलग है या आपके क्लाइंट/सर्वर के $TERM के बीच कोई मेल नहीं है।

2

हाँ, ": सेट cursorline" या ": nocursorline सेट" चालू या बंद लाइन चालू करने के लिए।

आदेश "vim SCP: // ...." प्रतियां अपने स्थानीय मशीन (यानी मशीन जहां "vim" प्रक्रिया चलाता है) पर रिमोट फ़ाइल है, तो आप के लिए "vim" में फ़ाइल को खोलता है संपादित करें, फिर, अगर आपने फ़ाइल को संशोधित किया है, तो फ़ाइल को रिमोट सिस्टम पर वापस कॉपी करता है। इस प्रकार, सिंटैक्स हाइलाइटिंग इत्यादि केवल आपकी स्थानीय मशीन पर "vim" द्वारा निर्धारित किया गया है।

मौजूदा वाक्यविन्यास हाइलाइटिंग योजना दिखाने के लिए समान वाक्यविन्यास प्रकार (": se syn" वाली फ़ाइलें) उसी तरह हाइलाइट की गई हैं। फाइलें, जिसमें आप अंतर देखते हैं, वही वाक्यविन्यास प्रकार है?

+0

कर्सरलाइन तब तक नहीं दिखाया जाता जब तक कि मैं फ़ाइल को सहेजता नहीं हूं (': w')। जब मैं 'w' टाइप करता हूं और पासवर्ड दर्ज करता हूं, तो _cursorline_ प्रकट होता है। इसका ऐसा व्यवहार क्यों है? जब मैं दूरस्थ मशीन कर्सरलाइन में फ़ाइल संपादित करता हूं – user16948

+0

पुन: बंद कर दिया जाता है। कर्सर लाइन को केवल ': w' के बाद देखकर: मुझे लगता है कि यह एक टर्मिनल रेंडर बग है, या तो विम/खोल/ओएस के उस विशेष संयोजन में, या आपके द्वारा उपयोग किए जाने वाले टर्मिनल प्रोग्राम में (पुटी, मैक ओएस " टर्मिनल ", आदि)। 'W' करने के बिना, क्या होता है यदि आप स्क्रीन को फिर से चलाने के लिए 'ctrl-l' करते हैं? क्या आप कर्सर लाइन देखते हैं? – aqn

+0

पुन। "दूरस्थ मशीन कर्सरलाइन में फ़ाइल संपादित करें बंद है": इसका क्या अर्थ है? क्या आपने रिमोट मशीन पर एसएसएच किया था और लॉग इन किया था, फिर 'vi file' जारी करें (जैसा कि आपकी स्थानीय मशीन पर' vim scp: // ... '' करने के लिए विरोध किया गया है)? यदि हां, तो आपकी 'कर्सरलाइन' निर्धारित होती है vi _on में फ़ाइल का सिंटैक्स कि मशीन_। उस विशेष वाक्यविन्यास के लिए 'कर्सरलाइन' के मान की जांच करने के लिए, 'कर्सरलाइन' करें। – aqn

5

मैं काफी वास्तव में सही मूल्य पर कब्जा करने के netrw मिल पाने के लिए सरल समाधान पता नहीं है, लेकिन बहुत कम से कम (मेरे लिए के बाद से, nocul सही है,) जोड़ने:

let g:netrw_cursorline=0 

अंत करने के लिए मेरे ~/.vimrc में से मेरे लिए समस्या ठीक हो गई है। उम्मीद है कि यह किसी की मदद करता है!

+0

मुझे समझ में नहीं आता कि मैंने अचानक यह समस्या क्यों शुरू कर दी और क्यों इसे ठीक किया – Ben

2

netrw.vim के संस्करण 142 ने कम से कम मेरे लिए यह बग तय किया है (vim 7.3, पुराना netrw.vim संस्करण 140 था, सिगविन के तहत चल रहा था)। http://www.vim.org/scripts/script.php?script_id=1075