vim - 我可以轻松让 vim 语法高亮 CUDA PTX 文件吗?
问题描述
VIM (8.1) 通过 vim81/syntax/cuda.vim 至少在 Debian/Devuan 上支持 CUDA 文件。但是 - PTX 文件没有这样的突出显示。
我的一个想法是尝试从 Godbolt 的代码库中提取一些东西——因为它们确实突出了他们的 PTX 输出。但我找不到他们的代码库中神奇之处。
那么 - 除了滚动我自己的语法文件之外,还有一种简单的方法可以在 vim 中突出显示 PTX 文件吗?
解决方案
(基于@talonmies 的建议的初步答案。)
PTX 被官方描述为:
带有指令操作码和操作数的汇编语言风格语法
所以它应该与基于 PTX 语法突出显示的任何用于组装的东西没有太大区别。
现在,汇编语言在语法方面有两种流行的变体:AT&T 风格和 Intel 风格;PTX 是 AT&T 风格。这意味着您需要仔细检查您的基本语法是仅适用于 Intel、仅适用于 AT&T 还是两者兼而有之。在第一种情况下 - 寻找其他东西;在第二种情况下,您需要更多的适应,而在第三种情况下则需要更少。
专注于 vim,您会在其中找到一个程序集语法文件/usr/share/vim/vim81/syntax/asm.vim
(确切的路径当然取决于您的安装和 vim 版本)。上面写着“GNU Assembler”,它的默认语法是 AT&T,所以希望就是这样。
您需要对其进行修改 - 尽管即使没有修改,它也可能已经可以很好地工作了。所以开始:
cd /usr/share/vim/vim81
cp syntax/asm.vim syntax/ptx.vim
然后使用sed syntax/ptx.vim
将current_syntax
值更改为 ptx。
最后,在 中filetype.vim
,复制加载程序集语法文件的行。请注意,有一个复杂的加载函数需要探索和调整(或删除)。
推荐阅读
- java - 如何使 Apache Camel Kafka 组件与仅通过 zookeper 公开的代理一起工作
- javascript - 使用 IO 操作时如何不让任务过度饱和 libuv
- python - 事件时间线——设置注释位置
- laravel - 正确创建 Laravel 包
- lua - 请帮我解决错误 main.lua:50:尝试索引全局“硬币”(零值)
- javascript - JS:将 PHP 时间转换为 JS 日期
- ruby-on-rails - 迁移将各种不相关的模型列从 Integer 更改为 Bigint 类型
- arrays - 评估平面列表中的 item.item.name
- javascript - 将 m3u8 视频文件加载为具有不同来源的 Blob
- prisma - prisma/codemods 不转换 findUnique