将HTML格式化为JavaScript连接字符串

时间:2013-09-11 23:26:59

标签: vim

我今天下午在一本书中遇到了以下vimscript片段,看起来它真的很有用。不幸的是,我还没有完全开始工作,我希望有人可以告诉我我做错了什么。

 vmap <silent> ;h :s?^\(\s*\)+'\([^']\+\)',*\s*$?\1\2?g<CR>

当我在视觉模式中突出显示某些标记并点击; h 时,我收到以下错误:

Pattern not found: ^\(\s*\)+'\([^']\+\)',*\s*$

vimscript regexp方言有点奇怪,vimscript本身看起来有点异形。据我所知,这是一个错字。第一个&#39; +&#39;之后的一切有点神秘。我的理解是,这应该将视觉模式中的选择转换为引用版本:

 <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>

1 个答案:

答案 0 :(得分:1)

vim中的/^(.*)$/+'\1'/相当于

:%s/.*/+'&'/

看起来像是

 vmap <silent> ;h :s?^\(\s*\)+'\([^']\+\)',*\s*$?\1\2?g<CR>

正在尝试为当前行撤消它。

所以转换

 + '<div>'
 + '    <div class="header">stuff</div>'
 + '</div>'

进入

 <div>
      <div class="header">stuff</div>
 </div>

不是相反