FastNetMon

Saturday 29 September 2007

Сборка собственнной IDE для С/С++/Perl на основе gVim

Ну что же, слов сказано достаточно много, пора переходить к действиям.
Для начала я буду излагать одно из требований, предъявляемое к нашей среде разработки, а потом перейдём к их реализации.

#1.Табы, табы и ещё раз табы, не знаю как Вы, а я баз них просто не могу жить.

Это решение я нашёл в блоге http://allaboutvim.blogspot.com/2007/07/blog-post_22.html , за что огромное спасибо автору. Табы создаются в Виме командой :tabnew или через меню Файл -> OpenTab.

Поехали далее. Вот, допустим, у нас gvim ассоциирован с файлами типа .txt (.pl/.cpp/.c соответственно) и у нас уже есть один открытый экземпляр Вима с парой табов. Что же произойдёт, если мы откроем ещё файл, но не из вима, а посредством щелчка двойного на файле или вызова через консоль? Совершенно верно, запустится ещё один экземпляр вима, который захламит нам весь рабочий стол. Мы будем бороться с этим безобразием следующим образом:
gvim --remote-tab-silent /etc/vimrc
При таком способе вызова gvim`а, новая копия редактора создаваться не будет (конечно же, если уже открыт один экземляр), а будет открыт отдельный таб для данного файла, что нам и нужно. Но помнить такую длиннющую команду просто нереально, поэтому нам нужно будет сделать своего рода "алиас" к данной команде, назовём мы его tvim (т.е. tab+vim).
su 
cd /usr/bin
vim tvim

В этот файл вбиваем следующий код:
#!/usr/bin/perl
use strict;
use warnings;

my@m=`gvim --serverlist`;
my $q=@ARGV?"\"@ARGV\"":'';
(scalar @m)?
exec "gvim --servername TVIM --remote-tab-silent $q":
exec "gvim --servername TVIM $q";

Сохраняем файл, ставим флаг исполнения: chmod +x tvim и на этом работа со скриптом закончена.


Если Вы немного знакомы с параметрами командной строки gVim`а, то, наверное, догадались, что будет делать данный скрипт, а делает он следующее - проверяет наличие уже загруженной копии редактора и в случае, если проверка увенчалась успехом открывает файл отдельном табе, вместо создания ещё одной копии редактора.

Далее нам нужно будет произвести интеграцию данного решения в КДЕ (если кто-л. опишет, как сделать подобное в Гноме буду благодарен). Во-первых нужно будет связать файлы .pl, .c и .cpp с нашим "новым" редактором tvim. Для этого щёлкаем на файле каждого из представленных типов правой кнопкой, выбираем "Открыть в", а потом "Другое приложение"; в верхней строке вписываем tvim и ставим галочку "Запомнить связь с приложением для этого файла" и щёлкаем ОК. После данной операции все файлы указанных расширений будут открываться в tvim.

Далее вопрос уже скорее косметического характера, а именно появление на десяток секунд окошка с названием tvim в панели задач, которое лично меня просто дико раздражает и создаёт впечатление, что программа ещё грузится, хотя это не так. Для борьбы с данной напастью открываем Центр управления KDE, там выбираем вкладку "Внешний вид и темы", потом "Запуск отчета" и убираем галочку "Уведомление на панели задач", а также я бы советовал поставить поле Курсор занятости в положение "Пассивный курсор занятости" с нулевым временем индикации.

Ну вот и всё) Теперь попробуйте открыть несколько файлов, например .cpp, и последить, как они будут открываться. В итоге этих манипуляций поулчаем нечто подобное вот этому:

3 comments :

  1. Спасибо за новост

    ReplyDelete
  2. Hello!
    You may probably be very interested to know how one can make real money on investments.
    There is no initial capital needed.
    You may commense to get income with a money that usually is spent
    for daily food, that's 20-100 dollars.
    I have been participating in one project for several years,
    and I'll be glad to share my secrets at my blog.

    Please visit blog and send me private message to get the info.

    P.S. I make 1000-2000 per daily now.

    http://theblogmoney.com

    ReplyDelete
  3. Лично я так очень давно юзаю женьку (www.geany.org), особенно удобен для разработки на скриптовых языках, и как редактор и интегратор любых проектов. Мощная вещь и довольно простая :)
    А за статью пасибки! Пожалуй попробую, не знал что есть такая фишка, описанная в статье

    ReplyDelete

Note: only a member of this blog may post a comment.