Cara paling sederhana untuk memulai Vim dalam mode privat

19

Saya ingin dapat dengan mudah memulai Vim dalam mode pribadi. Mari kita mendefinisikan mode pribadi sebagai yang menggunakan serangkaian perintah ini:

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

Beri tahu saya jika Anda dapat memikirkan perintah tambahan yang cocok untuk mode pribadi.

Intinya adalah saya tidak bisa memikirkan cara pendek dan mudah untuk memulai Vim dengan pengaturan ini.

Berikut adalah beberapa ide yang saya buat:

  1. Muat .vimrcprivate alih-alih .vimrc

    Anda cukup memasukkan semua perintah yang diperlukan ke .vimrcprivate dan mulai Vim seperti ini:

    vim -u .vimrcprivate
    
  2. Tentukan dan panggil Private()fungsi

    Gagasan lain menambahkan kode seperti ini ke .vimrc Anda:

    function Private()
        " set of commands here
    endfunction
    

    dan kemudian Anda dapat memulai Vim dalam mode pribadi seperti ini:

     vim -c 'call Private()'
    
  3. Gunakan variabel untuk memicu pengaturan perintah Anda

    Ini sangat mirip dengan solusi kedua. Cukup tambahkan

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

    ke .vimrc Anda dan kemudian mulai Vim menggunakan

    vim -c 'let privatemode=1'
    

    yang tidak pintar atau pendek.

  4. Tambahkan alias ke .bashrc Anda (atau ke file lain. * Rc yang digunakan shell Anda)

    Sebagai contoh:

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

    yang mengerikan. Saya tidak suka itu.

  5. Gunakan variabel lingkungan

    Jalankan VIM_PRIVATE=1 vimdan tambahkan

    if $VIM_PRIVATE
        " set of commands here
    endif
    

    ke .vimrc Anda.

  6. Beberapa sulap (dari komentar oleh Carpetsmoker di utas ini )

    Carpetsmoker mengatakan dalam komentar ini itu

    Saya tidak akan merekomendasikan menggunakan file vimrc terpisah, karena alasan sederhana> itu sangat mudah untuk dilupakan. Sesuatu seperti autocmd ini: au BufRead * if &cryptmethod != "" | setlocal nobackup noundofile ... | endifharus melakukan keajaiban untuk Anda, dan tidak mungkin untuk dilupakan.

    Namun saya punya tidak tahu bagaimana ajaib ini bekerja belum .


Apakah Anda punya ide?

Solusi sempurna akan vim -privateatau vim +Privatebagaimanapun:

  • Saya cukup yakin Anda tidak dapat menambahkan Anda seperti opsi baris perintah kustom -private.
  • ketika datang ke +Privatesaya tidak dapat menemukannya online.
Mateusz Piotrowski
sumber
3
Mungkin Anda bisa mendefinisikan perintah khusus di dalam vimrc Anda, seperti ini:, command! Private set history=0 nobackup secure ...dan kemudian memanggilnya dari shell with vim +'Private'. Mengenai perintah otomatis terakhir yang Anda sebutkan, ketika buffer dibaca, itu menguji apakah nilai 'cryptmethod'opsi, atau 'cm'untuk versi pendek, tidak kosong. Opsi ini mengontrol metode enkripsi yang digunakan untuk mengenkripsi buffer ketika ditulis ke file dengan perintah Ex :X. Jika opsi ini tidak kosong, maka perintah otomatis mengatur berbagai opsi.
Saginaw
5
Saya memilih vim -Nu .vimrcprivate.
romainl
3
Bagaimana dengan kombinasi 4 dan 1,2 atau 3? alias vimprivate='vim -u .vimrcprivate'dll
Steve
7
Metode lain adalah dengan symlink vim ke nama lain seperti vimp, kemudian uji v:progname == "vimp"dan jika benar, jalankan pengaturan mode pribadi Anda. Lihat :help v:progname.
garyjohn
@garyjohn. Solusi Anda sangat bagus! Bekerja seperti pesona :)
Mateusz Piotrowski

Jawaban:

10

Yah, sedikit terlambat tetapi untuk menanggapi:

  1. Beberapa sulap (dari komentar oleh Carpetsmoker di utas ini)

Gagasan umum saya adalah bahwa Anda selalu ingin memulai "mode pribadi" jika Anda menggunakan file yang dienkripsi, sehingga perintah otomatis ini akan melakukannya untuk Anda:

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

Pada dasarnya, setiap kali sebuah file dibaca dari disk, ia mengecek apakah keypengaturannya diatur (ini adalah tempat frasa sandi Anda disimpan), dan jika itu ada, ia menetapkan Anda pengaturan. Lihat :help autocommandikhtisar umum tentang cara kerja perintah otomatis.

Keuntungannya adalah tidak bisa lupa menggunakannya.

Tentu saja, itu mengharuskan file dienkripsi. Jika tidak, tidak ada yang dilakukan. Tetapi tidak semua hilang, kita dapat menggunakan nama file untuk menunjukkan file itu pribadi, misalnya:

au BufRead *.private setlocal ...

Akan menandai semua file yang diakhiri dengan .privatedemikian.

Jika Anda ingin membuka file secara acak dalam mode "pribadi", maka saya akan merekomendasikan menggunakan alias shell sederhana, misalnya:

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

Dan ~/.vim/privateakan mengandung:

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

Mengapa tidak -u? Nah, dengan cara ini Anda memiliki pengaturan Anda sendiri dan pengaturan "pribadi". Anda juga dapat menggabungkan keduanya dengan:

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

Menurut dokumentasi Vim ( :help -c) hanya ada maksimum 10 +{command}, -c {command}dan -S {file}argumen opsi digabungkan ketika memulai Vim, dan mereka mengeksekusi _after_ file pertama dibaca.

The --cmd {command}pilihan memungkinkan tambahan 10 perintah untuk dieksekusi sebelum memproses file vimrc, tapi ingat bahwa pengaturan dapat ditimpa oleh vimrc.

Oleh karena itu saya lebih suka mengatur opsi Vim lebih awal, dan menghindari kebutuhan untuk variabel lingkungan atau logika skrip. Juga, plugin mungkin melakukan hal-hal yang cerdik sehingga lebih baik tidak memuat apa pun.

Metode doa paling aman yang bisa saya pikirkan adalah menggunakan alias ~/.bashrcdengan file vimrcprivate yang sederhana dan to-the-point:

# Secure Vim
alias vimsec="vim -N -n -i NONE -u ~/.vimrcprivate"
alias gvimsec="g$(alias vimsec | sed -e "s/-u/-U/" -e "s/\(.*\)'\(.*\)'/\2/")"
mvanle
sumber