在vimrc函数中的错误字符

8
我是一个有用的助手,可以为您进行翻译。以下是需要翻译的内容:

我试图运行位于我的vimrc中的函数,以在php类中插入依赖项。
该脚本必须输入参数类型提示到我的类构造函数中,并将此参数的结果分配给本地类的属性。
我正在使用Linux,并在一些帖子中发现这些出现在函数中的字符不适用于Linux。但是适用于Mac。

该函数:

function! AddDependency()
    let dependency = input('Var Name: ')
    let namespace = input('Class Path: ')

    let segments = split(namespace, '\')
    let typehint = segments[-1]

    exec 'normal gg/construct^M:H^Mf)i, ' . typehint . ' $' . dependency . '^[/}^>O$this->^[a' . dependency . ' = $' . dependency . ';^[?{^MkOprotected $' . dependency . ';^M^[?{^MOuse ' . namespace . ';^M^['

    " Remove opening comma if there is only one dependency
    exec 'normal :%s/(, /(/g'

endfunction

当我尝试运行此函数时,出现以下错误:
Error detected while processing function AddDependency:
line   10:
E115: Missing quote: 'normal :%s/(, /(/g
E15: Invalid expression: 'normal :%s/(, /(/g
Press ENTER or type command to continue

这些特殊字符是什么?如何解决这个问题,是否有相关的参考资料可以学习?感谢您的帮助。

顺便说一句:你不需要使用 exec 'normal :%s/(, /(/g',只需写 %s/(, /(/g 即可。 - lcd047
2
我不建议在文档中放置 ^M^[。它们通常不能实现你想要的效果。我建议将它们更改为相应的键符号 <CR><ESC> - FDinoff
1
@RafaelSoufraz 你应该在 vim 中输入那个。 - FDinoff
好的。谢谢。它帮了我很多。 - Rafael Soufraz
1
“^M” 应该以特殊方式输入,而不是作为两个单独的字符!按下 Ctrl-V-M(即先按下 Ctrl-V,然后再按下 Ctrl-M,但整个时间都要保持 Ctrl 键按下)或者 Ctrl-V 然后按下 Enter。对于 “^[”,同样按下 Ctrl-V-[ 或者 Ctrl-V 然后 <Esc> - Robert Mikes
显示剩余5条评论
2个回答

1
代替

exec 'normal :%s/(, /(/g'

你应该只是做

:%s/(, /(/g

除了修复 ^M^[ 问题,这应该解决您的问题。


-1
let segments = split(namespace, '\')

在我看来,这个反斜杠后面似乎缺少了一些字符。


1
不,反斜杠在单引号内没有特殊含义。请参阅:help expr-' - lcd047

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接