如何使用vim脚本将文本附加到文件?
发布时间:2020-12-15 22:45:47 所属栏目:安全 来源:网络整理
导读:我想要一个函数将文本附加到 vim中的文件(而不是缓冲区).据我所知,没有appendfile().但是可以使用readfile()和writefile()模拟所需的功能: fu! TQ84_log (S) let l:f = readfile('my.log') call add(l:f,a:S) call writefile(l:f,'my.log')endfu 由于my.log
我想要一个函数将文本附加到
vim中的文件(而不是缓冲区).据我所知,没有appendfile().但是可以使用readfile()和writefile()模拟所需的功能:
fu! TQ84_log (S) let l:f = readfile('my.log') call add(l:f,a:S) call writefile(l:f,'my.log') endfu 由于my.log可能会变得非常大,所以当我想添加一行时,我宁愿不读写整个文件.所以,我想出了另一个“解决方案”: fu! TQ84_log (S) silent execute "!echo " . a:S . ">> my.log" endfu 这可以正常工作(在Windows上).但是,当我调用TQ84_log()时,该cmd.exe窗口会弹出很短的时间.这有点让人分心. 对我的问题有更好的解决方案吗? 解决方法
如果当前缓冲区中有一系列要追加到日志文件的行,那么
:[range]w >> my.log 完全符合你的要求. (好吧,也许不完全一样.例如,它有使my.log成为备用文件的副作用,如果你打算使用:e#或其他东西,它可能会搞砸你.) 如果你已经在变量中有了日志消息,那么你可以打开一个临时缓冲区,使用append()或:put将这些行添加到你的暂存缓冲区,然后:w>> my.log并关闭暂存缓冲区. :help special-buffers :help :put :help :w 这是一个完整的日志功能.还有改进的余地:如果你有拆分窗口,新的和:q的组合可能无法恢复布局,并且:放在一个空的缓冲区会留下你可能不想要的空白行. function! Mylog(message,file) new setlocal buftype=nofile bufhidden=hide noswapfile nobuflisted put=a:message execute 'w >>' a:file q endfun (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |