【发布时间】:2015-12-26 22:47:00
【问题描述】:
假设我有这个缓冲区:
a
b
c
(
1
2
3
)
@
#
$
我想在 vimscript 中获取括号之间的行的内容。
/(\n\(.\n\)*)
突出显示我想要的。但我无法通过以下方式获得此结果:
let pattern = '(\n\(.\n\)*)'
match(getline(1, '$'), pattern)
我尝试了很多东西,例如:
match(join(getline(1,'$'), '\n'), pattern)
,甚至是模式的双引号,但没有任何效果......有什么想法吗?
(我的目标不是使 match() 有效,而只是将结果从缓冲区获取到 vimscript)
【问题讨论】:
-
或许,
let pattern = '(\n\(.\n\)*)'? -
你说得对,已编辑。
-
在我看来您正在寻找
(\n\(.\{-}\))。 -
仅供参考,有多行正则表达式原子。所以你可能想要
'(\(\_.\{-}\)) -
我尝试了 'help /\_',但我认为 '\_' 在列出的字符之前才可用。很高兴知道它不是!