सवाल sudoedit का उपयोग करते समय vim colorschemes सही दिखाई नहीं देते हैं


मैं एक अच्छा छोटा sysadmin बनने की कोशिश कर रहा हूं और सूडो विम, या सुडो -आई; विम के बजाय, सूडोइडिट का उपयोग कर रहा हूं, जब रूट स्वामित्व वाली फाइलों (पूर्व / आदि / प्रोफाइल) में परिवर्तन करते हैं, लेकिन मेरा विम कलरकेम प्रतीत नहीं होता है सुडोएडिट का उपयोग करते समय सही दिखाने के लिए।

रंगों का चयन सही ढंग से लोड हो रहा है, (रंग के माध्यम से चेक किया गया)। मैंने पुष्टि की है कि यह रूट के लिए रंगों को खींच नहीं रहा है, क्योंकि समस्या तब भी दिखाई देती है जब रूट से सूडोइडिट किया जाता है, रंग भिन्न होते हैं, भले ही यह एक ही योजना दिखाता हो।

का उपयोग करते हुए:

  • 12.04 एलटीएस
  • vim: 2: 7.3.429-2ubuntu2.1
  • सुडो: 1.8.3 पी 1-1ubuntu3.4

संपादन:

वीआईएम चलाया जा रहा है:

ubuntu@ip-10-0-0-104:~$ ps -f -u ubuntu
UID        PID  PPID  C STIME TTY          TIME CMD
ubuntu    4433  4345  0 19:18 ?        00:00:00 sshd: ubuntu@notty
ubuntu    6109  6021  0 20:47 ?        00:00:00 sshd: ubuntu@pts/0
ubuntu    6110  6109  0 20:47 pts/0    00:00:00 -bash
ubuntu    6233  6232  0 20:48 pts/0    00:00:00 /usr/bin/vim /var/tmp/profile.XXQiLoee
ubuntu    6322  6234  0 20:49 ?        00:00:00 sshd: ubuntu@pts/1
ubuntu    6323  6322  0 20:49 pts/1    00:00:00 -bash
ubuntu    6461  6323  0 20:50 pts/1    00:00:00 ps -f -u ubuntu

यहां एक उदाहरण दिया गया है जिसके बारे में मैं बात कर रहा हूं। (अन्य हिल्गलाइट्स भी काम नहीं करते हैं, लेकिन मुझे लगा कि एक तस्वीर पर्याप्त होगी)

vim vs sudoedit


1
2018-01-15 16:45


मूल


क्या यह काम करता है जब आप बस विम कहते हैं (sudo -i के बाद vim)? आपको रूट को रूट के रूप में पहले कॉन्फ़िगर करने की आवश्यकता है। विम के लिए रंग योजनाओं में / रूट होना चाहिए - Panther
हां, यही मेरा मतलब है कि मैंने रूट से चलने वाले सूडोएडिट की जांच की। मैंने रूट के लिए रंगीन रंग सेट किया है, और जब मैं रूट के रूप में vim चलाता हूं, तो रंग सही दिखाई देते हैं। जब मैं रूट के रूप में सूडोएडिट चलाता हूं, तो रंगीन रंग भरा होता है, लेकिन रंग सही नहीं होते हैं। - VTC
जब आप कॉल करते हैं तो यह काम करता है sudo vim ? - Panther
हाँ। प्रत्येक योजना के लिए रंग सूडोएडिट या सूडो-का उपयोग करते समय सही हैं। - VTC
यहां कुछ समाधान दिए गए हैं: serverfault.com/questions/203988/... । मेरा अनुमान है कि सुडोएडिट और सुडी- कॉलिनिव वी हैं और विम नहीं हैं। - Panther


जवाब:


आपके स्क्रीनशॉट में अंतर एक अलग का उपयोग कर विम के कारण है filetype दो फाइलों को संपादित करने के लिए। इसका कारण सबसे अस्थायी फ़ाइल का नाम है sudoedit संपादन करते समय बनाता है।

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

:set filetype?

विम में आप सेटिंग को भी संदर्भित कर सकते हैं ft छोटे के लिए। विम को स्थिति रेखा पर परिणाम दिखाना चाहिए, जैसे कि

  filetype=sh

विम की स्थापना के लिए वियूरिक्स की एक बड़ी लिपि है filetype स्वचालित रूप से फ़ाइल नाम, या कभी-कभी फ़ाइल सामग्री पर आधारित होता है। अगर फ़ाइल का नाम है /etc/profileउदाहरण के लिए, विम सेट करता है filetype सेवा मेरे sh खुद ब खुद।

जब आप उपयोग करते हैं sudoedit संपादित करने के लिए /etc/profile, एक अस्थायी फ़ाइल बनाई गई है, जैसा कि आपके में दिखाया गया है ps सूची। चूंकि इस फ़ाइल का नाम किसी भी विम के लिखित नियमों से मेल नहीं खाता है, इसलिए यह सेट करने का प्रयास करता है filetype सामग्री के आधार पर। स्क्रीनशॉट के आधार पर, मुझे लगता है कि विम ने सेट किया है filetype सेवा मेरे conf, जिसका मतलब एक सामान्य विन्यास फाइल है।

संभव समाधान

गाइड

इससे निपटने के कुछ तरीके हैं। सबसे पहले, आप सेट कर सकते हैं filetype मैन्युअल रूप से हर बार जब आप एक फ़ाइल संपादित करते हैं। जबरदस्ती करना sh इस्तेमाल करने के लिए वाक्यविन्यास, निष्पादित करें

:set filetype=sh

सिंटैक्स हाइलाइटिंग नियमों को फिर से लोड किया जाना चाहिए और तुरंत लागू किया जाना चाहिए।

सिंटेक्स संकेत

एक और तरीका उन फ़ाइलों की सामग्री में विम को संकेत देना है जिन्हें आप अक्सर एक विशेष रूप से संपादित करते हैं filetype सेट किया जाना चाहिए। उदाहरण के लिए, यदि फ़ाइल की पहली पंक्ति है #!/bin/sh, विम उचित वाक्यविन्यास का उपयोग करेगा चाहे फ़ाइल का नाम क्या है। ध्यान दें कि यह बनाता है /etc/profile निष्पादन योग्य शैल स्क्रिप्ट की तरह दिखें, भले ही यह नहीं है, इसलिए आप अपने सिस्टम पर ऐसा कुछ नहीं कर सकते हैं या नहीं।

विम मॉडलिन

एक तीसरा तरीका है कि विम को सेट करने के लिए मजबूर करना filetype विम का उपयोग करके परिवर्तनीय "मॉडल" कहते हैं। देख :help modeline अधिक जानकारी के लिए। इसमें आपकी फ़ाइल में एक टिप्पणी जोड़ना शामिल है जिसमें एक स्ट्रिंग है जो Vim आदेशों के लिए पार्स कर सकता है। के साथ अपने उदाहरण पर वापस /etc/profile, जैसे एक टिप्पणी जोड़ना

# vim: set filetype=sh

विम को सेट करने का निर्देश देगा filetype ठीक से जब फाइल को इसके नाम के बावजूद संपादित किया जाता है।


2
2018-05-14 18:08





यदि आपको कभी भी अलग-अलग उपयोगकर्ता आईडी के बीच अलग-अलग रंग व्यवहार मिलते हैं, तो हमेशा पहले "कौन सा v" टाइप करें और देखें कि आप पहले से क्या कर रहे हैं। और उसके बाद अपने। Vimrc को अगले मानते हुए यह मान लें। यदि नहीं, तो सुनिश्चित करें कि आपके पास यह आपके .bashrc में है

alias vi='vim'

0
2018-02-11 06:16