如何将 showconsolefont 的屏幕显示输出复制到文件?

如何将 showconsolefont 的屏幕显示输出复制到文件?

有没有简单的方法来捕获返回的字符showconsolefont

Lubuntu 18.04.4

我是 Linux 新手,但在 Unixish 环境(macOS)方面有一点经验。

我正在控制台中使用该showconsolefont命令,我想访问它返回的一些字符。当我showconsolefont在控制台中运行时,屏幕上会显示 512 个唯一字形的分组列表。

如果我尝试showconsolefont从 GUI 终端运行,我会收到错误“无法获取指向控制台的文件描述符。”screen即使是从控制台运行,也是如此。

如果我将输出发送到一个文件showconsolefont >> allglyphs.txt,当我打开该文件时,我会得到一个重复的 64 个字形列表(我曾尝试用 less、cat 和 vim 打开该文件。)

我曾尝试计算返回字符的偏移量,并使用 ALT 手动输入它们。四个字母的键代码,它适用于 ascii 字符,但是当我得到特殊字符时它不会翻译,我猜有一些映射正在进行所以偏移量不连续。

答案1

工具法则: “如果你手里只有一把锤子,那所有东西看起来都像钉子”

我正在为我自己的问题提供答案,但我不会将其标记为已接受,因为这是一个棘手的拼凑物,甚至连其作者都不喜欢。我希望有人能提供更好的解决方案;也许是一些 perl 魔法或 awk 单行代码?

让我们从这个有点相关的知识开始:https://unix.stackexchange.com/a/331317似乎有一个名为的工具getunimap可以返回字符映射列表。遗憾的是,我的发行版中没有这个工具,而且我无法在包管理器中找到它。我尝试克隆并构建源代码,但由于缺少依赖项而失败,并且我不想花费太多时间尝试使构建工作。

getunimap替换的工具setfont不返回映射的实际字符,只返回等效的 unicode 代码点。调用setfont -ou chars.txt将返回此表。

输入我的锤子;vim。

这是技巧,vim 允许你手动输入 unicode 字符然后按C-v“u”和四个数字。例如,在插入模式下输入C-v u0056会插入字母 W。问题是(至少在我粗略的研究中)您无法粘贴值,需要手动输入。该怎么办?此C-v模式基本上只是接受文字键盘输入并将其放入当前缓冲区...如果我们创建一个宏来为我们输入怎么办?我们需要什么?进入插入模式,,,C-vu四个数字...就是这样,对吧?让我们试一试!

首先让我们清理一下文本

chars.txt在 vim 中打开。
使用 进入可视块模式 使用C-v
选择到文件末尾G
选择第一列和空格 使用
删除选择以x
gv重新选择之前选择的文本
仅突出显示"U"
~以切换大小写
将光标移动到+字符上
C-v以重新进入可视块模式
G以移动到末尾缓冲区
x以删除+字符

创建 unicode 插入按键

0移至行首
重新访问我们的老朋友C-vG
I进入插入模式
i在运行宏时
C-v输入插入 再次进​​入插入文字模式在当前行
C-v插入文字退出插入模式 现在所有行看起来都应该像其中磅号是一个数字。C-v
Esc
i^vu####

执行所有击键

qq开始录制宏
0移动行首 将
"py$当前行拉入 p 寄存器
@p将 p 寄存器的内容作为按键执行
esc退出插入模式
l移动字符
d$删除宏
j移至下一行
q停止录制
1000@q在所有行上播放宏

我第一次这样做的时候,感觉就像是《夺宝奇兵》中那样。第一行结果为空。结果发现列表中的第一个字符是空格,所以看起来整个 p 宏都不起作用了。我想有时候你得走出虚空。

我们已经得到了控制台可以显示的所有字符的列表尽可能以最迂回的方式... 有一些重复的,:sort u似乎没什么用。算了。

相关内容