vim内でansible-vault編集を使用してファイルを開く方法は?

vim内でansible-vault編集を使用してファイルを開く方法は?

通常、編集用にansible-vaultで暗号化されたファイルを開くにはansible-vault edit <filename>- ファイルを一時ファイルに復号化し、編集用に開きます。

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

:! ansible-vault edit %

ただし、これを行うには、別のウィンドウでansible-vaultを使用してファイルを開き、vimに戻るにはキーを押す必要があります。

私が望むのは、vimを使用してこのファイルを開き、他の一般的なファイルまたはansible-vaultを使用して暗号化されたファイルで編集できることです。現在、私はいくつかのtmuxウィンドウを開いてこれを行いますが、これは少しPITAです。

答え1

暗号化されたボルトファイルを編集すると、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

ただし、終了時にバッファの内容を再暗号化する自動コマンドを設定することはできません。

関連情報