向后搜索字符串

时间:2014-11-06 17:59:03

标签: regex search vim

是否有人知道如何使用match()创建向后搜索字符串?

word1 word2 word3 word4
            ^

^ =光标位置)

我想在光标(word2)之前找到单词的开始和结束列。

我尝试了这个正则表达式没有成功:

match(getline('.'), '?\w\ze\s', col('.')-1)

?无法在字符串中工作以向后搜索

1 个答案:

答案 0 :(得分:2)

您将正常命令?与对字符串有效的函数match()混淆。您实际需要的是searchpos()函数,它在缓冲区中搜索某些模式并返回该位置。

let [start_line, start_col] = searchpos('\<\w\+\>', 'bn')
let [end_line, end_col] = searchpos('\<\w\+\>', 'bne')

标志意味着以下内容:

  • b向后
  • n不要移动光标
  • e使用匹配结束作为返回的位置

请参阅以下内容以获取更多信息:

:h search(
:h searchpos(