Vim动态替换文本(“。”=>“ - >”)

时间:2014-01-04 01:23:44

标签: php vim

我在php中有这个项目正在研究中,我发现输入 - > 来调用方法非常烦人。我想让vim为我做这份工作。我希望它用[^\s].替换->(非空格+点)。

另外,我的美元var前缀让我烦恼,我希望我可以用\s[a-z_] +我输入的下一个字母替换$(空格后跟低A到Z和下划线)。

a #=> $a
foo + bar # => $foo + $bar
this #=> $this
this.myMethod() #=> $this->myMethod()

当然,这应该只在php文件中发生。

有没有办法实现这一目标?可能比缩写更有趣的东西。

3 个答案:

答案 0 :(得分:0)

对于第一个问题:

inoremap . ->
你的.vimrc中的

就足够了。如果你想要它特定于php文件:

filetype on
autocmd FileType php inoremap . ->

至于第二种情况,我真的没有看到可以自动编写的方法。

答案 1 :(得分:0)

我不确定以这种方式处理您的源代码是否是个好主意,因为它可能会破坏您的代码,但是根据您的要求,此行执行您想要的两个替换:

%s/\v(\s|^)\ze[a-z_]/&$/g|%s/\./->/g

至少它适用于你给出的例子。

答案 2 :(得分:0)

虽然您可以使用:imap <expr>构建此类“条件重映射”,但我强烈建议不要这样做。

  • 你陈述的规则仍然过于简单化;第一个不允许您输入任何评论,例如Just a hack.(将转为Just a hack->)。您将花费更多时间(费力地)调整规则,或撤消/禁止自动转换,只是为了在这里和那里保存一次击键。

  • 想象一下你自己在另一个编辑器,调试器,同事的笔记本电脑。现在你依赖于你的自动转换方案,你看起来像个傻瓜!

对我来说,看起来你是来自不同的知识,仍然感受到初学者在未知地形中行走的痛苦。持之以恒;你很快就会克服它!