Vimをプライベートモードで起動する最も簡単な方法


19

プライベートモードでVimを簡単に起動できるようにしたい。このコマンドセットを利用するものとしてプライベートモードを定義しましょう。

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

プライベートモードに適した追加のコマンドを考えられるかどうか教えてください。

重要なのは、このセットアップでVimを起動するための短くて簡単な方法は考えられないということです。

ここに私が思いついたいくつかのアイデアがあります:

  1. .vimrcの代わりに.vimrcprivateをロードする

    必要なコマンドをすべて.vimrcprivateに入れて、次のようにVimを起動できます。

    vim -u .vimrcprivate
    
  2. Private()関数を定義して呼び出す

    別のアイデアとして、次のようなコードを.vimrcに追加します。

    function Private()
        " set of commands here
    endfunction
    

    そして、次のようなプライベートモードでVimを起動できます。

     vim -c 'call Private()'
    
  3. 変数を使用してコマンドのセットアップをトリガーします

    これは、2番目のソリューションと非常によく似ています。追加するだけ

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

    .vimrcに追加してから、Vimを起動します

    vim -c 'let privatemode=1'
    

    これは賢くも短くもない。

  4. エイリアスを.bashrc(またはシェルが使用している他の。* rcファイル)に追加します

    例えば:

    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. いくつかの魔法(でコメントからCarpetsmokerこのスレッド

    Carpetsmokerはこのコメントで次のように述べています。

    単純な理由で、忘れやすいので、別のvimrcファイルを使用することはお勧めしません。このautocmdのようなもの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'短いバージョンの値が空でないかどうかをテストします。このオプションは、バッファがExコマンドでファイルに書き込まれるときに暗号化に使用される暗号化方式を制御します:X。オプションが空でない場合、オートコマンドはさまざまなオプションを設定します。
サギノー

5
に投票しvim -Nu .vimrcprivateます。
ロメインル

3
4と1,2または3の組み合わせはどうですか?alias vimprivate='vim -u .vimrcprivate'など
スティーブ

7
別の方法は、vimをvimpなどの別の名前にシンボリックリンクし、テストv:progname == "vimp"し、trueの場合、プライベートモード設定を実行することです。をご覧ください:help v:progname
ゲイリージョン

@garyjohn。あなたのソリューションは本当に素晴らしいです!魅力のように機能します:)
マテウスピオトロフスキ

回答:


10

まあ、少し遅れましたが、応答するには:

  1. いくつかの魔法(このスレッドのCarpetsmokerのコメントより)

私の一般的なアイデアは、暗号化されたファイルを使用している場合は常に「プライベートモード」を開始したいということでした。したがって、この自動コマンドはそれを行います。

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?この方法で、独自の設定「プライベート」設定ができます。この2つを以下と組み合わせることもできます。

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

1

Vimのドキュメントによれば、( :help -c)のみが10の最大値とすることができる+{command}-c {command}及び-S {file}Vimを起動するときにオプション引数を合わせ、そしてそれらは、最初のファイルが読み込まれ_after_実行します。

この--cmd {command}オプションを使用すると、vimrcファイルを処理する前にさらに10個のコマンドを実行できますが、vimrcによって設定をオーバーライドできることに注意してください。

したがって、Vimオプションを早期に設定し、環境変数やスクリプトロジックの必要性を回避することを好みます。また、プラグインは危険なことをしている可能性があるため、ロードしない方が良いでしょう。

私が考えることができる最も安全な呼び出し方法は~/.bashrc、シンプルで明確なvimrcprivateファイルでエイリアスを使用することです:

# Secure Vim
alias vimsec="vim -N -n -i NONE -u ~/.vimrcprivate"
alias gvimsec="g$(alias vimsec | sed -e "s/-u/-U/" -e "s/\(.*\)'\(.*\)'/\2/")"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.