【问题标题】:vim as pager for journalctlvim 作为 journalctl 的寻呼机
【发布时间】:2021-09-20 12:08:34
【问题描述】:

我想使用 vim 作为 journalctl 的寻呼机。有可能吗?如何实现?

我在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。

标签: linux vim pager


【解决方案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 转义码。

但是,要让颜色发挥作用,我们需要解决两个问题:

  1. 指示 journalctl 输出 ANSI 转义码。
  2. 在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 2022-11-18
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    相关资源
    最近更新 更多