2013-05-28 7 views

Antwort

9

Zwei Dinge: Vim intern speichert null Bytes (das heißt [email protected]) als <NL> == CTRL-J aus Implementierungsgründen (der Text als C-Strings gespeichert, die nullterminierte sind).

Darüber hinaus fügt die append() Funktion nur mehrere Zeilen ein, wenn eine Liste von Textzeilen als zweites Argument übergeben wird. Ein einzelner String wird als eine Zeile eingefügt, und (wegen der Übersetzung) erscheinen die Zeilenumbrüche als [email protected].

Daher müssen Sie eine Liste übergeben, entweder durch eine Python-Liste erstellen, oder durch die split() Vim-Funktion mit Ihrem einzigen String in eine Liste zu machen:

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