我正在使用 vim 分析日志文件,格式如下
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
因为大多数时候我并不关心日期和时间。我想隐藏它们并只关注名称和日志文本列(以节省一些屏幕空间)。由于前三列始终占据一行中的前 35 个字母。有没有办法让vim不显示每行的前35个字母?
答案1
您询问如何隐藏第一个字母,而不是删除它们或将它们滚动到看不见的地方 - 所以这里是如何实际隐藏它们:
使用 hide 隐藏 vim 中的文本
您可以使用匹配,结合语法高亮和隐藏功能实际上不显示行内匹配的字符。
要隐藏每行的前 25 个字符:
:syn match Concealed '^.\{25\}' conceal
:set conceallevel=2
要仅隐藏带有日期标点符号的行:
:syn match Concealed '^....-..-.. ..:..:..\..... ' conceal
取消隐藏:
:syn clear Concealed
:set conceallevel=0
通常看起来像这样:
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
执行前两个命令后将如下所示:
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
PID Name LogText
另请参阅 - 内部
vim
:help :syn-match
help :syn-conceal
help 'conceallevel'
help 'concealcursor'
(如果它的行为不是这样,请告诉我 - 可能还有一些我不知道的设置 - 我会让它工作。)
答案2
答案3
我认为更符合你正在寻找的是水平滚动。
Z
是水平滚动命令键,后跟向左或向右箭头键移动的方向。
首先:set nowrap
禁用换行。然后按z、35、→滚动 35 个空格。
答案4
有一个易于记忆的解决方案,无需修改缓冲区或文件。将光标放在L
要查看的文件部分的第一个字符(在您的示例中)上,然后键入
:set nowrap
zs
该zs
命令将设置 vi,使光标处的字符出现在屏幕的第一列。确保您没有输入:set nosol
配置文件。
该g$
命令会将光标移动到最后一个可见列。
该g0
命令会将光标移回到第一个可见列,即包含 L 的列。
如果任意键将光标向左或向右移动到可见列之外,则可见窗口将移动。