在.vim文件中编写Python时,为什么“\ n”会变成“^ @”?

时间:2013-05-28 11:45:16

标签: python vim vim-plugin

例如,这是我的功能:

function! Test()
python << EOF
import vim
str = "\n\n"
vim.command("let rs = append(line('$'), '%s')"%str)
EOF
endfunction

当我:call Test()时,我看到的是“^ @ ^ @” 为什么会发生这种情况?如何使用原点'\ n'?

1 个答案:

答案 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