如何执行外部命令执行后的vim命令?

时间:2014-05-24 08:58:18

标签: vim

命令看起来像这样

autocmd! BufWritePost <buffer> mark s | $r ! ruby % | sed 's/^/\#=> /' | 's

在追加

之前,它会附加输出并将光标移动到原始位置

这是我得到的错误:

Error detected while processing BufWritePost Auto commands for "<buffer=1>":
E485: Can't read file /var/folders/fw/045tt2q10zv1qkbfbw73y8c80000gn/T/vCDqw9b/7

如果删除| 's,则在行尾。它工作正常,但没有返回标记的位置

1 个答案:

答案 0 :(得分:3)

有两个问题:

  1. :read ! ...命令无法与其他Vim命令连接;它将 all 作为要执行的命令处理。这会导致shell错误。见:help :bar。您可以使用:execute
  2. 打包来解决此问题
  3. 's普通模式命令;要在命令行中使用它,您需要在:normal Ex命令前加上前缀。
  4. autocmd! BufWritePost <buffer> mark s | execute "$r ! ruby % | sed 's/^/\#=> /' " | normal! 's