代码之家  ›  专栏  ›  技术社区  ›  Ben Gartner

以编程方式执行vim命令?

  •  3
  • Ben Gartner  · 技术社区  · 16 年前

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

    • 按i
    • 按tab键
    • 按esc键
    • 按:w test\u out
    • 断言test\u out包含“”

    在vim的默认配置中,这将失败。但是,一旦我加上 set expandtab

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

    2 回复  |  直到 12 年前
        1
  •  5
  •   Miguel Ventura    16 年前

    你可以试试 vim -S <script in> 为了方便起见,正好相反 vim -w <script out> .

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

        2
  •  1
  •   msw    16 年前

    是否需要使用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 实际上是一个 . 尽管这是一个非常奇怪的方法。