Как раскрасить дифференциал, цитируемый Маттом в Vim? - PullRequest
7 голосов
/ 10 ноября 2011

Как лучше всего раскрасить diff, цитируемый в Mutt, с использованием Vim?

Если я получаю diff в качестве вложения, я хочу прокомментировать некоторые строки, но при ответе Mutt добавляет кавычку (>), что хорошо для меня, но тогда это нарушает разность окраски в Vim.

Как добавить к текущему шаблону сравнения совпадение даже с первыми > символами?(Было бы лучше сопоставить больше ^[> ] шаблонов)

Пример сообщения в кавычках diff:

> @@ -52,22 +48,17 @@
> -msgid "foo is deprecated."
> +msgid "bar is deprecated."

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Я бы начал с написания собственного файла синтаксиса, скажем ~ / .vim / syntax / muttdiff.vim:

syn match quote "^>* "
syn match quotedDeletion "^>* *-.*" contains=quote
syn match quotedAddition "^>* *+.*" contains=quote

hi quotedDeletion ctermfg=red
hi quotedAddition ctermfg=green
hi quote ctermfg=white

И сделать исходный файл vim, если он редактирует Mutt-сообщение.

Это хорошее начало, если вы хотите узнать, как создать собственный файл синтаксиса для vim.

0 голосов
/ 28 декабря 2011

Я бы предложил установить indent_string из значения по умолчанию (">") в пустую строку, используя макрос . Пример с ключом ", r " границ:

macro index ,r ":set indent_string=\"\"<enter><reply>"

Вам нужно будет установить его обратно по умолчанию после команды. Так что-то вроде:

macro index ,r ":set indent_string=\"\"<enter><reply>:set indent_string=\"> \"<enter>"

(позаботьтесь о том, чтобы они не проверялись - просто угадайте синтаксис здесь.)

Но есть и другая проблема - vim обычно открывается в формате файла, установленном на "mail" или что-то в этом роде. Вы должны были бы установить его "diff" явно. Так что в Vim вам нужно:

:set filetype=diff
:syntax on

Может быть, другой макрос или что-то в этом роде. Я знаю, что это не идеально, но это как минимум ;-) Удачи.

...