繁体   English   中英

以编程方式执行vim命令?

[英]Programmatically execute vim commands?

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

  • 使用沙盒.vimrc文件启动vim
  • 按我
  • 按选项卡
  • 按esc
  • 按:w test_out
  • 断言test_out包含''

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

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

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

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

使用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 虽然这是一个非常奇怪的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM