我正在使用 vim 分析日志文件,格式如下
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
因为大多数时候我不关心日期和时间。我想隐藏它们,只关注 Name 和 LogText 列(以节省一些屏幕空间)。因为前三列总是占据一行中的前 35 个字母。有没有办法让 vim 不显示每行的前 35 个字母?
使用 vim 的过滤功能。跑:
:%!cut -b36-
Run Code Online (Sandbox Code Playgroud)
通过cut命令运行缓冲区的内容,仅保留字节 36 及以后的字节。%意味着运行整个缓冲区并用输出替换其内容,然后!是过滤器命令,该行的其余部分作为要运行的程序。这不会修改底层文件,除非您将缓冲区保存在顶部。
要获取原始未修剪的缓冲区,您可以使用:e,前提是它由真实文件支持。
您询问了如何隐藏第一个字母,而不是删除它们,或者将它们滚动到视线之外 - 所以这里是如何真正隐藏它们:
您可以使用匹配,结合语法高亮和隐藏功能实际上不在行内显示匹配的字符。
隐藏每行的前 25 个字符:
:syn match Concealed '^.\{25\}' conceal
:set conceallevel=2
Run Code Online (Sandbox Code Playgroud)
要仅隐藏带有日期标点符号的行:
:syn match Concealed '^....-..-.. ..:..:..\..... ' conceal
Run Code Online (Sandbox Code Playgroud)
取消隐藏:
:syn clear Concealed
:set conceallevel=0
Run Code Online (Sandbox Code Playgroud)
通常看起来像这样:
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
Run Code Online (Sandbox Code Playgroud)
执行前两个命令后将如下所示:
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
Run Code Online (Sandbox Code Playgroud)
vim:help :syn-matchhelp :syn-concealhelp 'conceallevel'help 'concealcursor'
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |