如何在 `less` 中避免`Pattern not found` 消息和屏幕重绘(作为 Git 寻呼机)
Posted
技术标签:
【中文标题】如何在 `less` 中避免`Pattern not found` 消息和屏幕重绘(作为 Git 寻呼机)【英文标题】:How to avoid `Pattern not found` message and screen redraw in `less` (as Git pager) 【发布时间】:2017-05-30 20:43:20 【问题描述】:我刚刚破解了我的 core.pager 以向我展示更有用的日志和差异:
[core]
; diff-so-fancy:
; Seperate files in diff view
; LESS_TERMCAP ... +0 -p ...:
; Highlight merge commits and file beginnings in diff view (but do not
; jump because of `+0`), press `n` to jump to the next occurence
; -S:
; Do not break long lines (useful for log --graph with branches)
pager = "diff-so-fancy | LESS_TERMCAP_so=$'\\E[1;37m' less --tabs=4 -RFX +0 -p 'Merge (branch|pull request) .*|^(added|deleted|modified): '"
这很酷,但我不喜欢少的一些行为。如何预防
Pattern not found
消息(例如在干净的 repo 上运行 git diff
时)?
重绘全屏 (git log --oneline -5
)?
即使在半屏消息上也需要按q
(因为-S
)?
请注意,如果您想在没有 diff-so-fancy 的情况下使用它,请将 ^(added|deleted|modified)
更改为 ^diff --git
。
简化的解决方案
pager = "diff-so-fancy | GREP_COLOR='1;37' grep --color=always -E 'Merge (branch|pull request).*|$' | less --tabs=4 -RFX"
它只会高亮合并提交,什么都不做。
【问题讨论】:
这些都是关于less
本身的问题,而不是关于 Git。我不确定这里是否有适当的标签,或者就此而言,这是否真的是一个 SO 问题,但是:为了避免“未找到”,不要搜索;为了让 less 在半页上表现更好,请将 -F
添加到您的选项中。您已经拥有 -F
,所以我不确定为什么它不起作用。
@torek:我知道这个话题和less
有关,我应该在unix.stackexchange.com上问吗?半页问题是由-p
和+0
引起的。
Unix.SE 可能不错。不过,我几乎不会在那里闲逛。
我刚刚更改了突出显示合并提交的方式 - 请参阅更新后的问题。
【参考方案1】:
Pattern not found 消息(例如在干净的 repo 上运行 git diff 时)?
我破解了一个解决方案,该解决方案检查 diff-so-fancy
的输出以查找 commit <SHA>
、added:
、removed:
等的匹配项,并且仅在找到此类匹配项时使用 less --pattern
。
https://github.com/agross/dotfiles/commit/8dc82ef2374172b89603f879742900a8499d8372
【讨论】:
以上是关于如何在 `less` 中避免`Pattern not found` 消息和屏幕重绘(作为 Git 寻呼机)的主要内容,如果未能解决你的问题,请参考以下文章
在 DOM 对象上设置属性时如何避免 no-param-reassign
即使使用 --no-build 标志运行 dotnet test 时如何避免 Wix 构建错误?