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

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'?

Ing*_*kat 9

两件事:由于实现原因,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)