设置包含特殊字符的Vi缩写

时间:2014-01-16 10:28:04

标签: vim vi

如何设置包含特殊字符的特定字词的缩写,例如“:,;”。等,例如,我想将std :: map的缩写设置为std :: map

:ab std::map std::map<string,int>

无效

2 个答案:

答案 0 :(得分:1)

缩写触发器文本有限制:它必须是 full-id end-id 非id 类型(基本上,哪些字符是关键字;有关详细信息,请参阅:help abbreviations。)

对于C / C ++文件类型,冒号:通常不属于'iskeyword' ,导致E474错误。由于不建议混淆该设置(它会影响导航,语法高亮等),您必须从缩写中删除/替换它:

:ab stdmap std::map<string,int>

答案 1 :(得分:0)

我在Using backslashes in vim abbreviations中提出的解决方案应该适合您的情况。您必须将测试getline('.')[col('.')-2]=='\'调整为getline('.')[:col('.')-2] =~ '.*std::$'(未经测试)

但是,老实说,你应该考虑使用代码片段引擎,而且还有很多。