Vim에서 auth-source와 같은 비밀번호 비밀 플러그인을 만들었습니다.
4723 단어 Vimpassauth-sourceEmacsgpg
vim-pass
이전부터 gpg 활용의 하나로서 Pass: The Standard Unix Password Manager 의 프레임워크를 사용하고 있었습니다.
이와는 별도로 emacs에서는, 설정 파일내의 비밀 정보에 대해 auth-source
로 암호화할 수 있는 구조가 있어, 유용성을 느끼고 있었습니다. (이것은 전용 파일에 암호화하여 저장한다)
결과, Vim에서 (목표는) password-store 형식의 데이터의 API를 정비하면서, auth-source
의 편리성을 반입하려고 하고, 그 결과가 됩니다.
아직도 고장 투성이일지도 모릅니다만 (특히 이상계는 별로 시험할 수 없는, CI와 테스트 내지...), 아무쪼록 잘 부탁드립니다.
용법
README 참조
" in vimrc
" configured at end of vim startup
call pass#get_startup('g:test_gh_token','Develop/Github')
call pass#get_startup('g:test_gh_username','Develop/Github','username')
function! test() abort
let password = pass#get('Service/foobar')
" ...
endfunction
# in plugin setting(dein's toml)
[[plugins]]
repo = 'tsuyoshicho/vim-pass'
[[plugins]] # https://pixe.la/
repo = 'mattn/vim-pixela'
depends = ['open-browser.vim','vim-pass']
hook_add = '''
" let g:pixela_username = 'user'
" let g:pixela_token = 'token'
call pass#get_startup('g:pixela_username','Develop/Pixela','username')
" VimPixela work OK
call pass#get_startup('g:pixela_token','Develop/Pixela')
" startup-time countup do not correct work.
" It work or does not work depending on the processing order of events
'''
[[plugins]] # Slack
repo = 'mizukmb/slackstatus.vim'
depends = ['webapi-vim','vim-pass']
hook_add = '''
" let g:slackstatus_token = '<YOUR_SLACK_TOKEN>'
" my hoge
call pass#get_startup('g:slackstatus_token','Message/Slack/myhoge.legacy')
" vim-jp
" call pass#get_startup('g:slackstatus_token','Message/Slack/vim-jp.legacy')
"
function! s:slack_list(A,L,P) abort
let slacklist = ['myhoge','vim-jp']
return slacklist
endfunction
function s:slackstatus_change_token(team) abort
let path = 'Message/Slack/' . a:team . '.legacy'
let g:slackstatus_token = pass#get(path)
endfunction
command! -nargs=1 -complete=customlist,<SID>slack_list SlackStatusChange :call <SID>slackstatus_change_token(<f-args>)
'''
기동시에 패스 프레이즈의 키보드 입력을 Vim상에서 할 수 없기 때문에, 기동 후에 정리해 설정하는 pass#get_setup
를 준비했습니다.
보통 사용에는 pass#get
가 있습니다.
콘솔 모드를 버리고, gpg의 pinentry 맡겨라면, 이 수고는 없어도 괜찮습니다만..., 그렇게 하면 심한 것이 되니까요.
제한
덧붙여 리모트에서는 강제로 pinentry 없음 환경의 설정으로 하고 있습니다만, 로컬 한편 non-GUI인 환경이라면 수동 설정하지 않으면 비참하게 된다고 생각합니다(미테스트)
그 밖에도
- 목표는 충분한 조작 API이지만, 현재는 get만
- Vim 레지스터에 전사해, 일정시간 후에 소멸하는 API를 생각하고 있습니다만, 이것도 미정비
- 디폴트 항목의 패스워드 이외를 지정했을 경우에 대해서, 그 항목의 확인은 캐릭터 라인 비교(exact match)
- 기동시~라고 하면서, 기동시에 값이 설정되어 있는 것이 필요한 플러그인의 설정치에 대해서, VimEnter의 이벤트 처리의 순서에 따라서는, 기대하는 동작을 하거나 하지 않는 경우가 있다
와 제한 천코모리입니다.
후기
유지 보수 얼마나 노력할지 모르기 때문에, 파생 대환영.
Reference
이 문제에 관하여(Vim에서 auth-source와 같은 비밀번호 비밀 플러그인을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tsuyoshi_cho/items/a610272027ad3ec35352
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
" in vimrc
" configured at end of vim startup
call pass#get_startup('g:test_gh_token','Develop/Github')
call pass#get_startup('g:test_gh_username','Develop/Github','username')
function! test() abort
let password = pass#get('Service/foobar')
" ...
endfunction
# in plugin setting(dein's toml)
[[plugins]]
repo = 'tsuyoshicho/vim-pass'
[[plugins]] # https://pixe.la/
repo = 'mattn/vim-pixela'
depends = ['open-browser.vim','vim-pass']
hook_add = '''
" let g:pixela_username = 'user'
" let g:pixela_token = 'token'
call pass#get_startup('g:pixela_username','Develop/Pixela','username')
" VimPixela work OK
call pass#get_startup('g:pixela_token','Develop/Pixela')
" startup-time countup do not correct work.
" It work or does not work depending on the processing order of events
'''
[[plugins]] # Slack
repo = 'mizukmb/slackstatus.vim'
depends = ['webapi-vim','vim-pass']
hook_add = '''
" let g:slackstatus_token = '<YOUR_SLACK_TOKEN>'
" my hoge
call pass#get_startup('g:slackstatus_token','Message/Slack/myhoge.legacy')
" vim-jp
" call pass#get_startup('g:slackstatus_token','Message/Slack/vim-jp.legacy')
"
function! s:slack_list(A,L,P) abort
let slacklist = ['myhoge','vim-jp']
return slacklist
endfunction
function s:slackstatus_change_token(team) abort
let path = 'Message/Slack/' . a:team . '.legacy'
let g:slackstatus_token = pass#get(path)
endfunction
command! -nargs=1 -complete=customlist,<SID>slack_list SlackStatusChange :call <SID>slackstatus_change_token(<f-args>)
'''
Reference
이 문제에 관하여(Vim에서 auth-source와 같은 비밀번호 비밀 플러그인을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tsuyoshi_cho/items/a610272027ad3ec35352텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)