14 января 2009 г.

Цветные diff'ы и less

Можно сделать работу с кодом в консоли более удобной, если раскрасить diff'ы. Это сделает текст более наглядным, а значит, упростит работу и увеличит производительность :)

Для этого нужно установить в системе пакет colordiff. После установки можно пользоваться командой colordiff точно так же, как и обычным diff'ом:

colordiff file1 file2

или использовать пайпы

diff file1 file2 | colordiff


Либо просто прописать алиас в .bashrc, если кого устраивает такой вариант:

alias diff=colordiff.


Тем, кто работает с CVS или SVN можно прописать в .bashrc или .profile следующие функции:

# color diffs for CVS
function cvsdiff () {
  if [ "$1" != "" ]; then
    cvs diff $@ | colordiff;
  else
    cvs diff | colordiff;
  fi
}

# color diffs for SVN
function svndiff () {
  if [ "$1" != "" ]; then
    svn diff $@ | colordiff;
  else
    svn diff | colordiff;
  fi
}


Настройка colordiff осуществляется через файл ~/.colordiffrc (настройки по умолчанию находятся в /etc/colordiffrc).

Чтобы использовать новые возможности вместе с командой less нужно заставить less понимать коды цветов. Для этого существует ключ -R:

colordiff file1 file2 | less -R


Для того, чтобы этот ключ использовался по умолчанию, нужно указать его в переменной окружения LESS:

export LESS="-R"


Вот и все.

Подсмотрено у drupal.org и rha7dotcom, а также в man colordiff.