12

Я обновил систему с Nagios 2 до Nagios 3, и теперь я сравниваю некоторые различия в старых и новых файлах конфигурации.

В конфигурационные файлы внесены существенные изменения, и я не хочу выполнять diff для всего файла, потому что vimdiff показывает мне слишком много несоответствующих различий и имеет проблемы с # комментариями в начале строк и т.д.

Могу ли я использовать vim или vimdiff-подобную функциональность для выполнения сравнения двух отдельных разделов в двух разных файлах?

Например, я хочу различать только строки, которые выглядят примерно так:

# Define a service to check the load on the local machine. 

define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Blah Blah
    check_command                   Blah Blah
    }

3 ответа3

15

Похоже, что linediff.vim может быть тем, что вы хотите: «Выполнить интерактивный анализ на двух блоках текста».

Вы указываете каждый блок (диапазон строк) с помощью его команды :Linediff (например, :4,10Linediff или сначала делаете визуальный выбор, затем :Linediff (который выглядит как :'<,'>LineDiff)). Диапазоны могут быть из одного файла / буфера или разных. После того как вы определили два диапазона, откроется новая вкладка с двумя новыми буферами в режиме сравнения (в разделении) для указанных диапазонов. Вы можете редактировать и :w в любом из этих буферов, чтобы обновить исходные диапазоны. Когда вы закончите :q из буферов различий и :LinediffReset чтобы избавиться от спецификаторов диапазона в исходных буферах.

Ответ Stackoverflow, в котором я впервые узнал о linediff.vim, также предлагает несколько сопоставлений. В других ответах на этот вопрос также упоминается нестандартное решение и другой плагин, который может решить эту же проблему.

6

Я не нашел действительно простого способа сделать это, но у меня был довольно хороший успех с плагином NrrwRgn (Узкая область), http://www.vim.org/scripts/script.php?script_id=3075. Это позволяет вам выбрать область буфера и открыть эту область в новом буфере. Вы можете редактировать этот новый буфер, и когда вы закрываете его, плагин автоматически копирует ваш отредактированный текст обратно в область, из которой он пришел в исходном файле. Вы также можете скопировать различные области одного или нескольких файлов в новые буферы, а затем изменить эти новые буферы. Вот как я обычно использую плагин - чтобы проверить различия между похожими функциями, определенными в одном файле.

В вашем случае вы можете открыть оба файла в Vim, затем использовать V чтобы выбрать интересующий раздел в первом файле, и набрать \nr чтобы скопировать этот раздел в новый буфер. Повторите для аналогичного раздела в другом файле. Затем в каждом из двух новых буферов выполните :diffthis .

-1

Как насчет spotdiff.vim (http://www.vim.org/scripts/script.php?script_id=5509), который я недавно опубликовал?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .