2014-05-24 242 views
2

命令这个样子的如何通过执行外部命令来执行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 ,在行末。它工作正常,但没有返回标记的立场

回答

3

有两个问题:

  1. :read ! ...命令不能与其他的Vim串接命令;它将全部作为要执行的命令。这会导致shell错误。见:help :bar。您可以通过与:execute打包来修复此问题。
  2. 's正常模式命令;要在命令行中使用它,您需要以前缀:normal Ex命令为前缀。
autocmd! BufWritePost <buffer> mark s | execute "$r ! ruby % | sed 's/^/\#=> /' " | normal! 's