Il modo più semplice per avviare Vim in modalità privata


19

Voglio essere in grado di avviare facilmente Vim in modalità privata. Definiamo una modalità privata come quella che utilizza questo set di comandi:

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

Fammi sapere se riesci a pensare a eventuali comandi aggiuntivi adatti alla modalità privata.

Il punto è che non riesco a pensare a un modo semplice e breve per avviare Vim con questa configurazione.

Ecco alcune idee che ho trovato:

  1. Carica .vimrcprivate invece di .vimrc

    Puoi semplicemente mettere tutti i comandi necessari in .vimrcprivate e avviare Vim in questo modo:

    vim -u .vimrcprivate
    
  2. Definire e chiamare una Private()funzione

    Un'altra idea aggiunge un codice come questo al tuo .vimrc:

    function Private()
        " set of commands here
    endfunction
    

    e quindi sei in grado di avviare Vim in una modalità privata come questa:

     vim -c 'call Private()'
    
  3. Utilizzare una variabile per attivare l'impostazione dei comandi

    È abbastanza simile alla seconda soluzione. Basta aggiungere

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

    sul tuo .vimrc e poi avvia Vim usando

    vim -c 'let privatemode=1'
    

    che non è né intelligente né breve.

  4. Aggiungi un alias al tuo .bashrc (o a qualsiasi altro file. * Rc utilizzato dalla tua shell)

    Per esempio:

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

    che è terribile. Non mi piace

  5. Usa una variabile ambientale

    Esegui VIM_PRIVATE=1 vime aggiungi

    if $VIM_PRIVATE
        " set of commands here
    endif
    

    al tuo .vimrc.

  6. Un po 'di magia (da un commento di Carpetsmoker in questa discussione )

    Carpetsmoker dice in questo commento che

    Non consiglierei di usare un file vimrc separato, per la semplice ragione> che è così facile da dimenticare. Qualcosa come questo autocmd: au BufRead * if &cryptmethod != "" | setlocal nobackup noundofile ... | endifdovrebbe fare la magia per te ed è impossibile dimenticarlo.

    Comunque ho idea di come questa magia funziona ancora .


Hai qualche idea?

La soluzione perfetta sarebbe vim -privateo vim +Privatecomunque:

  • Sono abbastanza sicuro che non puoi aggiungere le tue opzioni personalizzate come da riga di comando -private.
  • quando si tratta di +Privatenon sono riuscito a trovarlo online.

3
Forse potresti definire un comando personalizzato all'interno del tuo vimrc, in questo modo:, command! Private set history=0 nobackup secure ...e quindi chiamarlo dalla shell con vim +'Private'. Per quanto riguarda l'ultimo comando automatico menzionato, quando viene letto un buffer, verifica se il valore 'cryptmethod'dell'opzione, o 'cm'per la versione breve, non è vuoto. Questa opzione controlla il metodo di crittografia utilizzato per crittografare il buffer quando viene scritto in un file con il comando Ex :X. Se l'opzione non è vuota, il comando automatico imposta varie opzioni.
saginaw

5
Io voto per vim -Nu .vimrcprivate.
Romainl,

3
Che ne dici di una combinazione di 4 e 1,2 o 3? alias vimprivate='vim -u .vimrcprivate'ecc.
Steve

7
Un altro metodo è collegare simbolicamente Vim a un altro nome come VIMP, quindi testare v:progname == "vimp"e, se vero, eseguire le impostazioni della modalità privata. Vedere :help v:progname.
Garyjohn,

@garyjohn. La tua soluzione è davvero bella! Funziona come un fascino :)
Mateusz Piotrowski il

Risposte:


10

Bene, un po 'in ritardo, ma per rispondere a:

  1. Un po 'di magia (da un commento di Carpetsmoker in questa discussione)

La mia idea generale era che si desidera sempre avviare la "modalità privata" se si utilizza un file crittografato, quindi questo comando automatico lo farà per te:

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

Fondamentalmente, ogni volta che un file viene letto dal disco controlla se l' keyimpostazione è impostata (qui è dove è memorizzato il tuo passphrased), e se lo è, ti imposta le impostazioni. Per :help autocommanduna panoramica generale su come funzionano i autocomandi.

Il vantaggio è che non si può dimenticare di usarlo.

Naturalmente, richiede che il file sia crittografato. In caso contrario, non viene fatto nulla. Ma non tutto è perduto, possiamo usare un nome file per indicare che un file è privato, ad esempio:

au BufRead *.private setlocal ...

Contrassegnerebbe tutti i file che terminano con .privatecome tali.

Se si desidera aprire i file in modo casuale in modalità "privata", si consiglia di utilizzare un semplice alias di shell, ad esempio:

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

E ~/.vim/privateconterrebbe:

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

Perché no -u? Bene, in questo modo hai le tue impostazioni e le impostazioni "private". Puoi anche combinare i due con:

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

1

Secondo la documentazione Vim ( :help -c) non ci può essere solo un massimo di 10 +{command}, -c {command}e -S {file}gli argomenti delle opzioni combinato quando si inizia Vim, e loro esecuzione _after_ il primo file viene letto.

L' --cmd {command}opzione consente di eseguire altri 10 comandi prima di elaborare qualsiasi file vimrc, ma tieni presente che qualsiasi impostazione può essere sovrascritta da vimrc.

Pertanto preferisco impostare le opzioni di Vim in anticipo ed evitare qualsiasi necessità di variabile d'ambiente o logica di scripting. Inoltre, i plug-in potrebbero fare cose pericolose, quindi è meglio non caricarne nessuno.

Il metodo di invocazione più sicuro che mi viene in mente è usare gli alias ~/.bashrccon un file vimrcprivate semplice e puntuale:

# Secure Vim
alias vimsec="vim -N -n -i NONE -u ~/.vimrcprivate"
alias gvimsec="g$(alias vimsec | sed -e "s/-u/-U/" -e "s/\(.*\)'\(.*\)'/\2/")"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.