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

그러나 종료 시 버퍼 내용을 다시 암호화하기 위한 autocmd를 설정할 수 없었습니다.

관련 정보