我发现自己编写了一个非常简单的从 OpenCL 错误代码到人类可读字符串的转换。大约 50 个不同的代码在头文件中定义如下:
...
#define CL_INVALID_CONTEXT -34
#define CL_INVALID_QUEUE_PROPERTIES -35
#define CL_INVALID_COMMAND_QUEUE -36
#define CL_INVALID_HOST_PTR -37
...
我使用专家复制/粘贴将所有这些放在一个巨大的开关/外壳中:
...
case CL_INVALID_CONTEXT:
return "CL_INVALID_CONTEXT";
case CL_INVALID_QUEUE_PROPERTIES:
return "CL_INVALID_QUEUE_PROPERTIES";
case CL_INVALID_COMMAND_QUEUE:
return "CL_INVALID_COMMAND_QUEUE";
case CL_INVALID_HOST_PTR:
return "CL_INVALID_HOST_PTR";
...
自从我最近开始使用 Vim 以来,我认为可能有一种方法可以使用 Linux 命令工具和 Vim 以更有效的方式执行此操作。这里有一篇类似的帖子,有人声称是用 Emacs 完成的。关于如何避免下次在类似任务上浪费 15 分钟的任何想法?
(我知道 oclErrorSting() 可能存在,但为了一般性,让我们忽略它!)
最佳答案
您可以在 Vim 中通过搜索和替换来完成此操作:
%s/#define \(\w\+\).*/case \1:^M return "\1";/g
在输出中获取 ^M
的技巧是键入 CTRL-V
然后在要放置换行符的地方输入 Enter
输出。
这将对整个文件进行替换。
这是通过搜索匹配整行并将其替换为您想要的文本来实现的。每个名称在搜索中被捕获到一个组中,这就是 \(\w\+\)
所做的,然后匹配的文本在替换中使用两次。
关于linux - 使用 Linux/Vim 将头文件或文本文件信息转换为代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16022115/