vim 内から ansible-vault edit を使用してファイルを開くにはどうすればよいですか?

vim 内から ansible-vault edit を使用してファイルを開くにはどうすればよいですか?

通常、ansible-vault で暗号化されたファイルを編集用に開きたい場合は、次のコマンドを実行します。ansible-vault edit <filename>これにより、ファイルが一時ファイルに復号化され、編集用に開きます。

しかし、私が知りたいのは、vim 内からこれを実現する方法、たとえば構文を使用してシェル コマンドを実行する方法です:! ...command...。たとえば、暗号化されたファイルを vim で開き、次のコマンドを実行すると、ファイルを復号化できることはわかっています。

:! ansible-vault edit %

しかし、これにより、ansible-vault を含むファイルが別のウィンドウで開かれ、vim に戻るにはキーを押す必要があります。

私がやりたいのは、このファイルを vim で開いて、他の通常のファイルや ansible-vault で暗号化されたファイルと一緒に編集できるようにすることです。現在、私はいくつかの tmux ペインを開いてこれを行っていますが、これはちょっと面倒です。

答え1

暗号化された vault ファイルを編集するときに、vim 内からこれを実行しました。

:!ansible-vault --vault-password-file=~/.vault_pass decrypt %

変更を加えてファイルを再度暗号化します。

:!ansible-vault --vault-password-file=~/.vault_pass encrypt %

ボールトのパスワードはプレーンテキストとして~/.vault_passに保存されます

内容を表示して元の暗号化ファイルに戻るには(gitをSCMとして使用し、逃亡者.vimプラグイン) で最初に復号化し、完了したら次の操作を行います。

:Git checkout %

将来的には、これらのコマンドの関数またはエイリアスを作成して、より高速化する可能性があります。今のところ、コマンド履歴検索を実行して、毎回すべてを入力しなくても済むようにしています。

q: /decrypt N enter

答え2

私はそれを使って

%! ansible-vault decrypt --output -

バッファを暗号化するには、

%! ansible-vault encrypt --output -

これを自動化できれば素晴らしいと思います。私はある程度の成功を収めました。

autocmd BufNewFile,BufRead *
  \ if getline(1) =~ '$ANSIBLE_VAULT;.*;AES256'     |
  \   execute '%! ansible-vault decrypt --output -' |
  \ endif

しかし、終了時にバッファの内容を再暗号化するための autocmd を設定できませんでした。

関連情報