Мое личное мнение о том, что с подобным клиппом инструментом очень трудно обращаться.Как упомянуто выше, я думаю, что самая сложная часть - это понять намерения пользователей при написании текста.Если вы уберете это и сможете добавить семантику к своим намерениям, ваша жизнь может стать намного проще!
Так что вместо живых предложений я предполагаю, что в качестве первого шага рабочий процесс последовательности ввода-вывода может бытьпроще тестировать и получать результаты.
Я думал о программировании обобщенного внешнего интерфейса vi, чтобы применить его ко всем видам редакторов / текстовых полей (например, pidgin).
Один изРезультатом этого мыслительного процесса является то, что язык ввода должен быть несколько регулярным (или максимально свободным от контекста).следовательно, ввод экземпляра vi может быть представлен конечным автоматом.Это не полностью доказано, а скорее смутное предположение!Очевидно, что нужно приложить больше усилий, чтобы команды повторения (например, 13j) не могли включить язык в контекстно-свободные грамматики.
Если язык ввода vi регулярный, вы можете получить возможность использовать ограниченную модель-проверка, чтобы вычислить последовательность переходов состояний в этом графе состояний, которые приводят к требуемому результату.Я думаю, что в настоящее время наиболее эффективными способами проверки ограниченных моделей являются контрпримеры и сведение проблемы к экземпляру sat (просто Google для этого).
Я хотел бы услышать ваше мнение по этому поводу, поэтому, пожалуйста, прокомментируйте иесли есть что-то еще, мы можем попытаться поговорить об этом.
edit
Я думаю, вы можете попытаться выполнить стандартную работу оптимизатора, как это делают компиляторы.
однако не такособенно макросы q[a-z]
@[a-z]
могут быть трудно найти и заменить.Я бы предположил, что это NP завершено.