正则表达式在vim中有效但在vim的ex模式下失败

时间:2018-06-04 20:52:45

标签: regex vim ex

我在脚本中使用vim的ex模式来对文本文件执行vim正则表达式和替换。

ex $NAME <<EOEX
    :%s/<.\{-}>//g
    :%s/\[.\{-}\]//g
    :%s/&#160;/ /g
    :%s/^Contents$
    :%s/^\d.*$
    :%s/ (.\{1,4\})//g
    :g/^$\n^$/d
    :x
EOEX

我遇到了正则表达式:%s/ ([^)]\{-}[^\d0-\d1000].\{-})//g(未显示)的问题。当我找到一个值大于1000的字符时,我用它来过滤掉括号及其内容。 当放入上面的ex命令时,这个表达式会删除所有括号和内容集,所以我不得不用以下方式调用它:

vim $NAME -c ':%s/ ([^)]\{-}[^\d0-\d1000].\{-})//g' -c ':wq'

工作正常。当有人使用-c选项给vim而不是ex模式的命令时,有没有人能够深入了解它的工作原理?

(旁边的问题:&lt;&lt;&#E; EOEX ...... EOEX&#39; 的语法是什么?我无法找到任何文档。 编辑:据我所知,&lt;&lt;&lt;&#E; EOEX ... EOEX&#39; 的使用是Here document和EOEX包装传递给ex $ NAME命令的字符串文字。就我而言,所识别的包装的名称(在我的例子中是EOEX)是任意的)

0 个答案:

没有答案
相关问题