vim 作为 journalctl 的寻呼机
Posted
技术标签:
【中文标题】vim 作为 journalctl 的寻呼机【英文标题】:vim as pager for journalctl 【发布时间】:2021-09-20 12:08:34 【问题描述】:我想使用 。有可能吗?如何实现?
我在fedora上,当我天真地打开journalctl时,它是一个默认寻呼机,我无法快速转到最后一行。
我已经尝试过在论坛上找到的PAGER="vim -" journalctl
,没有任何改变。
使用export SYSTEMD_PAGER=cat
有效地将cat 用作寻呼机,但我一直无法使用export SYSTEMD_PAGER=vim
。
你会如何在 vim 中阅读你的日记?
【问题讨论】:
我不会。 Vim 是一个文本编辑器。 @Pierre Vittet - 你没有告诉我尝试PAGER="vim -" journalctl
的结果。您也没有说明为什么您无法使用export SYSTEMD_PAGER=vim.
这两个命令的结果是使用默认分页器而不是使用 vim 作为分页器调用 journalctl。
【参考方案1】:
尝试管道到vim
:
journalctl -b | vim -
使用优先级过滤输出
通常,journalctl
会根据日志条目是错误、警告、信息等对它们进行颜色编码。这些颜色对应于优先级。此颜色编码不会出现在通过管道传输到 vim
的日志中。
搜索具有特定优先级的日志的一种简单方法是使用 journalctl 选项-p
:
journalctl -b -p 3 | vim -
其中3
对应于错误。
您可以使用此表来确定要使用的优先级。
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
或者,如果输出到外壳,日志将在那里用颜色编码:
journalctl -b -p 4 -n 10 --no-pager
在 Vim 中格式化 ANSI 转义码
Vim 需要一个插件来解释 ANSI 转义码。更多信息可以在下面的链接中找到。
你需要的文件可以在here(直接)找到。
在 shell 中,使用vim
打开下载的文件:
vim AnsiEsc.vba.gz
然后,在vim
中安装插件:
:so %
安装插件后可以退出vim
:
:q
颜色示例
设置环境变量并安装插件后,尝试查看颜色编码的日志。
从外壳,将颜色编码的日志通过管道传输到vim
:
journalctl -b -p 4 | vim -
来自vim
,激活插件格式化日志:
:AnsiEsc
现在您应该在 vim 中看到颜色编码的 systemd 日志。
问候,
参考文献
journalctl | Arch manual pages
ANSI escape code | Wikipedia
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
。)
AnsiEsc Manual | Dr Chip's Vim Page
vimball | vim.org
:so | Vim Online Help
% | Vim Online Help
【讨论】:
以上是关于vim 作为 journalctl 的寻呼机的主要内容,如果未能解决你的问题,请参考以下文章
如何在 `less` 中避免`Pattern not found` 消息和屏幕重绘(作为 Git 寻呼机)