Vim — Использование VIm, как IDE для языка C.
Несмотря на утверждение, что Vim это всего лишь текстовый редактор и использовать его как IDE глупо, я довольно продолжительное время успешно использую Vim как IDE для языка C. В этом мне помогает набор удобных плагинов и периодически улучшаемый мною .vimrc.
К сожалению, я не встречал в Интернете статей, посвященных превращению Vim в IDE для C. Поэтому я решил написать свою :-).
По ссылке, можно прочитать об используемых мною плагинах, почитать мои комментарии к содержимому конфигурационного файла, посмотреть скринкаст, в котором я пытался показать как работают мои хоткеи, а также скачать и посмотреть мой .vimrc (комментарии на русском, UTF8). Рекомендуется читать статью и параллельно просматривать мой .vimrc - в комментариях написано то, что не вошло в статью, но может вызвать вопросы (например как просмотреть ман-страницу и как скакать в ней по ссылкам).
-
> vimrc.tar.bz2
> Download (2 MB)
Был напуган.
Спасибо, хорошо написано. А скринкаст - вообще супер ^_^
-
Все это конечно замечательно, но меня всегда интересовал один вопрос: как известно, любая уважающая себя IDE имеет хоть какой-нибудь дебагер, иначе это не IDE, а менструозный текстовый редактор. Так вот вопрос: как ты дебажишь в виме?
-
-
-
-
Gdb? Консольный дебагинг? Ты серъезно? Скажи, очень ли удобно каждый раз когда хочешь узнать значение переменной вводить ее имя? А если это класс, который содержит еще один класс, а тот в свою очередь содержит структуру с ...тью полями? Одно из полей структуры - массив целых чисел. И тебе нужно узнать не принял ли один из его елементов значение ноль. Твои действия. Пожалуйста, опиши их здесь, я хочу оценить масштабность этого геммороя.
-
Вдогонку: скажи, пожалуйста, gdb имеет подсветку синтаксиса выполняемого кода? а редактирование на месте? Думаю что нет. И что мы получаем в итоге? Мощный текстовый редактор, но без возможности отладки и мощный дебагер, но с абсолютно никакими возможностями для редактирования. Находим ошибку в gdb, переключаемся в vim, находим (!) то самое место, испраляем ошибку и все по-новой. Боже, сколько ненужных, бесполезный и болезненых телодвижений ради того, чтобы быть Ъ!!! Зачем вы пытаетесь сделать из хорошего текстового редактора IDE?!
-
-
а чё, в виме нет плагина для удобного дебага с помощью GDB? o_O
-
-
Ты хочешь сказать, что дебажить что-то сложнее хелоуворлд с помощью консольного дебагера это то, к чему мы так стремились все эти годы? Покажи мне хоть один УДОБНЫЙ gdb плагин для вима?
-
Имхо дебаггинг канул в лету.
В последнее время, когда разработка идет через Unit-тестирование ..... Я не дебажил свой PHP-код уже более полугода.
-
-
Реквестую статью по юнит-тестированию =))
-
-
Вдохновения было мало, но я старался... Надеюсь раскрыл тему.
-
Да и вообще)
"Дебаггер не нужен. Если меня интересует значение какой-то переменной я использую printf"
Бьерн Страуструп
-
-
Как это не парадоксально, но он по сути прав. На работе в 95 случаях из 100 дебажу таким способом потому, что ПО многопоточное, одновремено работает на нескольких машинах, общается через сеть. Не очень то там дебаггером навоюешь.
-
Да-а-а-а... знатный костыль. А если надо отслеживать значения очень многих переменных, потому что, например, ты не знаешь какая из них 'дает сбой'? Или массива? Или классов с вложенными классами, которые в свою очередь имеет также кучу полей? Или еще чего нить. Да еще на протяжение большого участка кода. Что, везде использовать printf как венец, высочайшую технику отладки?! А если приложение консолное и, во-первых, ты потом будешь разбираться в выводе где нужные данные (которые тоже, кстати, должный быть проверены на правильность), а где твои трассировочные значения. И во-вторых, после этой гемморойной процедуры наступит еще одна - теперь нужно удалять все эти ненужные printf. Скажи, оно того стоит?
-
-
#ifdef DEBUG, не?
-
-
Т.е. ты хочешь скажать, что засорять код приложения отладочным кодом считается нормальный явлением?! А как же удобочитаемость? Зачем писать в коде то, что может понадобится лишь один раз. Скажи, ты потом эти блоки #ifdef DEBUG ... #endif удаляешь или оставляешь на всякий случай?
-
-
я редко что дописываю до конечного состояния ='(, но хорошо оттестенные методы обычно чищу.
-
Хотя всё же дебаггеры рулят. Но и отладочный код я тоже использую.
-
-
Не поймите меня неправильно, я тоже иногда использую printf или его аналоги в других языках для вывода на консоль, но лишь для того, чтобы вылавливать ошибки во время выполнения на компьютере заказчика. А отлаживать таким образом собственный код во время написания..., это, как минимум, нарушение принципа KISS.
-
даже не так... printf(stderr,...)
-
-
Как же удобочитаемость и code workflow?
-
-
-
-
Если пишешь для себя, то может быть и по.уй, но если ты работаешь в команде...
Мужики просто не поймут почему ты не пользуешься человеческим отладчиком.
-
это же аллегория, зачем понимать буквально.
логи, уровни дебага и дебаговые макросы.
-
Вы такой крикливый. Студент что ли...
-
-
Нет, уже, слава Богу, закончил.
-
-
Ну тогда должны уже понимать, что мир не только черный и белый :)
Никто не против хорошего дебагера (а gdb отличный отладчик) с хорошими GUI, но часто он оказывается трудно применим. Тогда приходится писать журналы, вывод на консоль делать. И да, для этого даже пишутся классы или отдельные модули. Так что, мир - он такой не однозначный.
-
-
Что? Трудно применим? Вы о чем?
-
Я не пользуюсь дебагером - мне он совершенно не нужен.
-
-
Значит ты ни разу в жизни не писал ничего сложнее хелоуворлд. Ни или как вариант ваяяшь простенькие скрипты на баше.
-
-
Толсто. Не угадал :-).
Писал в качестве развлечения программки под это устройство. В данный момент портирую TNKernel и ZigBee стек под это. Буду признателен, если мне объяснят как тут вообще использовать дебаггер. :-D
-
Vim хороший редактор. Но из-за того что я от природы ленив, несколько лет пытался заставить себя перейти на него. После года мучений, несколько раз пытался слезть с него, в итоге сейчас я счастливый пользователь vim))
Вот хороший материал по превращению Vim в IDE для C/C++
-
-
Да я тоже, сначала не мог себя заставить долго, а потом пересилил. Понял что это здорово удобно. Стал пользоваться.
А я ж блин физик, мне надо пользоваться maxim'ой, и теперь перевести себя на emacs надо. А это делать так влом, когда все настроено, все хорошо)
-
И ты туда же? Vim хороший редактор. Согласен. На зачем делать из него костыль?
> "несколько лет пытался заставить себя перейти на него"
зачем себя насиловал? В линуксе что, нет нормальных IDE? Или чтобы быть Ъ?
> "После года мучений, несколько раз пытался слезть с него..."
Мыши плакали, кололись... ну ты понял
> "... итоге сейчас я счастливый пользователь vim"
И в чем заключается твое счастье?
-
-
Толсто.
-
-
Ничуть. Я уважаю и люблю Vim, но лишь как текстовый редактор. Не надо делать из него того, для чего он впринципе не предназначен. Я тоже, по-молодости лет, пытался в нем кодить, но вскоре пришел к выводу, что оно того не стоит. Есть множество хороших и замечательных IDE, так зачем же создавать себе трудности решая сложные задачи несоответствующими интрументами?
-
-
На вкус и цвет - мне в нем редактировать код гораздо удобнее чем просто текст.
-
-
Я и не спорю что это отличный ТЕКСТОВЫЙ РЕДАКТОР. Но никак не полноценная IDE. Или я не прав?
-
-
"Полноценная IDE" - это примерно как "интуитивный интерфейс" или "дружелюбная ОС".
Если говорить о Vim без плагинов, то да, это не IDE. Но тогда emacs вообще не имеет права на существование, т.к. одно из главных его достоинств - мегарасширяемость.
-
-
Полноценная IDE - это когда все нужное в одном месте, а не текстовый редактор с кучей наслоений.
> ""Полноценная IDE" - это примерно как "интуитивный интерфейс" или "дружелюбная ОС"."
Что тебя здесь смущает, не могу понять? Или ты никогда не видел ни того, ни другого, ни третьего?
> "Но тогда emacs вообще не имеет права на существование, т.к. одно из главных его достоинств - мегарасширяемость."
Не понял. Объясни, как одно вытекает из другого. Может быть ты софист?
-
-
Или ты никогда не видел ни того, ни другого, ни третьего?
Так же как снежного человека и человека-амфибию. В теории, оно может существовать - но пока это все удел фантастов.
Объясни, как одно вытекает из другого.
Emacs славен тем, что у него есть куча расширений на все случаи жизни. В том числе и для превращения редактора в IDE. Почему мы можем считать Emacs с плагинами IDE, а Vim - не можем?
-
-
Т.е из того, что ты их никогда не видел, ты смело делаешь вывод, что их не существует вообще? Насчет емакса. Не щупал, поэтому ничего конкретного сказать не могу. Скажи, там также отдадка реализуется через standalone приложение (gdb, ddd, etc) или все как взрослых - в самом емаксе?
-
-
Насчет емакса не уверен, там, вполне вероятно, на лиспе написали юзеры себе скрипты отладочные. Хотя почти уверен, базируется большинство на gdb и других.
Про "интуитивный интерфейс" - если ты в него веришь, ступай в МС, тебе там будут рады. "Дружелюбная ОС" - туда же.
-
-
Почти все IDE под линукс используют gdb. Вопрос в том КАК они это делают. Насчет мелкософта: с чего ты взял, что я буду рад там работать? Может быть я фанат ябла?
-
-
Как вариант, идите в Apple, по отношению к обсуждаемой теме они одинаковы, хотя Яблоко все же отвественнее к своему делу подходит.
Я к тому, что "интуитивный интерфейс" и "дружелюбная ОС" - это маркетинговые мифы.
-
-
А мужики то и не знали! Удобных IDE тоже не сущуствует? Эти все сказки маркетолов и мы должны пользоваться лучшим что есть на данный момент - vim + gdb, так чтоли?
-
Приведите, пожалуйста, пример в котором действительно удобно использовать Debug встроенный в IDE.
-
-
VS, не,
-
QT creator тоже на высоте.
-
-
Да я не про IDE, а про пример ситуации, когда дебаггер встроенный в какой-то IDE действительно удобен в использовании.
-
-
Т.е. ты хочешь сказать, что использовать отдельно бегущий консольный отладчик намного удобней?!
-
Интересно, а чего не хватает в vim чтобы его можно было назвать полноценным IDE?
ИМХО vim это чисто программерский редактор, даже не могу представить, что им может пользоваться обычный пользователю как word'ом например. За время пользования, я написал или переделал дюжину скирптов для облегчения программерской жизни, это просто несколько строк кода и максимум час времени, позволяющие убирать всю рутинную работу которую я не хочу делать, и уже без этих улечшений ни один другой IDE не станет для меня полноценным.
-
-
Не спорь, он минусует каждый несогласный коммент. Был бы рейтингозадротом, уже бы написал на это тему модерам))
-
-
Да ладно) это даже интересно :P
-
-
Вполне, я уже набрал -0,5
-
-
я поправил немного стату тебе :D
вообще эти минусики что-тораздражать стали.. надо было всё-таки только плюсики оставлять
-
-
Скорее, оговорить условия, в которых можно ставить минусы, дабы не поощрять выяснения отношений.
-
Я конечно дико извиняюсь, но мы здесь пытаемся докапаться до истины или высказываем наиболее общественно-приемлемое мнение чтобы набрать побольше плюсов?
-
-
да это так.. оффтопом просто)
а так да до истины))
-
В корне неверно. Я минусую только откровенно ошибочные комметарии. Разве так и не должно быть? Я же не плачу, что вы минусуете мои. У каждого свое мнение и нужно уметь его отстаивать.
-
-
Но я искренне считаю, что я абсолютно прав и не допустил еще ни одной ошибки, а вы - наоборот. Нам остается только отправить друг другу споры сибирской язвы по электронной почте. Или все-таки общаться, не впадая в крайности?
-
-
Я так не считаю. Посмотрите в вики что такое IDE и редактор исходного кода. Будете удивлены.
-
Идем по ссылке и что мы видим?
"Обычно среда разработки включает в себя:
-текстовый редактор
-компилятор и/или интерпретатор
-средства автоматизации сборки
-отладчик"
Что-либо из этого, кроме редактора, в виме етсь 'искаропки'? Нет. Может быть оно плотно интегрированно в него как в настоящих IDE, чтобы все всегда было под рукой? Тоже нет? Что же мы имеем в итоге? Кучу разрозненых, несогласованых приложений, которые некоторые называем IDE?
-
-
Про "искаропки" никто и не говорил. По умолчанию Vim текстовый редактор, однако используя плагины, из него можно сделать IDE. По крайней мере, я нигде не нашел, что IDE - оно всегда "искаробочное" поделие.
-
-
По умолчанию Vim текстовый редактор и должен оставаться им.
По умолчанию мопед - средство передвижения по земле, но используя напильник и такую-то мать можно сделать из него мотодельтаплан.
-
-
По умолчанию компьютер должен производить расчеты и помогать науке. Но используя напильник и такую-то мать, кто-то заставил его показывать игры и лазить по интернету.
Все, не кормлю.
-
-
Не было никакого напильника. Стив Джобс все правильно сделал.
-
Это было естественным ходом эволюции. Разве нет?
-
-
Не поверите!! Эволюция есть и у 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
-
-
Ну вот когда выйдет, тогда и посмотрим можно ли будет её называть IDE или нет.
> "Не поверите!! Эволюция есть и у Vim!!!"
Кэп, Вы не поверите, но я об этом знаю!!! Кому нужна программа которая, выйдя однажды, перестает развиваться?!
-
В чем проблема поставить нужный плагин, все перечисленное имеется. Если руки растут откуда нужно, никакой кучи плагинов не будет, будет только очень остро отточеный, легкий и удобный инструмент, без лишнего мусора "из коробки".
-
-
Назови мне хоть один плагин для отладки в виме. Имено внутри вима, а не в отдельном консольном gdb?
-
-
pyclewn
Если тебе уж так сильно хочется отлаживаться именно из вима.
-
-
Спасибо за наводку. Сегодня поставлю и посмотрю насколько он удобен в использовании.
-
Также идем сюда Редактор исходного кода и просветляемся.
-
> "...даже не могу представить, что им может пользоваться обычный пользователю как word'ом например"
Ха-ха! Сравнил текстовый редактор с текстовым процессором.
-
-
Веселый ты человек))) Думаешь vim не может выступать как текстовый процессор с возможностями форматирования текста? Может конечно, только от этого, не подготовленному пользователю легче не станет.
-
-
Конечно не может. Если выравнивание табами называть форматированием, то да, у них есть что-то общее. Никогда не сравнивай вим с вордом. Это совсем разные ниши. Ближайший аналог вима под виндой - блокнот, хотя он конечно уступает виму в плане редактирования текста.
-
-
Ммм... Ну например, блокнот уже научился показывать системную справку по системному вызову под курсором по нажатию хоткея???
-
В линуксе что, нет нормальных IDE?
Кст, с удовольствием прочитал бы пост по теме нормальных IDE под линух.
Тут еще дело в том, что кому-то надо просто работать, и плевать. Тогда eclipse или NetBeans, в зависимости от. Но это Ынтерпрайз в большинстве случаев.
Остается только Anjuta, но она гном тянет за собой. Тут понятное дело, что "ехать или шашечки".
Но по сути: выбора нет. Или я что-то пропустил?
-
-
выбора нет
текстовые редакторы gedit/kate
и более мощные geany/kdevelop
-
Дело в том, что я знал на что иду, тут больше дело привычки, когда начинаешь работать в vim на автомате, не заглядывая постоянно в help, начинаешь получать истинное удовольствие)
Приведу близкую аналогию из спорта. Можно плавать по собачьи, но это ужас как не эффективно и не интересно, чтобы научиться правильно плавать(хотябы тролем) нужно потратить время и силы, тут тоже можно задать вопрос "а зачем себя насиловать", и тоже можно оставить этот вопрос без ответа... ну ты понял)
-
-
(хотябы тролем)
А оговорочка прям по Фрейду.
-
Остается только Anjuta? Откуда такие поспешные выводы. Для C, C++ проектов раньше я использовал CodeBlocks, но недавно перешил на CodeLite и очень доволен. Для, как ты выразился, Ынтерпрайза использую QT Creator. Eclipse'ом и NetBeans'ом пользоваться не приходилось.
-
-
Сори, промахнулся. Это ответ на http://welinux.ru/post/3425/#cmnt64335
-
Спасибо! Сам я не занимаюсь разработкой, использую вим для скриптов и конфигов (Латех еще осваиваю потихой).
Только у меня вопрос: Подсветка строчки с курсором как делается? (светлая линия) =)
-
-
-
-
Спасибо. А настройки для подсветки меняются? У меня получилось только подчеркивание строки =)
-
-
Да, они расположены (или их надо туда дописать) где-то в файле с используемой colorscheme.
-
благодарю!
пользуюсь вимом, как обычным текстовым редактором, для редактирования shell-скриптов. сейчас изучаю C, поэтому статья как нельзя кстати!
|
|
|
Последние посты
|
|
Последние комментарии
|
|
Изменения
|
|
Черновики (все)
|
|
Избранное (всё)
|
|
|