我想一個字符串列表追加到一個文件中VimL 這裏是我的解決辦法代碼:如何將一個列表追加到vim中的文件中?
let lines = ["line1\n", "line2\n", "line3\n"]
call writefile(lines, "/tmp/tmpfile")
call system("cat /tmp/tmpfile >> file_to_append_to")
任何方式追加直接在vim文件? 應該有,但我無法找到任何
我想一個字符串列表追加到一個文件中VimL 這裏是我的解決辦法代碼:如何將一個列表追加到vim中的文件中?
let lines = ["line1\n", "line2\n", "line3\n"]
call writefile(lines, "/tmp/tmpfile")
call system("cat /tmp/tmpfile >> file_to_append_to")
任何方式追加直接在vim文件? 應該有,但我無法找到任何
使用readfile()
+ writefile()
嘗試。
如果你(如果你是絕對的把握有問題的文件與\n
結束或)使用Vim的7.3.150+,:
function AppendToFile(file, lines)
call writefile(readfile(a:file)+a:lines, a:file)
endfunction
對於Vim的年齡超過 7.3.150:
" lines must be a list without trailing newlines.
function AppendToFile(file, lines)
call writefile(readfile(a:file, 'b')+a:lines, a:file, 'b')
endfunction
" Version working with file *possibly* containing trailing newline
function AppendToFile(file, lines)
let fcontents=readfile(a:file, 'b')
if !empty(fcontents) && empty(fcontents[-1])
call remove(fcontents, -1)
endif
call writefile(fcontents+a:lines, a:file, 'b')
endfunction
這可能是有用的,但它的內容追加到當前文件。
創建一個數組從每個場中除去\n
。
:let lines = ["line1", "line2", "line3"]
並追加在結束當前文件:
:call append(line('$'), lines)
點上,如果在正確地理解問題 – sehe
的write
命令可用於整個當前緩衝區附加到文件:
:write >> append_file.txt
您可以限制它如果需要,可以在當前緩衝區中的行範圍內。例如,這將附加行1至8的append_file.txt端:
:1,8write >> append_file.txt
這是做事情的一個更好的和更簡單的方法。 – theCuriousOne
Vim的7.4.503 added support使用"a"
標誌追加到一個文件writefile
:
:call writefile(["foo"], "event.log", "a")
從:h writefile
:
writefile({list}, {fname} [, {flags}])
Write |List| {list} to file {fname}. Each list item is
separated with a NL. Each list item must be a String or
Number.
When {flags} contains "a" then append mode is used, lines are
appended to the file:
:call writefile(["foo"], "event.log", "a")
:call writefile(["bar"], "event.log", "a")
我對你最後一句話感到困惑。 ':h readfile()'表示沒有'b',「最後一行是否在NL中結束並不重要」。 (VIM 7.4.26) –
@ JustinM.Keyes更新至7.2.446版本(提交http://code.google.com/p/vim/source/detail?r=9577a28005e10fab0a0cada6c41b96c9a3e1bfe9)。請注意,該文件必須完全不包含換行符才能查看該錯誤('readfile()'返回的空列表)。另外請注意,它可能不是最後一個帶有bug的版本。 – ZyX
@ JustinM.Keyes它已在版本7.3.150(2011年4月1日)中修復。 AFAIR在寫這篇文章時,我剛剛使用過'readfile()',VAM和7.2 *版本的經驗,而且沒有重新檢查就很穩定。這是2010年7月4日,當我修改VAM時總是使用'readfile(,'b')',當時的最新版本是7.2.445(除了vim73分支的變化)。我絕對使用Gentoo(穩定版或'〜arch'),這意味着我或多或少有些過時的版本。雖然bug直到7.3.150,但並不重要。 – ZyX