fish_should_add_to_history - 履歴にコマンドを追加するかを決定¶
概要¶
fish_should_add_to_history
function fish_should_add_to_history
...
end
説明¶
fish_should_add_to_history 関数は、fish がコマンドを履歴に追加する前に実行されます。その終了ステータスによって、追加を実行するかどうかが決定されます。
ステータス 0 を返すと、コマンドは履歴に保存されます。それ以外の値を返すと保存されません。後者の場合でも、直後の 1 回に限ってはコマンドを呼び出す(再実行する)ことが可能です。
fish_should_add_to_history の第 1 引数はコマンドライン文字列です。履歴への追加はコマンドが実行される「前」に行われるため、例えば status などをチェックすることはできません。これは、 exec - 現在のプロセスでコマンドを実行する のように終了しないコマンドや、実行時間の長いコマンドを、新しいセッションから即座に利用できるようにするためです。
fish_should_add_to_history が存在しない場合、fish はスペースで始まるコマンドを除き、すべて履歴に保存します。この関数が存在する場合、保存に関するすべての役割をこの関数が引き継ぎます。そのため、この関数が拒否しない限り、たとえスペースで始まるコマンドであっても保存されます。
例¶
簡単な例:
function fish_should_add_to_history
for cmd in vault mysql ls
string match -qr "^$cmd" -- $argv; and return 1
end
return 0
end
これは "vault"、 "mysql"、 "ls" の直接の呼び出しを履歴に保存しません。一方で、スペースで始まるコマンドは保存されます。
function fish_should_add_to_history
# I don't want `git pull`s in my history when I'm in a specific repository
if string match -qr '^git pull' -- "$argv"
and string match -qr "^/home/me/my-secret-project/" -- (pwd -P)
return 1
end
return 0
end
