以编程方式执行vim命令?

时间:2010-06-13 17:39:02

标签: vim tdd

我对设置用于开发Vim脚本和rc文件的TDD环境感兴趣。举个简单的例子,假设我想按下tab键时vim插入8个空格。我会设置一个执行以下操作的脚本:

  • 使用沙盒.vimrc文件启动vim
  • 按i
  • 按标签
  • 按esc
  • 按:w test_out
  • 断言test_out包含''

通过vim中的默认配置,这将失败。但是,一旦我将set expandtab添加到我的.vimrc文件中,测试就会通过。

如何以编程方式发出这些命令? vim -c <commands>很接近,但似乎只适用于ex模式命令。有什么建议?这个问题似乎完全是谷歌证明。

2 个答案:

答案 0 :(得分:5)

您可以尝试vim -S <script in>,为了方便起见,请尝试相反的vim -w <script out>

有关这些选项的更多详细信息,请查看VIM的-s-w参数文档。

答案 1 :(得分:1)

使用vim是一项要求吗?如果不是你正在使用错误的工具,那么sed可能更合适。

但如果你必须,你可以用vim做到这一点,只需称它为ex

#!/bin/sh
# insert a tab as the first character of test_out
ex test_out <<EOF
s/^/^I/
wq
EOF

if [ `od -c test_out | awk 'NR == 1 {print $2}'` != '\t' ] ; then
    echo "assertion failed"; exit 1;
fi

^I实际上是 Tab 。虽然这是一个非常奇怪的方法。