例如
我有一个ruby脚本
puts "something will be inserted at the EOF"
保存此脚本后。 脚本内容应该是:
puts "something will be inserted at the EOF"
# something will be inserted at the EOF
如果我更改输出字符串它将替换旧行
最后,我的连线作品
function Rb_append_output()
augroup RbAppendOutput
autocmd!
" strip the old comments
autocmd! BufWritePre <buffer> g/#=>/,$ d
" append the script's output at EOF
autocmd! BufWritePost <buffer> $r ! ruby % | sed 's/^/\#=> /'
augroup END
echom "Ruby Append Output Active!"
endfunction
感谢
答案 0 :(得分:4)
您可以通过
在外部shell中执行当前缓冲区:! %
%
代表当前缓冲区名称。 :read
命令允许将文件或外部命令中的内容添加到缓冲区中。将两者结合起来,您将得到一个命令,将当前缓冲区执行的输出附加到缓冲区:
:$read !%
可以通过范围:'[,']
访问添加的范围,您可以在:substitute
命令之前插入注释前缀,该注释前缀基于您想要的示例。
要在每次缓冲区写入后触发此操作,请使用
:autocmd BufWritePost <buffer> ...
现在,您唯一要做的就是将各个部分放在一起,并实现删除以前插入的内容。 (如果您可以通过评论前缀识别这些内容,那就是:delete
命令,例如$;?^#\@!?+1,$delete
。)