yak*_*ang 6 python vim vim-plugin
例如,这是我的功能:
function! Test()
python << EOF
import vim
str = "\n\n"
vim.command("let rs = append(line('$'), '%s')"%str)
EOF
endfunction
Run Code Online (Sandbox Code Playgroud)
当我:call Test()
,我看到的是"^ @ ^ @".
为什么会发生这种情况?如何使用原点'\n'?
两件事:由于实现原因,Vim在内部存储空字节(即CTRL-@
)为<NL>
== CTRL-J
(文本存储为C字符串,以空字符结尾).
此外,该append()
函数仅在传递文本行列表作为其第二个参数时插入多行.单个String将作为一行插入,并且(由于转换),换行符将显示为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
Run Code Online (Sandbox Code Playgroud)