我自己写了一个漂亮的、git 感知的 ksh 提示函数。在这里,我只提供了一个最小的工作示例,以便您可以看到我的问题,而不会出现任何臃肿的情况:
#!/bin/ksh
function _test_prompt
{
prompt="`whoami`@`hostname` > "
[[ $(id -u) -eq 0 ]] && prompt="ROOT@`hostname` # "
print "\n\w"
print -n "$prompt"
}
export readonly PS1='$(_test_prompt)'
我从我的.kshrc
.
问题是,当我尝试查看更长的、经过美化的 git 日志时,提示符的换行符会截断输出的顶部。例如
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s'
显示为
* f0490d0 - Make sure fb is big enough to handle reconfigure (3 years, 10 months ago) <Keith Packard>
* 7caa6ce - Add xrandr-auto sample script (3 years, 10 months ago) <Keith Packard>
* f59c924 - (tag: v0.2) Update to version 0.2 (7 years ago) <Keith Packard>
* a6c8969 - Add --auto switch, a shortcut for --config "xrandr --auto" (7 years ago) <Keith Packard>
* d45135b - Add manual (7 years ago) <Keith Packard>
* ef165dc - add .gitignore (7 years ago) <Keith Packard>
* d927ec1 - Autotool (7 years ago) <Keith Packard>
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~/git-misc/x-on-resize
user@hostname >
并且输出的第一行只能通过向上翻页一次才能看到:
~/git-misc/x-on-resize
user@hostname > git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s'
* 617e5ed - (HEAD -> master, origin/master, origin/HEAD) Use mode ID instead of mode for autoconfig (3 years, 10 months ago) <Keith Packard>
* f0490d0 - Make sure fb is big enough to handle reconfigure (3 years, 10 months ago) <Keith Packard>
(这是上一页底部的内容,被剪掉)。
正如你可以想象的那样,这非常烦人;在这种情况下,我实际上丢失了最近的提交,并且必须向上滚动才能找到它。
仅当日志的输出适合一个屏幕时才会发生这种情况(否则它会减少)。
感谢您的帮助!
答案1
像往常一样,在我真正抽出时间询问之后,我设法解决了这个问题。
我只是将pager.log
git config 变量设置为less -RFc
;-c
据我了解,相关开关是:它告诉less
从下到上重新绘制屏幕,而不是反之亦然。
显然,这确实不是 ksh 问题。我很抱歉。