Language: en ja
Vim documentation: pass
main help file
pass.txt 日本語ヘルプ
Version :
Author : Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
License : MIT license {{{
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
}}}
==============================================================================
目次 pass-contents
概要 pass-introduction
使い方 pass-usage
インタフェース pass-interface
変数 pass-variables
コマンド pass-commands
関数 pass-functions
自動コマンド pass-autocommands
TODO pass-todo
更新履歴 pass-changelog
==============================================================================
概要 pass-introduction
pass は Vim password-store APIを目標としたプラグインです。
Pass: The Standard Unix Password Manager - https://www.passwordstore.org/
を参照してください。
現在getが使えます。なので emacs の のように使えます。
最新版:
https://github.com/tsuyoshicho/pass.vim
CtrlPのプラグインとしては ctrlp-pass を参照してください。
Clapのプラグインとしては clap-pass を参照してください。
==============================================================================
使い方 pass-usage
パスワード等の読み出しや設定時に利用
" 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! s:test() abort
let password = pass#get('Service/foobar')
" ...
endfunction
プラグインのパスワード等の設定時に利用
# in plugin setting(dein's toml)
[[plugins]]
repo = 'tsuyoshicho/vim-pass'
depends = ['ctrlp']
hook_add = '''
let g:ctrlp_extensions = get(g:, 'ctrlp_extensions', [])
\ + ['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]]
repo = 'tpope/vim-rhubarb'
depends = ['vim-fugitive','vim-pass']
# on_if= 'executable("hub")'
hook_add = '''
call pass#get_startup('g:RHUBARB_TOKEN','Develop/Github')
'''
[[plugins]]
repo = 'kyoh86/vim-docbase'
depends = ['vim-pass']
hook_add = '''
let g:docbase = []
call pass#get_startup_funcall(
\ { v ->
\ add(g:docbase,
\ {
\ 'domain': 'example1',
\ 'token' : v
\ }
\ )
\ },
\ 'Develop/DocBase1'
\)
call pass#get_startup_funcall(
\ { v ->
\ add(g:docbase,
\ {
\ 'domain': 'example2',
\ 'token' : v
\ }
\ )
\ },
\ 'Develop/DocBase2'
\)
'''
[[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>)
'''
[[plugins]] # Mastodon
repo = 'mattn/vim-mastodon'
depends = ['webapi-vim','vim-pass']
hook_add = '''
" mstdn.jp
" let g:mastodon_host = 'mstdn.jp'
" call pass#get_startup('g:mastodon_access_token',
" \ 'Message/Mastodon/mstdn.jp')
function! s:mastodon_completion(A,L,P) abort
let host_list = ['mstdn.jp']
return join(host_list,"\n")
endfunction
function s:mastodon_change_hosttoken(host) abort
let path = 'Message/Mastodon/' . a:host
let g:mastodon_host = a:host
let g:mastodon_access_token = pass#get(path)
endfunction
command! -nargs=1 -complete=custom,<SID>mastodon_completion
\ MastodonHostChange :call <SID>mastodon_change_hosttoken(<f-args>)
'''
==============================================================================
インターフェイス pass-interface
------------------------------------------------------------------------------
変数 pass-variables
g:pass_store_path g:pass_store_path
既定値: "~/.password-store"
password-store形式のデータの格納位置です。
g:pass_gpg_path g:pass_gpg_path
既定値: "gpg"
gpg(gnupg)実行ファイルのパスです。
単純にはコマンドだけ書けばよいです。
g:pass_use_agent g:pass_use_agent
既定値:
0 (SSH接続 あるいは 非Windows/MacでGUIがないシステム)
1 (それ以外)
gpg-agentが利用できるか/利用するかの設定です。
1でgpg-agentのpinentryでのパスフレーズ問い合せ、0でvim上での問い合せになります。
リモートや非GUI環境でgpg-agentが使える場合、以下のようなシェルスクリプトが便利
です:
!/bin/bash
vim_with_gpg_check () {
local result=0
# Run test decoding and use gpg-agent
local output=$(<gpg password-store decode test using same key>) || result=$?
if [[ "$result" == "0" ]]; then
export VIM_PASS_AGENT=1
else
export VIM_PASS_AGENT=0
fi
# run vim
vim "$@"
# delete environment variable
export -n VIM_PASS_AGENT
}
if type vim_with_gpg_check &>/dev/null; then
alias vim='vim_with_gpg_check'
fi
その値を受け取る Vim script は以下になります:
" Check gpg-agent support
if exists('$VIM_PASS_AGENT')
" When '1', using agent enabled
let g:pass_use_agent = ($VIM_PASS_AGENT ==? '1') ? 1 : 0
endif
シェルスクリプトを使うのは、プラグインはVimの中から gpg-agent へパスフレーズを
渡せないためです。事前に pinentry-curses などで gpg-agent のパスフレーズ入力を
すると、他の操作でも利用されます。
g:pass_entry_altmap g:pass_entry_altmap
既定値:
{
\ 'password' : ['password', 'secret'],
\ 'username' : ['user', 'username', 'id', 'account'],
\ 'host' : ['host', 'url', 'uri' ],
\},
エントリの代替名の辞書 Dictionary でキーはラベル、値はリスト List で、代替
名のリストになっています。"password" は特別な項目のラベルで、デフォルトのパス
ワード情報を指します。"password" ラベルは、内部デフォルト値を使います。"otp"
は特別な項目のラベルで、OTP用パラメータ専用です、代替名などはありません。また、
g:pass_entry_altmap をスクリプトロード前に定義したときは上記設定を追加して動作
します。
------------------------------------------------------------------------------
コマンド pass-commands
:PassGet {entry} ... :PassGet
パスワード確認コマンドです、引数にpassword-storeのエントリを入力してください。
引数を必要とし、{entry}は<tab>で自動補完できます。
:PassGetOtp {entry} ... :PassGetOtp
OTP値確認コマンドです、引数にpassword-storeのエントリを入力してください。引数
を必要とし、{entry}は<tab>で自動補完できます。
:PassGetRegister {entry} ... :PassGetRegister
パスワードのレジスタ格納コマンドです、引数にpassword-storeのエントリを入力して
ください。現在限定的に無名レジスタへの永続的なコピーが動きます。引数を必要と
し、{entry}は<tab>で自動補完できます。
:PassGetOtpRegister {entry} ... :PassGetOtpRegister
OTP値のレジスタ格納コマンドです、引数にpassword-storeのエントリを入力してくだ
さい。現在限定的に無名レジスタへの永続的なコピーが動きます。引数を必要とし、
{entry}は<tab>で自動補完できます。
------------------------------------------------------------------------------
関数 pass-functions
pass#get({entry}, {...}) pass#get()
パスワード取得API、戻り値に値を返します。
entryはpassword-storeのエントリ形式。
オプションでパスワード以外の項目を指定できます。
pass#get_otp({entry}) pass#get_otp()
パスワード取得API、戻り値にOTP値を返します。
entryはpassword-storeのエントリ形式。
pass#get_register({entry}, {...}) pass#get_register()
パスワード取得API、レジスタに値を設定します。
entryはpassword-storeのエントリ形式。
オプションでパスワード以外の項目を指定できます。
限定的に動作し、無名レジスタへコピーします。
{まだ動作しません。}
時間経過でレジスタから消える予定。
pass#get_otp_register({entry}) pass#get_otp_register()
パスワード取得API、レジスタにOTP値を設定します。
entryはpassword-storeのエントリ形式。
オプションでパスワード以外の項目を指定できます。
限定的に動作し、無名レジスタへコピーします。
{まだ動作しません。}
時間経過でレジスタから消える予定。
pass#get_startup()
pass#get_startup({set-variable},{entry}, {...})
パスワード取得API、起動時前専用で、set-variableに値を設定します。
entryはpassword-storeのエントリ形式。
オプションでパスワード以外の項目を指定できます。
set-variableはスコープ付きの変数を表す文字列です(ex. 'g:hoge_fuga')
Note: StartUp API はオートロード関数で、他のプラグインのsource前から使えます
(autoloadの動的読み込み機能を使って対応)。
pass#get_startup_scope()
pass#get_startup_scope({scope},{set-variable},{entry}, {...})
パスワード取得API、起動時前専用で、set-variableに値を設定します。
entryはpassword-storeのエントリ形式。
オプションでパスワード以外の項目を指定できます。
scopeには get() と同じように、g:やw:などのスコープを設定します。
set-variableはスコープなしの変数を表す文字列です(ex. 'hoge_fuga')
Note: StartUp API はオートロード関数で、他のプラグインのsource前から使えます
(autoloadの動的読み込み機能を使って対応)。
pass#get_startup_funcall()
pass#get_startup_funcall({funcref},{entry}, {...})
パスワード取得API、起動時前専用で、値付きで{funcref}を呼びます。
entryはpassword-storeのエントリ形式。
オプションでパスワード以外の項目を指定できます。
解決したパスワードを引数として、{funcref}を実行します。
Note: StartUp API はオートロード関数で、他のプラグインのsource前から使えます
(autoloadの動的読み込み機能を使って対応)。
pass#resolve_startup() pass#resolve_startup()
------------------------------------------------------------------------------
自動コマンド pass-autocommands
User VimPassStartUpResolve VimPassStartUpResolve
処理された pass#resolve_startup() が完了したときにイベントを呼び出します(複
数)。
==============================================================================
TODO pass-todo
* PassGetRegisterの実装
* set系の実装
==============================================================================
更新履歴 pass-changelog
see git log
==============================================================================
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl:noet:
top - main help file - tag index
Language: en ja