Vimscript正则表达式空行

时间:2014-08-22 03:13:07

标签: regex vim

所以我正在学习Vimscript和Regex。我正在尝试检测当前行是否为空。空是指""" "(任意数量的空格/制表符):

function! IsCurrentLineEmpty()
    return IsLineEmpty(getline('.'))
endfu

function! IsLineEmpty(line) // returns 1 if the line is empty, 0 otherwise
    if match(a:line, "^\s*$") != -1 // also tried \s+ instead of \s*
        return 1
    endif
endfu

如果我将光标放在空行或空格/制表符上,IsCurrentLineEmpty总是返回0

我尝试了其他正则表达式,例如^[ \t]+|[ \t]+$\s\t\s而不是' \t'),但没有一个正常工作。

任何帮助将不胜感激!感谢。

1 个答案:

答案 0 :(得分:3)

正如@vexe所指出的,你只需要逃避反斜杠。但您也可以简化您的功能:

function! IsLineEmpty(line)
    return match(a:line, "^\\s*$") != -1
endfu

另一种解决方案是使用单引号而不是双引号:

return match(a:line, '^\s*$') != -1

另一个解决方案是使用Vim的正则表达式匹配运算符:

return line =~ '^\s*$'

或者,您可以测试该行是否包含任何非空白字符:

return line !~ '[^\s]'