要注意,我正在使用Oh-My-Zsh和git 2.17.每当我输入git branch,而不是向我显示我的git的分支时,它会显示如下内容:
~
~
~
~
~
(END)
Run Code Online (Sandbox Code Playgroud)
我可以通过按键盘上的'q'来退出此功能,但我仍然对此出现的原因感到困惑.
在我的新电脑(Mac)中,如果我执行 git diff,它只会显示与终端窗口高度一样多的差异。然后我必须按 Enter 键“向下滚动”才能看到所有其他更改。
在我的旧电脑上,当我执行 git diff 时,它会立即输出整个 git diff,并且我能够使用鼠标上的滚动按钮来查看所有内容。
如何更改 git 设置以实现第二种行为?
我试图让watchr在文件发生变化时自动运行测试,并获得我需要的大部分工作,除了RSpec的所有ANSI颜色都被忽略了.违规代码如下:
stdin, stdout, stderr = Open3.popen3(cmd)
stdout.each_line do |line|
last_output = line
puts line
end
Run Code Online (Sandbox Code Playgroud)
当cmd等于类似的东西时rspec spec/**/*.rb
,上面的代码运行RSpec很好,除了所有输出都是单色的.我已经看过使用了Kernel.system
,但系统没有返回输出,我需要确定测试是否失败/成功.如何从Ruby中执行包含ANSI颜色的脚本获取输出,并将其输出到控制台?
在OS X终端中,当less
它自己或其他程序调用时man
,在我们退出后它的输出将不会被写入ttyless
.例如,如果我们运行less README
,我们会暂时被引导到一个屏幕上
SO rocks.
README (END)
Run Code Online (Sandbox Code Playgroud)
按下之后q
,输出less
会消失,我们最终会得到类似的结果
$less README
$ # shell waiting for input
Run Code Online (Sandbox Code Playgroud)
但是,如果less
被调用git
(在我的情况下git
设置为寻呼机)则不是这种情况less -r
.退出后,输出less
始终写入tty.例如,如果我们运行git log --oneline
,如果日志很短less
则甚至不会被调用; 如果日志长于一个屏幕,那么我们会less
像往常一样暂时指向输出屏幕:
0000000 set the pager of git to less
......
1111111 what's wrong with git?
(END)
Run Code Online (Sandbox Code Playgroud)
按下之后q
,整个东西都被写入了tty,所以我们最终得到了类似的东西
$git log --oneline # OMG!!!
0000000 set the …
Run Code Online (Sandbox Code Playgroud) 如何在git grep
没有寻呼机的情况下返回结果?Grep默认执行此操作.当我输给git grep
猫时:git grep foo | cat
它会这样做,但它在比赛中失去了突出显示.我想在不做的情况下保持对比赛的突出显示git grep foo | cat | grep foo
.
我想处理git blame
特定文件的完整输出.某些文件太长而无法放在屏幕上,因此用户需要通过按键逐行向下滚动Enter
.是否缺少可以打印出完整输出的命令行选项?或者,我可以使用该-L
选项来定义行起点和终点.但是,这需要我弄清楚文件有多少行并多次运行命令,这是我想避免的.
git ×5
command-line ×2
terminal ×2
ansi-escape ×1
colors ×1
diff ×1
git-config ×1
less-unix ×1
macos ×1
ruby ×1