加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读