Я бы не рекомендовал его из-за его неясности, но вы могли бы динамически добавлять и удалять псевдонимы или функции через prompt
функцию , которая определяет строку интерактивного приглашения, потому что она вызывается после каждой команды.
Обратите внимание, что псевдонимы PowerShell допускают только команду псевдонимов names (или paths);то есть вы не можете вставить аргументы в них, поэтому в следующем примере вместо этого используется функция (но она будет работать аналогично для псевдонимов):
function prompt {
# Define function `gs` on demand whenever the current location is a in a Git
# repo folder, and remove it when switching to any other folder.
if (Test-Path ./.git) { function global:gs { git status $Args } }
else { Remove-Item -EA Ignore function:global:gs }
# Define the standard PS prompt string.
"PS $PWD$('>' * ($nestedPromptLevel + 1)) "
}
Чтобы уменьшитьиз-за неясности, вы можете изменить строку приглашения, чтобы указать, действуют ли специфичные для папки команды:
function prompt {
# Define function `gs` on demand whenever the current location is a in a Git
# repo folder, and remove it when switching to any other folder.
if (Test-Path ./.git) {
$indicator = '[repo]'
function global:gs { git status $Args }
} else {
$indicator = ''
Remove-Item -EA Ignore function:global:gs
}
# Define the standard PS prompt string.
"PS $PWD $indicator$('>' * ($nestedPromptLevel + 1)) "
}
Теперь ваша подсказка будет содержать подстроку [repo]
(например, PS /Users/jdoe/Projects/foo [repo]>
) всякий раз, когда текущийпапка Git-репо.