Vim'i özel modda başlatmanın en basit yolu


19

Vim'i özel modda kolayca başlatabilmek istiyorum. Özel bir modu bu komut kümesini kullanan bir mod olarak tanımlayalım:

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

Özel moda uygun herhangi bir ek komut düşünebiliyorsanız bana bildirin.

Mesele şu ki, Vim'i bu kurulumla başlatmanın kısa ve kolay bir yolunu düşünemiyorum.

İşte size geldiğim bazı fikirler:

  1. .Vimrc yerine .vimrcprivate yükleyin

    Gerekli tüm komutları .vimrcprivate içine koyabilir ve Vim'i şu şekilde başlatabilirsiniz:

    vim -u .vimrcprivate
    
  2. Bir Private()işlevi tanımlama ve çağırma

    Başka bir fikir .vimrc'nize böyle bir kod ekleyin:

    function Private()
        " set of commands here
    endfunction
    

    ve sonra Vim'i böyle bir özel modda başlatabilirsiniz:

     vim -c 'call Private()'
    
  3. Komutlarınızın kurulumunu tetiklemek için bir değişken kullanın

    İkinci çözüme oldukça benzer. Sadece ekle

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

    ve ardından Vim'i kullanarak

    vim -c 'let privatemode=1'
    

    ne akıllı ne de kısa.

  4. .Bashrc (veya kabuğunuzun kullandığı başka herhangi bir. * Rc dosyasına) için bir takma ad ekleyin

    Örneğin:

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

    ki korkunç. Sevmiyorum.

  5. Çevresel bir değişken kullanın

    Sadece koş VIM_PRIVATE=1 vimve ekle

    if $VIM_PRIVATE
        " set of commands here
    endif
    

    .vimrc'nize.

  6. Bazı sihirli (tarafından bir yorumu da Carpetsmoker içinde bu iş parçacığı )

    Carpetsmoker diyor Bu yorumun o

    Ben ayrı bir vimrc dosyası kullanmanızı tavsiye etmem, basit bir nedenle> unutmak çok kolay. Bu autocmd gibi bir şey: au BufRead * if &cryptmethod != "" | setlocal nobackup noundofile ... | endifsihri sizin için yapmalı ve unutmak imkansız.

    Ancak bu büyünün nasıl çalıştığı hakkında henüz bir fikrim yok .


Herhangi bir fikrin var mı?

Mükemmel çözüm şu olabilir vim -privateveya vim +Private:

  • Size kendi özel komut satırı seçeneklerini ekleyemeyeceğinizden eminim -private.
  • söz konusu olduğunda +Privateçevrimiçi olarak bulamadım.

3
Belki de vimrc'inizde özel bir komut tanımlayabilirsiniz, şöyle: command! Private set history=0 nobackup secure ...ve sonra onu kabuktan çağırabilirsiniz vim +'Private'. Bahsettiğiniz son otomatik komuta ilişkin olarak, bir arabellek okunduğunda, 'cryptmethod'seçeneğin değerinin mi yoksa 'cm'kısa versiyonun boş olup olmadığını test eder . Bu seçenek, Ex komutuyla bir dosyaya yazıldığında arabelleği şifrelemek için kullanılan şifreleme yöntemini denetler :X. Seçenek boş değilse, otomatik komut çeşitli seçenekleri ayarlar.
saginaw

5
Oy veriyorum vim -Nu .vimrcprivate.
16'da romainl

3
4 ve 1,2 veya 3'ün bir kombinasyonuna ne dersiniz? alias vimprivate='vim -u .vimrcprivate'vb.
Steve

7
Başka bir yöntem, vim'i vimp gibi başka bir ada bağlamaktır, daha sonra test edin v:progname == "vimp"ve doğruysa özel mod ayarlarınızı yürütmektir. Bkz :help v:progname.
garyjohn

@garyjohn. Çözümünüz gerçekten güzel! Bir cazibe gibi çalışır :)
Mateusz Piotrowski

Yanıtlar:


10

Biraz gecikmiş ama cevap vermek için:

  1. Biraz büyü (bu konudaki Carpetsmoker tarafından yapılan bir yorumdan)

Genel fikrim, şifreli bir dosya kullanıyorsanız her zaman "özel mod" u başlatmak istediğinizdir, bu nedenle bu otomatik komut sizin için bunu yapar:

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

Temel olarak, bir dosya diskten her okunduğunda, keyayarın yapılıp yapılmadığını (parolanızın saklandığı yer) kontrol eder ve varsa ayarları yapar. Otomatik :help autocommandkomutların nasıl çalıştığı hakkında genel bir genel bakış için bkz .

Bunun avantajı, onu kullanmayı unutamamasıdır.

Tabii ki, dosyanın şifrelenmesini gerektirir. Eğer değilse, hiçbir şey yapılmaz. Ancak her şey kaybolmaz, bir dosyanın gizli olduğunu belirtmek için bir dosya adı kullanabiliriz, örneğin:

au BufRead *.private setlocal ...

İle biten tüm dosyaları bu şekilde işaretler .private.

Dosyaları "özel" modda rastgele açmak istiyorsanız, basit bir kabuk takma adı kullanmanızı öneririz, örneğin:

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

Ve ~/.vim/privateiçerir:

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

Neden olmasın -u? Bu şekilde kendi ayarlarınız ve "özel" ayarlarınız olur. İkisini aşağıdakilerle de birleştirebilirsiniz:

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

1

Vim belgelerine göre ( :help -c) sadece orada 10 uzunluğunda olabilir +{command}, -c {command}ve -S {file}Vim başlatırken seçenek argümanlar kombine ve ilk dosya okunur _after_ yürütün.

Bu --cmd {command}seçenek, herhangi bir vimrc dosyasını işlemeden önce ek 10 komutun yürütülmesine izin verir, ancak herhangi bir ayarın vimrc tarafından geçersiz kılınabileceğini unutmayın.

Bu nedenle Vim seçeneklerini erken ayarlamayı ve ortam değişkeni veya komut dosyası mantığına ihtiyaç duymamayı tercih ederim. Ayrıca, eklentiler tehlikeli şeyler yapıyor olabilir, bu yüzden herhangi bir şey yüklememek daha iyidir.

Aklıma gelen en güvenli çağırma yöntemi, takma adları ~/.bashrcbasit ve noktaya vimrcprivate dosyasıyla kullanmaktır:

# Secure Vim
alias vimsec="vim -N -n -i NONE -u ~/.vimrcprivate"
alias gvimsec="g$(alias vimsec | sed -e "s/-u/-U/" -e "s/\(.*\)'\(.*\)'/\2/")"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.