我正在编写一个函数来缩进Vim中字符串中的所有行。我正在尝试使用substitute
替换n
个空格的所有行首:
function! Indent(str, n)
return substitute(a:str, '\v^', repeat(' ', a:n), 'g')
endfunction
尽管我使用了g
标志,但这只会缩进第一行。我也尝试使用\v\_^
,结果相同。
Indent("To be or not to be\nThat is the question", 2)
# => " To be or not to be\n That is the question" (DESIRED OUTPUT)
# => " To be or not to be\nThat is the question" (ACTUAL OUTPUT)
如何修改我的正则表达式以获得所需的输出?
答案 0 :(得分:1)
您可以通过拆分和加入来轻松完成此操作。
function! Indent(str, n)
let l:sep = repeat(' ', a:n)
return l:sep . join(split(a:str, "\n"), "\n".l:sep)
endfunction
答案 1 :(得分:1)
这应该做:
substitute(a:str,'\n\|^','&'.repeat(' ', a:n) ,'g')