Vim errorformat строка, чтобы показать сообщение в QuickFix, удалив его часть - PullRequest
0 голосов
/ 15 октября 2018

Я пишу строку errorformat, и она работает по большей части.Моя проблема в том, что у меня есть такие строки как makeprg output:

Some text I want to show in the QuickFix window^M

Да, строка заканчивается ложным символом ^M, который я хочу удалить.Итак, что я хочу в моем окне QuickFix, это без символа ^M:

|| Some text I want to show in the QuickFix window

, но вместо этого у меня есть:

|| Some text I want to show in the QuickFix window^M

Пока это актуальночасть моего errorformat:

set errorformat=%+GSome text%m

Я безуспешно проверил что-то вроде этого:

set errorformat=%+GSome text%m%-G^M%.%#

, но выдает ошибку (не из ^M, которыйявляется буквенным символом control-M, а не каретой, за которой следует буква M).

Очевидно, что решение не использует %G, но я в замешательстве.

Как я могу удалитьсимвол конца строки из строки здесь?А также, удаление начального || было бы плюсом, но я думаю, что это невозможно сделать в Vim.

Заранее спасибо!

Отредактировано, чтобы сделать более понятным, как вводтекст выглядит

1 Ответ

0 голосов
/ 17 октября 2018

Ну, оказывается, я нашел решение, возможно, не очень хорошее, но оно работает, используя метод проб и ошибок.

set errorformat=%\\(Some Text%*[^.]).%\\)%\\@=%m

То есть решение использует выражения Vim pattern (regex)в errorformat, который выглядит довольно загадочно, но работает вместе с %* для сопоставления неизвестного текста в остальной части строки

В решении используется \@=, сопоставление нулевой ширины, и требуетсякакой-то терминатор для строки, который появляется перед символом ^M, который я хочу игнорировать, и какой-то текст, появляющийся где-то в строке, чтобы соответствовать этой строке, а не другим.

Возможно, есть гораздо лучшее решение, но это лучшее, что я мог сделать сам.

...