h0rr0rr_drag0n 14.06.2010 22:34

VimИспользование VIm, как IDE для языка C.

Несмотря на утверждение, что Vim это всего лишь текстовый редактор и использовать его как IDE глупо, я довольно продолжительное время успешно использую Vim как IDE для языка C. В этом мне помогает набор удобных плагинов и периодически улучшаемый мною .vimrc.
К сожалению, я не встречал в Интернете статей, посвященных превращению Vim в IDE для C. Поэтому я решил написать свою :-).

По ссылке, можно прочитать об используемых мною плагинах, почитать мои комментарии к содержимому конфигурационного файла, посмотреть скринкаст, в котором я пытался показать как работают мои хоткеи, а также скачать и посмотреть мой .vimrc (комментарии на русском, UTF8). Рекомендуется читать статью и параллельно просматривать мой .vimrc - в комментариях написано то, что не вошло в статью, но может вызвать вопросы (например как просмотреть ман-страницу и как скакать в ней по ссылкам).


Тэги: Linux vim
+ 11 -
Похожие Поделиться

lockie 14.06.2010 23:24 #
> vimrc.tar.bz2
> Download (2 MB)
Был напуган.

Спасибо, хорошо написано. А скринкаст - вообще супер ^_^
vvlinux 15.06.2010 01:08 #
Все это конечно замечательно, но меня всегда интересовал один вопрос: как известно, любая уважающая себя IDE имеет хоть какой-нибудь дебагер, иначе это не IDE, а менструозный текстовый редактор. Так вот вопрос: как ты дебажишь в виме?
thebeetlebum 15.06.2010 01:41 #
gdb. пруф
vvlinux 15.06.2010 12:17 #
Gdb? Консольный дебагинг? Ты серъезно? Скажи, очень ли удобно каждый раз когда хочешь узнать значение переменной вводить ее имя? А если это класс, который содержит еще один класс, а тот в свою очередь содержит структуру с ...тью полями? Одно из полей структуры - массив целых чисел. И тебе нужно узнать не принял ли один из его елементов значение ноль. Твои действия. Пожалуйста, опиши их здесь, я хочу оценить масштабность этого геммороя.
vvlinux 15.06.2010 12:42 #
Вдогонку: скажи, пожалуйста, gdb имеет подсветку синтаксиса выполняемого кода? а редактирование на месте? Думаю что нет. И что мы получаем в итоге? Мощный текстовый редактор, но без возможности отладки и мощный дебагер, но с абсолютно никакими возможностями для редактирования. Находим ошибку в gdb, переключаемся в vim, находим (!) то самое место, испраляем ошибку и все по-новой. Боже, сколько ненужных, бесполезный и болезненых телодвижений ради того, чтобы быть Ъ!!! Зачем вы пытаетесь сделать из хорошего текстового редактора IDE?!
mutantcornholio 15.06.2010 12:50 #
а чё, в виме нет плагина для удобного дебага с помощью GDB? o_O
vvlinux 15.06.2010 13:56 #
Ты хочешь сказать, что дебажить что-то сложнее хелоуворлд с помощью консольного дебагера это то, к чему мы так стремились все эти годы? Покажи мне хоть один УДОБНЫЙ gdb плагин для вима?
idler 15.06.2010 16:35 #
Имхо дебаггинг канул в лету.
В последнее время, когда разработка идет через Unit-тестирование ..... Я не дебажил свой PHP-код уже более полугода.
antigluk 15.06.2010 20:54 #
Реквестую статью по юнит-тестированию =))
idler 16.06.2010 02:47 #
Вдохновения было мало, но я старался... Надеюсь раскрыл тему.
thebeetlebum 15.06.2010 01:44 #
Да и вообще)
"Дебаггер не нужен. Если меня интересует значение какой-то переменной я использую printf"
Бьерн Страуструп
digiwhite 15.06.2010 06:46 #
Как это не парадоксально, но он по сути прав. На работе в 95 случаях из 100 дебажу таким способом потому, что ПО многопоточное, одновремено работает на нескольких машинах, общается через сеть. Не очень то там дебаггером навоюешь.
vvlinux 15.06.2010 12:31 #
Да-а-а-а... знатный костыль. А если надо отслеживать значения очень многих переменных, потому что, например, ты не знаешь какая из них 'дает сбой'? Или массива? Или классов с вложенными классами, которые в свою очередь имеет также кучу полей? Или еще чего нить. Да еще на протяжение большого участка кода. Что, везде использовать printf как венец, высочайшую технику отладки?! А если приложение консолное и, во-первых, ты потом будешь разбираться в выводе где нужные данные (которые тоже, кстати, должный быть проверены на правильность), а где твои трассировочные значения. И во-вторых, после этой гемморойной процедуры наступит еще одна - теперь нужно удалять все эти ненужные printf. Скажи, оно того стоит?
mutantcornholio 15.06.2010 12:52 #
#ifdef DEBUG, не?
vvlinux 15.06.2010 14:03 #
Т.е. ты хочешь скажать, что засорять код приложения отладочным кодом считается нормальный явлением?! А как же удобочитаемость? Зачем писать в коде то, что может понадобится лишь один раз. Скажи, ты потом эти блоки #ifdef DEBUG ... #endif удаляешь или оставляешь на всякий случай?
mutantcornholio 15.06.2010 15:28 #
я редко что дописываю до конечного состояния ='(, но хорошо оттестенные методы обычно чищу.
mutantcornholio 15.06.2010 15:29 #
Хотя всё же дебаггеры рулят. Но и отладочный код я тоже использую.
vvlinux 15.06.2010 16:46 #
Не поймите меня неправильно, я тоже иногда использую printf или его аналоги в других языках для вывода на консоль, но лишь для того, чтобы вылавливать ошибки во время выполнения на компьютере заказчика. А отлаживать таким образом собственный код во время написания..., это, как минимум, нарушение принципа KISS.
antigluk 15.06.2010 20:55 #
даже не так... printf(stderr,...)
vvlinux 15.06.2010 21:54 #
Как же удобочитаемость и code workflow?
antigluk 15.06.2010 21:57 #
vvlinux 15.06.2010 23:13 #
Если пишешь для себя, то может быть и по.уй, но если ты работаешь в команде...
Мужики просто не поймут почему ты не пользуешься человеческим отладчиком.
motonarola 15.06.2010 13:15 #
это же аллегория, зачем понимать буквально.
логи, уровни дебага и дебаговые макросы.
digiwhite 15.06.2010 16:49 #
Вы такой крикливый. Студент что ли...
vvlinux 15.06.2010 17:02 #
Нет, уже, слава Богу, закончил.
digiwhite 15.06.2010 21:24 #
Ну тогда должны уже понимать, что мир не только черный и белый :)

Никто не против хорошего дебагера (а gdb отличный отладчик) с хорошими GUI, но часто он оказывается трудно применим. Тогда приходится писать журналы, вывод на консоль делать. И да, для этого даже пишутся классы или отдельные модули. Так что, мир - он такой не однозначный.
vvlinux 15.06.2010 21:57 #
Что? Трудно применим? Вы о чем?
h0rr0rr_drag0n 16.06.2010 09:48 #
Я не пользуюсь дебагером - мне он совершенно не нужен.
vvlinux 16.06.2010 14:05 #
Значит ты ни разу в жизни не писал ничего сложнее хелоуворлд. Ни или как вариант ваяяшь простенькие скрипты на баше.
h0rr0rr_drag0n 17.06.2010 19:39 #
Толсто. Не угадал :-).
Писал в качестве развлечения программки под это устройство. В данный момент портирую TNKernel и ZigBee стек под это. Буду признателен, если мне объяснят как тут вообще использовать дебаггер. :-D
pahanwsf 15.06.2010 06:20 #
Vim хороший редактор. Но из-за того что я от природы ленив, несколько лет пытался заставить себя перейти на него. После года мучений, несколько раз пытался слезть с него, в итоге сейчас я счастливый пользователь vim))

Вот хороший материал по превращению Vim в IDE для C/C++
thebeetlebum 15.06.2010 08:11 #

Да я тоже, сначала не мог себя заставить долго, а потом пересилил. Понял что это здорово удобно. Стал пользоваться.
А я ж блин физик, мне надо пользоваться maxim'ой, и теперь перевести себя на emacs надо. А это делать так влом, когда все настроено, все хорошо)
vvlinux 15.06.2010 15:06 #
И ты туда же? Vim хороший редактор. Согласен. На зачем делать из него костыль?

> "несколько лет пытался заставить себя перейти на него"
зачем себя насиловал? В линуксе что, нет нормальных IDE? Или чтобы быть Ъ?

> "После года мучений, несколько раз пытался слезть с него..."
Мыши плакали, кололись... ну ты понял

> "... итоге сейчас я счастливый пользователь vim"
И в чем заключается твое счастье?

dieformetal 15.06.2010 16:08 #
Толсто.
vvlinux 15.06.2010 16:39 #
Ничуть. Я уважаю и люблю Vim, но лишь как текстовый редактор. Не надо делать из него того, для чего он впринципе не предназначен. Я тоже, по-молодости лет, пытался в нем кодить, но вскоре пришел к выводу, что оно того не стоит. Есть множество хороших и замечательных IDE, так зачем же создавать себе трудности решая сложные задачи несоответствующими интрументами?
dieformetal 15.06.2010 16:50 #
На вкус и цвет - мне в нем редактировать код гораздо удобнее чем просто текст.
vvlinux 15.06.2010 17:04 #
Я и не спорю что это отличный ТЕКСТОВЫЙ РЕДАКТОР. Но никак не полноценная IDE. Или я не прав?
dieformetal 15.06.2010 17:21 #
"Полноценная IDE" - это примерно как "интуитивный интерфейс" или "дружелюбная ОС".
Если говорить о Vim без плагинов, то да, это не IDE. Но тогда emacs вообще не имеет права на существование, т.к. одно из главных его достоинств - мегарасширяемость.
vvlinux 15.06.2010 18:00 #
Полноценная IDE - это когда все нужное в одном месте, а не текстовый редактор с кучей наслоений.

> ""Полноценная IDE" - это примерно как "интуитивный интерфейс" или "дружелюбная ОС"."

Что тебя здесь смущает, не могу понять? Или ты никогда не видел ни того, ни другого, ни третьего?

> "Но тогда emacs вообще не имеет права на существование, т.к. одно из главных его достоинств - мегарасширяемость."

Не понял. Объясни, как одно вытекает из другого. Может быть ты софист?
dieformetal 15.06.2010 18:33 #
Или ты никогда не видел ни того, ни другого, ни третьего?

Так же как снежного человека и человека-амфибию. В теории, оно может существовать - но пока это все удел фантастов.
Объясни, как одно вытекает из другого.

Emacs славен тем, что у него есть куча расширений на все случаи жизни. В том числе и для превращения редактора в IDE. Почему мы можем считать Emacs с плагинами IDE, а Vim - не можем?
vvlinux 15.06.2010 18:40 #
Т.е из того, что ты их никогда не видел, ты смело делаешь вывод, что их не существует вообще? Насчет емакса. Не щупал, поэтому ничего конкретного сказать не могу. Скажи, там также отдадка реализуется через standalone приложение (gdb, ddd, etc) или все как взрослых - в самом емаксе?
dieformetal 15.06.2010 18:56 #
Насчет емакса не уверен, там, вполне вероятно, на лиспе написали юзеры себе скрипты отладочные. Хотя почти уверен, базируется большинство на gdb и других.
Про "интуитивный интерфейс" - если ты в него веришь, ступай в МС, тебе там будут рады. "Дружелюбная ОС" - туда же.
vvlinux 15.06.2010 19:20 #
Почти все IDE под линукс используют gdb. Вопрос в том КАК они это делают. Насчет мелкософта: с чего ты взял, что я буду рад там работать? Может быть я фанат ябла?
dieformetal 15.06.2010 19:23 #
Как вариант, идите в Apple, по отношению к обсуждаемой теме они одинаковы, хотя Яблоко все же отвественнее к своему делу подходит.
Я к тому, что "интуитивный интерфейс" и "дружелюбная ОС" - это маркетинговые мифы.
vvlinux 15.06.2010 19:59 #
А мужики то и не знали! Удобных IDE тоже не сущуствует? Эти все сказки маркетолов и мы должны пользоваться лучшим что есть на данный момент - vim + gdb, так чтоли?
cyrus 15.06.2010 19:04 #
Приведите, пожалуйста, пример в котором действительно удобно использовать Debug встроенный в IDE.
vvlinux 15.06.2010 19:21 #
VS, не,
vvlinux 15.06.2010 19:22 #
QT creator тоже на высоте.
cyrus 15.06.2010 19:29 #
Да я не про IDE, а про пример ситуации, когда дебаггер встроенный в какой-то IDE действительно удобен в использовании.
vvlinux 15.06.2010 20:02 #
Т.е. ты хочешь сказать, что использовать отдельно бегущий консольный отладчик намного удобней?!
pahanwsf 15.06.2010 18:47 #
Интересно, а чего не хватает в vim чтобы его можно было назвать полноценным IDE?

ИМХО vim это чисто программерский редактор, даже не могу представить, что им может пользоваться обычный пользователю как word'ом например. За время пользования, я написал или переделал дюжину скирптов для облегчения программерской жизни, это просто несколько строк кода и максимум час времени, позволяющие убирать всю рутинную работу которую я не хочу делать, и уже без этих улечшений ни один другой IDE не станет для меня полноценным.
dieformetal 15.06.2010 18:54 #
Не спорь, он минусует каждый несогласный коммент. Был бы рейтингозадротом, уже бы написал на это тему модерам))
cyrus 15.06.2010 19:01 #
Да ладно) это даже интересно :P
dieformetal 15.06.2010 19:03 #
Вполне, я уже набрал -0,5
cyrus 15.06.2010 19:07 #
я поправил немного стату тебе :D
вообще эти минусики что-тораздражать стали.. надо было всё-таки только плюсики оставлять
dieformetal 15.06.2010 19:13 #
Скорее, оговорить условия, в которых можно ставить минусы, дабы не поощрять выяснения отношений.
vvlinux 15.06.2010 20:05 #
Я конечно дико извиняюсь, но мы здесь пытаемся докапаться до истины или высказываем наиболее общественно-приемлемое мнение чтобы набрать побольше плюсов?
cyrus 15.06.2010 21:35 #
да это так.. оффтопом просто)
а так да до истины))
vvlinux 15.06.2010 19:08 #
В корне неверно. Я минусую только откровенно ошибочные комметарии. Разве так и не должно быть? Я же не плачу, что вы минусуете мои. У каждого свое мнение и нужно уметь его отстаивать.
dieformetal 15.06.2010 19:20 #
Но я искренне считаю, что я абсолютно прав и не допустил еще ни одной ошибки, а вы - наоборот. Нам остается только отправить друг другу споры сибирской язвы по электронной почте. Или все-таки общаться, не впадая в крайности?
vvlinux 15.06.2010 20:08 #
Я так не считаю. Посмотрите в вики что такое IDE и редактор исходного кода. Будете удивлены.
vvlinux 15.06.2010 19:05 #
Идем по ссылке и что мы видим?

"Обычно среда разработки включает в себя:
-текстовый редактор
-компилятор и/или интерпретатор
-средства автоматизации сборки
-отладчик"

Что-либо из этого, кроме редактора, в виме етсь 'искаропки'? Нет. Может быть оно плотно интегрированно в него как в настоящих IDE, чтобы все всегда было под рукой? Тоже нет? Что же мы имеем в итоге? Кучу разрозненых, несогласованых приложений, которые некоторые называем IDE?
dieformetal 15.06.2010 19:30 #
Про "искаропки" никто и не говорил. По умолчанию Vim текстовый редактор, однако используя плагины, из него можно сделать IDE. По крайней мере, я нигде не нашел, что IDE - оно всегда "искаробочное" поделие.
vvlinux 15.06.2010 20:14 #
По умолчанию Vim текстовый редактор и должен оставаться им.

По умолчанию мопед - средство передвижения по земле, но используя напильник и такую-то мать можно сделать из него мотодельтаплан.
dieformetal 15.06.2010 20:19 #
По умолчанию компьютер должен производить расчеты и помогать науке. Но используя напильник и такую-то мать, кто-то заставил его показывать игры и лазить по интернету.
Все, не кормлю.
vvlinux 15.06.2010 20:26 #
Не было никакого напильника. Стив Джобс все правильно сделал.
vvlinux 15.06.2010 20:27 #
Это было естественным ходом эволюции. Разве нет?
cyrus 15.06.2010 21:41 #
Не поверите!! Эволюция есть и у Vim!!!
Вот выйдет версия 7.3 и там..
Кстати, топ 5 из "Vim features" выглядит следующим образом:
add IDE features (debugger integration, shell window)
add integration with Python instead of inventing more Vim script
add persistent undo: undo is still possible after exiting Vim
fix all problems, big and small; make Vim more robust
make it possible to use Vim as a plugin in Eclipse

И тогда этот огромный трэд можно будет удалять :D
vvlinux 15.06.2010 22:08 #
Ну вот когда выйдет, тогда и посмотрим можно ли будет её называть IDE или нет.

> "Не поверите!! Эволюция есть и у Vim!!!"
Кэп, Вы не поверите, но я об этом знаю!!! Кому нужна программа которая, выйдя однажды, перестает развиваться?!
pahanwsf 15.06.2010 19:45 #
В чем проблема поставить нужный плагин, все перечисленное имеется. Если руки растут откуда нужно, никакой кучи плагинов не будет, будет только очень остро отточеный, легкий и удобный инструмент, без лишнего мусора "из коробки".
vvlinux 15.06.2010 20:16 #
Назови мне хоть один плагин для отладки в виме. Имено внутри вима, а не в отдельном консольном gdb?
uentity 16.06.2010 08:28 #
pyclewn
Если тебе уж так сильно хочется отлаживаться именно из вима.
vvlinux 16.06.2010 14:31 #
Спасибо за наводку. Сегодня поставлю и посмотрю насколько он удобен в использовании.
vvlinux 15.06.2010 19:13 #
Также идем сюда Редактор исходного кода и просветляемся.
vvlinux 15.06.2010 23:35 #
> "...даже не могу представить, что им может пользоваться обычный пользователю как word'ом например"

Ха-ха! Сравнил текстовый редактор с текстовым процессором.
pahanwsf 16.06.2010 05:01 #
Веселый ты человек))) Думаешь vim не может выступать как текстовый процессор с возможностями форматирования текста? Может конечно, только от этого, не подготовленному пользователю легче не станет.
vvlinux 16.06.2010 14:26 #
Конечно не может. Если выравнивание табами называть форматированием, то да, у них есть что-то общее. Никогда не сравнивай вим с вордом. Это совсем разные ниши. Ближайший аналог вима под виндой - блокнот, хотя он конечно уступает виму в плане редактирования текста.
h0rr0rr_drag0n 17.06.2010 19:40 #
Ммм... Ну например, блокнот уже научился показывать системную справку по системному вызову под курсором по нажатию хоткея???
lwilis 15.06.2010 16:36 #
В линуксе что, нет нормальных IDE?
Кст, с удовольствием прочитал бы пост по теме нормальных IDE под линух.
Тут еще дело в том, что кому-то надо просто работать, и плевать. Тогда eclipse или NetBeans, в зависимости от. Но это Ынтерпрайз в большинстве случаев.
Остается только Anjuta, но она гном тянет за собой. Тут понятное дело, что "ехать или шашечки".
Но по сути: выбора нет. Или я что-то пропустил?
cyrus 15.06.2010 17:01 #
выбора нет

текстовые редакторы gedit/kate
и более мощные geany/kdevelop
pahanwsf 15.06.2010 16:49 #
Дело в том, что я знал на что иду, тут больше дело привычки, когда начинаешь работать в vim на автомате, не заглядывая постоянно в help, начинаешь получать истинное удовольствие)

Приведу близкую аналогию из спорта. Можно плавать по собачьи, но это ужас как не эффективно и не интересно, чтобы научиться правильно плавать(хотябы тролем) нужно потратить время и силы, тут тоже можно задать вопрос "а зачем себя насиловать", и тоже можно оставить этот вопрос без ответа... ну ты понял)
lwilis 15.06.2010 17:15 #
(хотябы тролем)
А оговорочка прям по Фрейду.
vvlinux 15.06.2010 17:00 #
Остается только Anjuta? Откуда такие поспешные выводы. Для C, C++ проектов раньше я использовал CodeBlocks, но недавно перешил на CodeLite и очень доволен. Для, как ты выразился, Ынтерпрайза использую QT Creator. Eclipse'ом и NetBeans'ом пользоваться не приходилось.
vvlinux 15.06.2010 17:01 #
Сори, промахнулся. Это ответ на http://welinux.ru/post/3425/#cmnt64335
wilful 15.06.2010 21:43 #
Спасибо! Сам я не занимаюсь разработкой, использую вим для скриптов и конфигов (Латех еще осваиваю потихой).

Только у меня вопрос: Подсветка строчки с курсором как делается? (светлая линия) =)
h0rr0rr_drag0n 16.06.2010 09:54 #
set cursorline
wilful 16.06.2010 11:33 #
Спасибо. А настройки для подсветки меняются? У меня получилось только подчеркивание строки =)
h0rr0rr_drag0n 16.06.2010 13:22 #
Да, они расположены (или их надо туда дописать) где-то в файле с используемой colorscheme.
SashaShveik 17.06.2010 19:54 #
благодарю!
пользуюсь вимом, как обычным текстовым редактором, для редактирования shell-скриптов. сейчас изучаю C, поэтому статья как нельзя кстати!