今天下午我在一本书中遇到了以下 vimscript 片段,它似乎真的很有用。不幸的是,我还没有完全让它工作,我希望有人能告诉我我做错了什么。
vmap <silent> ;h :s?^\(\s*\)+'\([^']\+\)',*\s*$?\1\2?g<CR>
当我在可视模式下突出显示某些标记并点击;h 时,我收到以下错误:
Pattern not found: ^\(\s*\)+'\([^']\+\)',*\s*$
vimscript regexp 方言有点奇怪,vimscript 本身似乎有点陌生。据我所知,有一个错字。第一个“+”之后的所有内容都有点神秘。我的理解是,这应该将可视模式下的选择转换为引用版本:
<div>
<div class="header">stuff</div>
</div>
至
+ '<div>'
+ ' <div class="header">stuff</div>'
+ '</div>'
在崇高我可以用以下表达式进行查找/替换:
/^(.*)$/+'\1'/
这使得 vimscript 版本看起来有点冗长。即便如此,我也希望能够在 vim 中做到这一点。
[编辑:事实证明上面的代码片段工作正常,只是没有按照我的想法做。我正在查看的文本列出了其中一对,而我看错了。见下文:]
vmap <silent> ;h :s?^\(\s*\)+'\([^']\+\)',*\s*$?\1\2?g<CR>
vmap <silent> ;q :s?^\(\s*\)\(.*\)\s*$?\1+'\2'?<CR>