
Обычно, когда я хочу открыть файл, зашифрованный 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
Однако мне не удалось настроить autocmd для повторного шифрования содержимого буфера при выходе.