Хорошо, вот мое решение (вроде):
Во-первых, я не смог сделать это в Qt Creator, его возможности регулярных выражений в данный момент кажутся не очень хорошими. Так что я использовал vim.
Я открыл все затронутые файлы как буферы vim, затем записал следующий макрос:
qa:%s/\v(#include\s+)@<!"([^"]*)"/tr(\0)/g<CR>:bn<CR>q
Это делает следующее:
qa // start recording into register "a"
%s/\v(#include\s+)@<!"([^"]*)"/tr(\0)/g // search and replace as specified
<CR> // (hit enter)
:bn // jump to the next buffer
<CR> // (hit enter)
q // end recording macro
Регулярное выражение - это vim-regex с \ v, что делает его более естественным (меньше экранирующего). Короче говоря, он использует отрицательный внешний вид, как я изначально хотел, с немного другим синтаксисом.
Теперь мне нужно было запустить этот макрос только для того количества буферов, которые у меня были открыты (в командном режиме):
78@a
Проблема (и именно поэтому это всего лишь «своего рода» решение) заключается в том, что всякий раз, когда vim встречает буфер, в котором происходит сбой регулярного выражения (т. Е. В файле нет строковых литералов), он прекращает повторять макрос. Я не мог найти, как это исправить. К счастью, у меня было всего несколько таких файлов, поэтому я смог вручную запустить команду, описанную выше, чтобы снова повторить макрос.