如何在 `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 构建错误?

React脚手架中使用less

解决less文件保存后会自动生成css文件的方法

导入使用mixins的less文件时可以避免重复的css吗?

less:避免编译