自定义Git回购的CSH提示

自定义Git回购的CSH提示,git,prompt,csh,Git,Prompt,Csh,当我在Git回购中时,我希望有一个自定义CSH提示。 如果我不在git回购中,我希望提示看起来像这样 host_name>$ 但当我在Git回购中时,必须变成这样 host_name [GIT REPO ROOT DIR]>$ 我只想显示Git repo的根目录(Git repo root DIR),这样我就知道我当前在哪个repo中。而不是每次都使用“pwd” 你们对实现这一目标有什么建议吗?谢谢你的帮助 -Anish我仍然是一个顽固的tcsh用户,但我最终放弃了原始的cs

当我在Git回购中时,我希望有一个自定义CSH提示。 如果我不在git回购中,我希望提示看起来像这样

host_name>$ 
但当我在Git回购中时,必须变成这样

host_name [GIT REPO ROOT DIR]>$ 
我只想显示Git repo的根目录(Git repo root DIR),这样我就知道我当前在哪个repo中。而不是每次都使用“pwd”

你们对实现这一目标有什么建议吗?谢谢你的帮助


-Anish

我仍然是一个顽固的tcsh用户,但我最终放弃了原始的csh,转而使用tcsh,原因有很多,包括csh对这类东西的可怕支持。(我最终可能会屈服,甚至改用bash.:-)不过,正如@KeithThompson所说的,通过别名也可以做到:

alias cd 'chdir \!:* && update_prompt'
alias update_prompt 'set prompt="...stuff here... "'
其中“…stuff here…”可以包括使用反引号运行某些内容,例如生成
[GIT REPO ROOT DIR]
部分的脚本。(用csh以外的语言编写脚本!)


请注意,当我将
cd
化名为
chdir…
时,您只需在别名中使用命令本身,您将需要使用
pushd
popd

以下是我为tcsh所做的操作。把这个脚本放在你的路径中的某个地方;称之为cgb:

#!/bin/bash
git branch 2> /dev/null | grep '^*' | awk '{ print $2; }'
在您的.tcshrc中

alias precmd 'set cgb=`cgb`'
set prompt='...your-prompt-string... (%$cgb) % '

precmd在每次提示之前运行。如果您只希望它在更改目录之前运行,请改用别名cwdcmd。我更喜欢precmd,因为它会在执行git签出时运行。

csh(取决于版本)没有提供任何直接的方法来定制提示。您可以为更新
$prompt
cd
pushd
popd
命令定义别名。你在用什么操作系统?在许多系统上,
/bin/csh
实际上是指向
/bin/tcsh
的符号链接。变量
$tcsh
$version
设置好了吗?谢谢@Keith Thompson和@torek。我之前只是这样做的,它按照我想要的方式工作。我想知道是否还有其他的方法。但令人悲哀的是,对于一个真正大型的回购,git命令可能会变得很慢。我正在考虑使用
git
cmd查找我的回购名称w/o。我计划编写一个脚本来解析我的
pwd
,并获取repo名称,因为我有一个特定的dir结构。根据,我不应该在脚本中使用“git branch”,因为它是一个命令。将上面的“git分支…”替换为:“git rev parse——符号全名——abbrev ref HEAD 2>/dev/null”。