我需要找到一种方法来执行/找到一个可以根据patern更改变量名称的vim脚本!
这是一个有助于帮助的答案 Changing Variable Names in Vim
它会检查wich类型是变量并添加特定前缀
例如:
char myvar
至char char_myvar
char *myvar
至char pointer_char_myvar
或者变量是函数的参数
f(char myvar)
至f(char param_char_myvar)
这种标记将由模式匹配
定义这个想法似乎用gd
转到变量定义,将其保存在寄存器中,然后在另外注册四个单词之前(因为在char *myvar
,*
计数就像一个单词并且我们需要足够的信息来知道它在一个函数中),检查patern匹配(检查类型,检查是否在函数或本地)然后添加标记。
此外如何将此脚本应用于所有变量?
但是我很难挫败。
任何帮助?
答案 0 :(得分:0)
这确实是一件非常愚蠢的事情。它甚至比系统匈牙利语更糟糕 - 在这个主题上检查Joel Spolsky的十年之久article/post。 (它可能会在你的环境中开眼界)
反正。在lh-cpp我有一些函数能够提取类型或告诉何时类型实际上是指针或const等。我还有解码函数签名的函数。它位于插件的autoload / lh / cpp目录中。它可能取决于lh-dev的其他功能。
然后你必须检测所有变量声明(universal-ctags或cscope将在这里帮助),然后重命名它们的所有出现次数。
老实说,你最好继续使用libclang来重构你的代码。
更准确地说,找到确切的函数并不简单,因为我的插件的这些部分没有记录:
echo lh#dev#c#function#_analyse_parameter('char *str')
将分解变量声明,echo lh#dev#c#types#is_pointer(lh#dev#c#function#_analyse_parameter('char *str').type)
对你来说,变量背后的类型是否实际上是一个指针。注意:它不支持每行char *s, c;
:echo lh#dev#c#function#get_prototype(linenr, 0)
将提取可以用lh#cpp#AnalysisLib_Function#AnalysePrototype(the_protoype)
分析的函数原型,在那里你将有函数返回类型,它的名字和列表其所有参数(类型,名称,以及其他信息)。lh#dev#get_variables()
函数,它返回ctags能够在一系列行中识别的所有局部变量 - 这需要我的lh-tags插件。