我想要这句话:
My, sentence.
是这样的:
My,
sentence.
我的功能是:
function! ParseLine()
let line = getline(".")
echom line
let parsedLine = substitute(line, ",", "\v\\v\\0\\r\r\\n\r\\<cr>\<cr><cr>\\^M\r&\^@\\^@", "g")
call setline(".", parsedLine)
endfunction
运行此功能时得到的结果:
Myvv,^M^M^@^M<cr>^M<cr>^M^M,^@^@ sentence.
答案 0 :(得分:3)
最简单的方法:
function! ParseLine()
exec 's/,\s*/,\r/g'
endfunction
或者,如果您想先拨打substitute()
,请“设置”该行:
function! ParseLine()
let parsedLine = substitute(getline('.'), ',\s*', ',\n', "g")
let o = @o
let @o = parsedLine
normal! V"op
let @o=o
endfunction
答案 1 :(得分:2)
您尝试这样做的方式永远不会起作用,因为您无法在setline
函数中使用换行符。
如果您尝试在包含换行符的字符串上使用setline
,则会收到错误消息。但是,您可以使用execute "normal! ..."
命令执行此操作:
function! ParseLine()
execute "normal! 0f,a\n"
endfunction
应找到,
并在其后插入换行符,为您提供所需的结果。
请注意,您必须使用execute "normal! ..."
而不是normal! ...
,因为普通人不会理解\n
是一个特殊字符,您会得到:
My,\n Sentence