Программно выполнять команды vim? - PullRequest
3 голосов
/ 13 июня 2010

Меня интересует настройка среды TDD для разработки скриптов Vim и файлов rc. В качестве простого примера, скажем, я хочу, чтобы vim вставлял 8 пробелов при нажатии клавиши табуляции. Я бы настроил скрипт, который делал бы следующее:

  • Запустите vim с помощью изолированного файла .vimrc
  • нажмите I
  • нажмите вкладку
  • нажмите esc
  • нажмите: w test_out
  • утверждает, что test_out содержит ''

по умолчанию в конфигурации vim это не получится. Однако, как только я добавлю set expandtab в мой файл .vimrc, тест будет пройден.

Как программно выполнить эти команды? vim -c <commands> близко, но, похоже, работает только для команд ex mode. Какие-либо предложения? Кажется, этот вопрос полностью защищен от Google.

Ответы [ 2 ]

5 голосов
/ 13 июня 2010

Вы можете попробовать vim -S <script in> и, для вашего удобства, наоборот vim -w <script out>.

Для получения более подробной информации об этих параметрах обратитесь к документации VIM для -s и -w аргументы.

1 голос
/ 13 июня 2010

Требуется ли использование 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 .Хотя это очень странный подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...