忽略 silversearcher 中的长行
Ignore long lines in silversearcher
现在我正在使用:
ag sessions --color|cut -b1-130
但是如果搜索匹配被 cut
命令剪切,这将导致颜色伪像。
Silversearcher 在文档中有这个:
--print-long-lines
Print matches on very long lines (> 2k characters by default).
我可以将 2k 更改为其他内容吗? (对我来说是 120,因为老实说,在我使用的任何代码中,真正的代码都不会比这长)。
我能想到三个选项:
只打印搜索结果而不是整行,使用 -o 选项:ag --color -o
使用 less 而不是 cut,它使用 -S 选项(切长行)和 -R 选项(处理颜色转义序列)在屏幕尺寸的宽度上很好地切长行: ag --color <pattern> | less -R -S
使用 sed 或 awk 之类的东西代替 cut:ag --color <pattern> |sed -E "s/(.{$COLUMNS}).*$//"
这将在您的屏幕尺寸限制处剪切返回的行。当然,如果你决心砍掉 120 列,你可以:ag --color <pattern> |sed -E "s/(.{120}).*$//"
这最后一个选项不会阻止在颜色转义序列的中间进行斩波的可能性;如果你真的很顽固,你可以修改 sed 搜索模式来忽略颜色转义序列——已经在 SO 上回答了。也就是说,考虑到上面选项 1 的简单性和正确性,我看不到这样做的目的。
非常奇怪,记录的 --print-long-lines
实际上什么也没做,但是有一个工作开关: -W NUM / --width NUM
根本没有记录。参见 https://github.com/ggreer/the_silver_searcher/pull/720
ag --width 400 string dir/
# In .bash_aliases (s is for short)
alias ags='ag --width 400'
忽略超过 400 个字符的行。
现在我正在使用:
ag sessions --color|cut -b1-130
但是如果搜索匹配被 cut
命令剪切,这将导致颜色伪像。
Silversearcher 在文档中有这个:
--print-long-lines
Print matches on very long lines (> 2k characters by default).
我可以将 2k 更改为其他内容吗? (对我来说是 120,因为老实说,在我使用的任何代码中,真正的代码都不会比这长)。
我能想到三个选项:
只打印搜索结果而不是整行,使用 -o 选项:
ag --color -o
使用 less 而不是 cut,它使用 -S 选项(切长行)和 -R 选项(处理颜色转义序列)在屏幕尺寸的宽度上很好地切长行:
ag --color <pattern> | less -R -S
使用 sed 或 awk 之类的东西代替 cut:
ag --color <pattern> |sed -E "s/(.{$COLUMNS}).*$//"
这将在您的屏幕尺寸限制处剪切返回的行。当然,如果你决心砍掉 120 列,你可以:ag --color <pattern> |sed -E "s/(.{120}).*$//"
这最后一个选项不会阻止在颜色转义序列的中间进行斩波的可能性;如果你真的很顽固,你可以修改 sed 搜索模式来忽略颜色转义序列——已经在 SO 上回答了。也就是说,考虑到上面选项 1 的简单性和正确性,我看不到这样做的目的。
非常奇怪,记录的 --print-long-lines
实际上什么也没做,但是有一个工作开关: -W NUM / --width NUM
根本没有记录。参见 https://github.com/ggreer/the_silver_searcher/pull/720
ag --width 400 string dir/
# In .bash_aliases (s is for short)
alias ags='ag --width 400'
忽略超过 400 个字符的行。