
OSを変更しました
proxychains4 wget [hit tab], will not come up with wget's options
proxychains4 gi[tab], will not come up with "git"
そして、zshはエイリアスの後のコマンドには適用されません。
alias proxy="http_proxy=http://127.0.0.1:12345"
proxy brew[hit tab], will not come up with brew's subcommands
コマンドとそのオプションは完了しません。どんなアイデアがありますか?ありがとうございます。
答え1
デフォルトでは、zshは完了する前にエイリアスを拡張します。構成でこの機能を無効にした可能性があります。設定を解除して明示的に再度有効にできます。complete_aliases
オプション。
unsetopt complete_aliases
このような外部コマンドの場合、proxychains4
パラメーター自体がコマンドであることを宣言し、パラメーターは以下を完了して宣言します。_precommand
。これは文書内で簡単には見つかりませんが、nohup
実行して同様のコマンドの構成を観察できますecho $_comps[nohup]
。これは「新しい」システムで実行されます(実行後compinit
)。
compdef _precommand proxychains4
答え2
まあ、私は「oh my zsh」のsudoプラグインで解決策を見つけました。これはsudoプラグインで修正されたコードです。私はこれをProxychains-ng-plugins.zshと呼び、$ZSH_CUSTOM/plugins /proxychain-ng/に配置しました。 ~/.zshrc、プラグイン=()にロードし、 ~/.zshrc をソースとして指定します。
# ------------------------------------------------------------------------------
# Description
# -----------
#
# sudo will be inserted before the command
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
# * Dongweiming <[email protected]>
#
# ------------------------------------------------------------------------------
proxychains-ng-command-line() {
[[ -z $BUFFER ]] && zle up-history
[[ $BUFFER != proxychains4\ * ]] && BUFFER="proxychains4 -q $BUFFER"
zle end-of-line
}
zle -N proxychains-ng-command-line
# Defined shortcut keys: [Esc] [Esc]
bindkey "\e^" proxychains-ng-command-line
したがって、最初にコマンドを入力してからESC + CTRLを押すと、Proxychains4が最初に追加されます。
しかし、これは私の質問に対する答えではありません。