有没有简单的方法来捕获返回的字符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-v
和u
四个数字...就是这样,对吧?让我们试一试!
首先让我们清理一下文本
chars.txt
在 vim 中打开。
使用 进入可视块模式 使用C-v
选择到文件末尾G
选择第一列和空格 使用
删除选择以x
gv
重新选择之前选择的文本
仅突出显示"U"
列
~
以切换大小写
将光标移动到+
字符上
C-v
以重新进入可视块模式
G
以移动到末尾缓冲区
x
以删除+
字符
创建 unicode 插入按键
0
移至行首
重新访问我们的老朋友C-v
,G
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
似乎没什么用。算了。