2014-02-27 141 views
1

這裏是vim腳本x.vim:爲什麼這些字符串被評估爲不相等?

python << endpy 
import vim 
import time 
import os 
cb = vim.current.buffer 
bufferString = '\n'.join(cb[:]) 
with open(cb.name, "r") as currentFile: 
    fileString = currentFile.read() 
print bufferString 
print "=================" 
print fileString 
if bufferString != fileString: 
    print "File changed!" 
else: 
    print "Nothing changed!" 
endpy 

公開賽在vim和類型:so %的腳本,它打印出的文件和緩衝區,並根據蟒蛇,它們是不同的,但是目測,你可以看到他們明顯的平等。爲什麼?

回答

3

您已閱讀的文件可能在最後一行末尾有一個換行符。但是,從vim獲取線路並將它們與\n連接起來將在最後一行末尾有而不是有一個換行符。

+0

如果在vim中編輯文件(這看起來很可能),它幾乎肯定會在最後有一個新行,因爲vim在默認情況下放置一個。 – FDinoff

+0

是的,這似乎是答案。嘗試在兩條「print」行中添加'+'#''。或者打印出'len(fileString)'和'len(bufferString)'。 – benjifisher

相關問題