例如,这是我的功能:
function! Test()
python << EOF
import vim
str = "\n\n"
vim.command("let rs = append(line('$'), '%s')"%str)
EOF
endfunction
当我:call Test()
时,我看到的是“^ @ ^ @”
为什么会发生这种情况?如何使用原点'\ n'?
答案 0 :(得分:9)
两件事:出于实现原因,Vim在内部将 null 字节(即CTRL-@
)存储为<NL>
== CTRL-J
(文本存储为C字符串,以null结尾。)
此外,append()
函数仅在传递 List 文本行作为其第二个参数时插入多行。单个字符串将作为一行插入,并且(由于翻译),换行符将显示为CTRL-@
。
因此,您需要通过构建Python列表或使用split()
Vim函数将单个String转换为List来传递List:
function! Test()
python << EOF
import vim
str = "\n"
vim.command("let rs = append(line('$'), split('%s', '\\n', 1))"%str)
EOF
endfunction