我已经提出了一个perl脚本,它输出一个模板来记录函数和结构,给出了我的C代码中函数/结构的定义。
要使用它,我会直观地选择结构的定义,将其粘贴并粘贴在原始定义的正上方,然后在此粘贴的结构上调用脚本。它将其替换为该结构的文档。
现在是否有办法可以避免粘贴?我正在寻找一种方法来调用一个shell命令,但是它的输出应该粘贴到文件中的其他位置,不一定在它上面。
IOW :'a,'b!perl~ / bin / document.pl 替换标记a和标记之间的文本,我想添加标记a上面的document.pl的输出。
答案 0 :(得分:0)
一种可能的解决方案是修改perl脚本,使其在最后输出其输入。然后你会得到理想的结果。
答案 1 :(得分:0)
如果您将zsh作为shell,则可以使用协同处理:
'a,'b!coproc perl ~/bin/document.pl ; tee >&p | cat <&p
要在文本之前获取输出(此命令将其放在之后),您应该使用稍微复杂的命令:
'a,'b!coproc perl ~/bin/document.pl ; tee >&p | cat <(<&p) -
独立于系统的解决方案,使用vim和临时缓冲区:
'a,'byank a | new | 0put a | $d | execute "%!perl ~/bin/document.pl" | %d a | bw! | 'a-1put a
答案 2 :(得分:0)
尝试这样的事情:
function! MyFunc() range
" Preserve the register.
let old_reg = @a
exec a:firstline.','.a:lastline.'yank a'
" Change to do what you need with register a.
" Insert output before a:firstline
exec (a:firstline - 1).'read !your magic with '.@a
" Restore the register
let @a = old_reg
endfunction
" :2,5MyOwn will process lines from 2 to 5 and insert the output before line 2
command! -bar -range -nargs=? MyOwn <line1>,<line2>call MyFunc()