Как открыть файл с помощью ansible-vault edit из vim?

Как открыть файл с помощью ansible-vault edit из vim?

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

Связанный контент