निजी मोड में विम शुरू करने का सबसे सरल तरीका


19

मैं एक निजी मोड में विम को आसानी से शुरू करने में सक्षम होना चाहता हूं। चलिए एक निजी मोड को परिभाषित करते हैं जो कमांड के इस सेट का उपयोग करता है:

set history=0
set nobackup
set nomodeline
set noshelltemp
set noswapfile
set noundofile
set nowritebackup
set secure
set viminfo=""

मुझे बताएं कि क्या आप निजी मोड के लिए उपयुक्त किसी अतिरिक्त कमांड के बारे में सोच सकते हैं।

मुद्दा यह है कि इस सेटअप के साथ विम को शुरू करने के लिए मैं कोई छोटा और आसान तरीका नहीं सोच सकता।

यहाँ कुछ विचार दिए गए हैं:

  1. .Vimrc के बजाय .vimrcpStreet को लोड करें

    आप बस सभी आवश्यक आदेशों को .vimrcpStreet में डाल सकते हैं और विम को इस तरह शुरू कर सकते हैं:

    vim -u .vimrcprivate
    
  2. एक Private()फ़ंक्शन को परिभाषित और कॉल करें

    एक अन्य विचार अपने .vimrc पर इस तरह एक कोड जोड़ें:

    function Private()
        " set of commands here
    endfunction
    

    और फिर आप इस तरह एक निजी मोड में विम शुरू करने में सक्षम हैं:

     vim -c 'call Private()'
    
  3. अपने आदेशों की सेटिंग को ट्रिगर करने के लिए एक चर का उपयोग करें

    यह दूसरे समाधान के समान है। बस जोड़ दो

    if exists('privatemode')
        " set of commands here
    endif
    

    अपने .vimrc और फिर Vim का उपयोग करना शुरू करें

    vim -c 'let privatemode=1'
    

    जो न तो स्मार्ट है और न ही छोटा है।

  4. अपने .bashrc (या किसी अन्य के लिए एक उपनाम जोड़ें। * आर सी फ़ाइल अपने शेल का उपयोग कर रहा है)

    उदाहरण के लिए:

    alias vimprivate="vim +\"set history=0\" +\"set nobackup\" +\"set nomodeline\"\
        +\"set noshelltemp\" +\"set noswapfile\" +\"set noundofile\"\ 
        +\"set nowritebackup\" +\"set secure\" +\"set viminfo=\"\"\""
    

    जो भयानक है। मुझे यह पसंद नहीं है।

  5. एक पर्यावरण चर का उपयोग करें

    बस चलाते हैं VIM_PRIVATE=1 vimऔर जोड़ते हैं

    if $VIM_PRIVATE
        " set of commands here
    endif
    

    अपने .vimrc को।

  6. कुछ जादू ( इस धागे में कार्पेटस्मोकर की टिप्पणी से )

    कार्पेटस्मोकर इस टिप्पणी में कहते हैं कि

    मैं एक अलग vimrc फ़ाइल का उपयोग करने की अनुशंसा नहीं करूँगा, सरल कारण के लिए> कि इसे भूलना इतना आसान है। इस आटोक्मड की तरह कुछ: au BufRead * if &cryptmethod != "" | setlocal nobackup noundofile ... | endifआपके लिए जादू करना चाहिए, और इसे भूलना असंभव है।

    हालाँकि मुझे नहीं पता कि यह जादू कैसे काम करता है


क्या आपको कोई विचार आया है?

सही समाधान होगा vim -privateया vim +Privateफिर:

  • मुझे पूरा यकीन है कि आप जैसे कस्टम कमांड लाइन विकल्प नहीं जोड़ सकते हैं -private
  • जब यह आता है +Privateमैं इसे ऑनलाइन खोजने में असमर्थ था।

3
हो सकता है कि आप अपने vimrc के अंदर एक कस्टम कमांड को इस तरह परिभाषित कर सकें: command! Private set history=0 nobackup secure ...और फिर इसे शेल से कॉल करें vim +'Private'। आपके द्वारा बताए गए अंतिम ऑटोकॉमैंड के बारे में, जब एक बफर पढ़ा जाता है, तो यह परीक्षण करता है कि 'cryptmethod'विकल्प का मूल्य , या 'cm'लघु संस्करण के लिए, गैर खाली है। यह विकल्प बफर को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली एन्क्रिप्शन विधि को नियंत्रित करता है जब यह पूर्व कमांड वाली फ़ाइल में लिखा जाता है :X। यदि विकल्प खाली नहीं है, तो ऑटोकॉमैंड विभिन्न विकल्पों को सेट करता है।
सगिनॉ

5
मैं वोट देता हूं vim -Nu .vimrcprivate
रोमेनिल

3
4 और 1,2 या 3 के संयोजन के बारे में कैसे? alias vimprivate='vim -u .vimrcprivate'आदि
स्टीव

7
एक और तरीका है कि किसी दूसरे नाम जैसे vimp को सिमिलिंक करें, फिर टेस्ट करें v:progname == "vimp"और यदि सही है, तो अपनी निजी-मोड सेटिंग्स को निष्पादित करें। देखते हैं :help v:progname
गैरीजोन

@garyjohn। आपका समाधान वास्तव में अच्छा है! एक आकर्षण की तरह काम करता है :)
Mateusz Piotrowski

जवाबों:


10

ठीक है, थोड़ा बेलेंटेड लेकिन जवाब देने के लिए:

  1. कुछ जादू (इस धागे में कार्पेटस्मोकर की टिप्पणी से)

मेरा सामान्य विचार यह था कि आप हमेशा "निजी मोड" शुरू करना चाहते हैं यदि आप एक एन्क्रिप्टेड फ़ाइल का उपयोग कर रहे हैं, तो यह ऑटोकॉमैंड आपके साथ ऐसा करेगा:

au BufRead * if &key!= ""
    \ | setlocal history=0 nobackup nomodeline noshelltemp noswapfile noundofile nowritebackup secure viminfo=""
    \ | endif

मूल रूप से, हर बार डिस्क से एक फ़ाइल पढ़ी जाती है यदि यह keyसेटिंग सेट है (यह वह जगह है जहां आपका पासफ़्रेज़ संग्रहीत है), और यदि यह है, तो यह आपको सेटिंग्स सेट करता है। :help autocommandऑटोकॉमैंड कैसे काम करता है, इस पर एक सामान्य अवलोकन के लिए देखें ।

इसका फायदा यह है कि इसे इस्तेमाल करना नहीं भूल सकते।

बेशक, यह आवश्यक है कि फ़ाइल एन्क्रिप्ट की गई हो। यदि ऐसा नहीं है, तो कुछ भी नहीं किया जाता है। लेकिन सभी खो नहीं है, हम फ़ाइल नाम निजी है, उदाहरण के लिए, फ़ाइल नाम का उपयोग कर सकते हैं:

au BufRead *.private setlocal ...

.privateइस तरह से समाप्त होने वाली सभी फाइलों को चिह्नित करेगा ।

यदि आप फ़ाइलों को "निजी" मोड में बेतरतीब ढंग से खोलना चाहते हैं, तो मैं एक साधारण शेल उपनाम का उपयोग करने की सलाह दूंगा, उदाहरण के लिए:

alias vimprivate='vim -c "source ~/.vim/private"

और ~/.vim/privateशामिल होंगे:

setlocal history=0 nobackup nomodeline noshelltemp noswapfile noundofile nowritebackup secure viminfo=""

क्यों नहीं -u? खैर, इस तरह से आपकी अपनी सेटिंग्स और "निजी" सेटिंग्स हैं। आप दोनों को एक साथ जोड़ सकते हैं:

au BufRead * if &key!= "" | source ~/.vim/private | endif

1

विम डॉक्यूमेंटेशन ( :help -c) के अनुसार, केवल 10 ही अधिकतम हो सकते हैं +{command}, -c {command}और -S {file}विकल्प तर्क संयुक्त रूप से विम शुरू करते समय, और वे _after_ निष्पादित करते हैं पहली फ़ाइल पढ़ी जाती है।

--cmd {command}विकल्प एक अतिरिक्त 10 आदेशों किसी भी vimrc फ़ाइल प्रक्रिया से पहले निष्पादित किया जाना है, लेकिन ध्यान में रखना किसी भी सेटिंग vimrc द्वारा अधिरोहित जा सकता है कि अनुमति देता है।

इसलिए मैं विम विकल्पों को जल्दी सेट करना पसंद करता हूं, और पर्यावरण चर या स्क्रिप्टिंग तर्क की किसी भी आवश्यकता से बचता हूं। इसके अलावा, प्लगइन्स डोडी चीजें कर सकते हैं, इसलिए बेहतर है कि कोई भी लोड न करें।

सबसे सुरक्षित आह्वान विधि जिसे मैं सोच सकता हूं कि ~/.bashrcएक साधारण और एक-से-एक vimrcpStreet फ़ाइल के साथ उपनाम का उपयोग किया जा रहा है :

# Secure Vim
alias vimsec="vim -N -n -i NONE -u ~/.vimrcprivate"
alias gvimsec="g$(alias vimsec | sed -e "s/-u/-U/" -e "s/\(.*\)'\(.*\)'/\2/")"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.