
通常,當我想打開由 ansible-vault 加密的文件進行編輯時,我只需運行ansible-vault edit <filename>
- 這會將文件解密為臨時文件並打開它進行編輯。
然而,我想知道的是如何從 vim 中實現這一點,例如透過使用語法來執行 shell 命令:! ...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
然而,我無法設定自動命令來在退出時重新加密緩衝區的內容。