Передать вывод diff в переменную - PullRequest
2 голосов
/ 16 февраля 2012

Я пытаюсь запустить diff между текущим буфером и его файлом сохранения. Поскольку я хочу выполнить некоторую обработку в выводе diff, мне нужна переменная, а не новый буфер. Я знаю, что один из способов сделать это с

w !diff % - > tmpfile
let myvar = system( cat tmpfile )

Есть ли более элегантный способ?

1 Ответ

0 голосов
/ 16 февраля 2012

Предполагая, что вы можете записать буфер, вы можете сделать что-то вроде

:let @a=system('diff ' . shellescape(expand('%')) . ' ' . shellescape(expand('%')) . '~')

например сравните buffer.txt с buffer.txt ~ и поместите результат в регистр a

В противном случае попробуйте

:let @a=""
:redir @A
:%w !diff - "%~" 
:redir END

В моем предварительном тесте это, похоже, не работает на Win32 GVIM. Возможно, вам придется пройти через временный файл, чтобы это работало

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...