vim 作为 journalctl 的寻呼机
vim as pager for journalctl
我想使用 vim 作为 journalctl 的寻呼机。这可能吗?如何实现?
我在fedora上,当我天真地打开journalctl时,它是一个默认的寻呼机,我无法快速转到最后一行。
我试过 PAGER="vim -" journalctl
在论坛上找到的,没有任何改变。
使用 export SYSTEMD_PAGER=cat
有效地使用 cat 作为寻呼机,但我一直无法使用 export SYSTEMD_PAGER=vim
。
您会如何在 vim 内阅读您的日记?
尝试管道连接到 vim
:
journalctl -b | vim -
使用优先级过滤输出
通常,journalctl
会根据日志条目是错误、警告、信息等对它们进行颜色编码。这些颜色对应于 优先级 。这种颜色编码不会出现在通过管道传输到 vim
.
的日志中
搜索具有特定优先级的日志的一种简单方法是使用 journalctl 选项 -p
:
journalctl -b -p 3 | vim -
其中 3
对应错误。
您可以使用此 table 来确定要使用的优先级。
Priority
Log Level
emerg
0
alert
1
crit
2
err
3
warning
4
notice
5
info
6
debug
7
有关详细信息,请参阅 journalctl 手册页中的 --priority=
选项。
在 Vim
中使用颜色编码
如果您仍想在 Vim 中查看颜色编码的日志,那是可以的。
其基础是 ANSI 转义码。没有必要了解任何关于 ANSI 转义码的知识。
但是,要让颜色起作用,我们需要解决两个问题:
- 指示 journalctl 输出 ANSI 转义码。
- 在 Vim 中格式化 ANSI 转义码。
指示 journalctl 输出 ANSI 转义码
journalctl 的手册页提到了一个环境变量,它将产生所需的输出。
在 shell:
中将 SYSTEMD_COLORS
环境变量设置为 true
export SYSTEMD_COLORS=true
您可以将此变量添加到您的 ~/.bashrc
中,使其永久化
现在,当您 运行 journalctl
时,您会注意到 vim
:
中的 ANSI 转义码
journalctl -b -p 4 | vim -
ANSI 转义码示例:
^[[0;1;38;5;185m
或者,如果输出到 shell,日志将在那里进行颜色编码:
journalctl -b -p 4 -n 10 --no-pager
在 Vim
中格式化 ANSI 转义码
Vim 需要一个插件来解释 ANSI 转义码。可以在下面的链接中找到更多信息。
可以找到您需要的文件here(直接)。
从shell,用vim
打开下载的文件:
vim AnsiEsc.vba.gz
然后,在 vim
内安装插件:
:so %
安装插件后可以退出vim
:
:q
颜色示例
设置环境变量并安装插件后,尝试查看彩色编码日志。
从 shell,将颜色编码的日志传输到 vim
:
journalctl -b -p 4 | vim -
来自 vim
,激活插件以格式化日志:
:AnsiEsc
现在您应该会在 vim 中看到彩色编码的 systemd 日志。
此致,
参考资料
journalctl | Arch manual pages
env, setenv, & export | Unix & Linux
bash: true or false | Stack Overflow
Permanently Setting Environmental Variables | DigitalOcean
Can colorized output be captured via shell redirect? | Stack Overflow
ANSI Color Codes in VIM | Stack Overflow
Introduction to Plugins | Vim Online Help
AnsiEsc Plugin | vim.org(过时AnsiEsc.vba.gz
)
AnsiEsc | Dr Chip's Vim Page(在此处查找最新的 AnsiEsc.vba.gz
。)
我想使用 vim 作为 journalctl 的寻呼机。这可能吗?如何实现?
我在fedora上,当我天真地打开journalctl时,它是一个默认的寻呼机,我无法快速转到最后一行。
我试过 PAGER="vim -" journalctl
在论坛上找到的,没有任何改变。
使用 export SYSTEMD_PAGER=cat
有效地使用 cat 作为寻呼机,但我一直无法使用 export SYSTEMD_PAGER=vim
。
您会如何在 vim 内阅读您的日记?
尝试管道连接到 vim
:
journalctl -b | vim -
使用优先级过滤输出
通常,journalctl
会根据日志条目是错误、警告、信息等对它们进行颜色编码。这些颜色对应于 优先级 。这种颜色编码不会出现在通过管道传输到 vim
.
搜索具有特定优先级的日志的一种简单方法是使用 journalctl 选项 -p
:
journalctl -b -p 3 | vim -
其中 3
对应错误。
您可以使用此 table 来确定要使用的优先级。
Priority | Log Level |
---|---|
emerg | 0 |
alert | 1 |
crit | 2 |
err | 3 |
warning | 4 |
notice | 5 |
info | 6 |
debug | 7 |
有关详细信息,请参阅 journalctl 手册页中的 --priority=
选项。
在 Vim
中使用颜色编码如果您仍想在 Vim 中查看颜色编码的日志,那是可以的。
其基础是 ANSI 转义码。没有必要了解任何关于 ANSI 转义码的知识。
但是,要让颜色起作用,我们需要解决两个问题:
- 指示 journalctl 输出 ANSI 转义码。
- 在 Vim 中格式化 ANSI 转义码。
指示 journalctl 输出 ANSI 转义码
journalctl 的手册页提到了一个环境变量,它将产生所需的输出。
在 shell:
中将SYSTEMD_COLORS
环境变量设置为 true
export SYSTEMD_COLORS=true
您可以将此变量添加到您的 ~/.bashrc
现在,当您 运行 journalctl
时,您会注意到 vim
:
journalctl -b -p 4 | vim -
ANSI 转义码示例:
^[[0;1;38;5;185m
或者,如果输出到 shell,日志将在那里进行颜色编码:
journalctl -b -p 4 -n 10 --no-pager
在 Vim
中格式化 ANSI 转义码Vim 需要一个插件来解释 ANSI 转义码。可以在下面的链接中找到更多信息。
可以找到您需要的文件here(直接)。
从shell,用vim
打开下载的文件:
vim AnsiEsc.vba.gz
然后,在 vim
内安装插件:
:so %
安装插件后可以退出vim
:
:q
颜色示例
设置环境变量并安装插件后,尝试查看彩色编码日志。
从 shell,将颜色编码的日志传输到 vim
:
journalctl -b -p 4 | vim -
来自 vim
,激活插件以格式化日志:
:AnsiEsc
现在您应该会在 vim 中看到彩色编码的 systemd 日志。
此致,
参考资料
journalctl | Arch manual pages
env, setenv, & export | Unix & Linux
bash: true or false | Stack Overflow
Permanently Setting Environmental Variables | DigitalOcean
Can colorized output be captured via shell redirect? | Stack Overflow
ANSI Color Codes in VIM | Stack Overflow
Introduction to Plugins | Vim Online Help
AnsiEsc Plugin | vim.org(过时AnsiEsc.vba.gz
)
AnsiEsc | Dr Chip's Vim Page(在此处查找最新的 AnsiEsc.vba.gz
。)