LINUX.ORG.RU

GVim versus Emacs


0

4

Драсте, это снова я. Да, сразу прошу простить за то что я сделал это, начал новый холивор.

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

Мне нужна хорошая поддержка пайтона:
1) Автокомплит по словам в текущем файле.
2) Автокомплит по символам(объектам) модулей(например, сделаю import foo, а в коде foo., мне должен выйти список из bar, __init__, __class__ etc).
3) Автокомплит по символам текущего модуля/файла(чтобы я в конце большого файла мог сделать инстанс класса, который объявлен в начале и мне дали список мемберов класса и его родителей, а не как в комодо, в котором он может послать на три буквы).
4) Удобные сниппеты, которые живут ВМЕСТЕ с автокомплитом(слышал что в виме люди ставят автокомплит на таб, а сниппеты на ктрл+., я аж офигел).
5) Хоть сколько нормальная поддержка дебаггера для пайтона и цпп.
6) Хорошие средства рефакторинга(хоть для галочки).
7) Средства для менеджмента проектом и вообще возможность делать файлы на проекты, при этом обозревать несколько проектов сразу.

Мне нужна хорошая поддержка цпп:
1) Хороший автокомплит по проекту и стандартным библиотекам.
2) Хороший автокомплит по другим библиотекам(например, qt, boost).
3) Набор сниппетов.
4) Какие-нибудь средства для хоть полу-автоматизированнного составления make/cmake файлов(да, не хочу писать их вручную, хочу указать пути до либ и добавить пару файлов в проект, нажать кнопочку и запустить).

Мне нужна хорошая поддержка html, js, css:
1) Сниппеты.
2) Автокомплит.
3) Средства для умного написания кода(zen/haml)
4) Автокомплит css в html, js по Jquery, prototype etc
5) Работа с js и css в html-файле(подсветка синтаксиса - минимум)

Мне нужна хоть какая поддержка mako(python template lang):
1) Сниппеты.
2) Подсветка html, js, css.

Вроде всё. Конечно, может быть что-то ещё, но вот это то, что мне нужно каждый день.
Собственно, очень хочется узнать у знающих что есть в виме и имаксе, а чего нет, что где лучше и в каком состоянии, поддерживается ли оно или только раз в год накладываются патчи(например, как я понял, модуль пайтона для вима не обновлялся уже почти 2 года).


Ответ на: комментарий от tia

Иногда документации нет, ты что, просто бросаешь эту библиотеку или отказываешься от разработки? Или ты открываешь каждый сырец и изучаешь код?

Если библиотека на столько клёвая, как о ней говорят, то отсутствие документации уже наводит на мысли, что кто-то ошибается. Изучение её кишков как раз может подтвердить предчувствие, что библиотека - какашка. Обратно, конечно, тоже бывает, если библиотека маленькая и её написал гениальный лодырь, которому вломы ваять документацию, но это большая редкость.

mv ★★★★★
()
Ответ на: комментарий от tia

Если ты можешь себе позволить терять время на изучение референсов, держать открытыми десятки файлов и свитчится между ними чтобы что-то вспомнить, делать пометки где у тебя что, то это не значит что другие хотят тратить своё время и внимание. Другие успешно решают свои задачи быстрее таких как ты и не кичатся тем что они «отказались от автокомплита».

Да ты быдлокодер! Именно быдлокодеры не хотят углублятся в детали, читать документацию, понимать структуру проекта. Им нужно просто клепать быдлокод.

mv ★★★★★
()
Ответ на: комментарий от Reaper

Смотря какая библиотека/модуль. В пайтоне у меня всё достаточно удобно. Каждый модуль имеет свой набор модулей, список которых я могу получить, а из них выбрать нужный и получить список функций классов. В 99% я по первым буквам угадываю то что мне нужно и уже использую это, при этом имея возможность прочитать в тултипе что оно делает, какие аргументы принимает, какие из них имеют дефолтные значения, какие какого типа должны быть. Я даже получаю кусок этой самой функции.
И это всё работает очень и очень быстро.
Чтение референсов как-раз и превращается в «долгий скроллинг и поиск», когда в автокомплите всё быстро, не отрываясь от кода.

tia
() автор топика
Ответ на: комментарий от andreyu

Я и не спорю. Подключая большую библиотеку или используя какой-то крупный модуль, всё-равно нужно прочитать референсы чтобы понять структуру библиотеки, основные функции.
Однако без автокомплита ты будешь обречён свитчиться каждые N секунд на окно браузера. Но зачем тратить своё время и внимание?

tia
() автор топика
Ответ на: комментарий от andreyu

А у того, кто прочел документацию и умеет использовать автокомплит КПД будет еще выше.

К ТС это не относится.

Да, я сам использую автодополнение. Автокомплит а-ля C++ к лиспу не особо-то и применим. Для C, кстати, гораздо важнее иметь что-то типа cscope, чтобы быстро прыгнуть к месту определения, либо посмотреть, где это определение используется.

mv ★★★★★
()
Ответ на: комментарий от mv

>Несомненно, у меня, прочитавшего API reference, КПД выше, чем у автокомплитчика.
Сколько тебе лет? Вроде не стар чтобы до маразма дойти, но и не так молод и глуп чтобы бред и чушь нести.
КПД у тебя, как человека, который каждый раз будет обращаться к референсам за любой подсказкой, будет во много раз ниже чем у того, кто будет использовать автокомплит.

tia
() автор топика
Ответ на: комментарий от tia

>Если ты можешь себе позволить терять время на изучение референсов

Т.е. ты времени на изучение референсов не тратишь? Времени нет на такую роскошь? Заказчики в шею гонят, дедлайн? Хе-хе.

yoghurt ★★★★★
()
Ответ на: комментарий от andreyu

VAX по той причине и покупают, что это хорошее доволнение к автокомплиту и такой-то набор сниппетов! Ещё, если память не изменяет, там есть хорошие фишки для рефакторинга. В любом случае ценная штука.
Мне тоже эклипс не нравится, просто для пайтона, например, там лучший анализатор кода, больше возможностей и удобств.

Qt - может речь о QtCreator?

Именно. О чём ещё может быть речь? )

tia
() автор топика
Ответ на: комментарий от mv

Ты так и не ответил на вопрос. Если у тебя будет работа, по которой нужно использовать слабо документированную библиотеку или библиотеку, у которой нет референсов, то ты откажешься работать(предположим что тебе за эту работу заплатят очень много по меркам твоей з/п)?

tia
() автор топика
Ответ на: комментарий от tia

Сколько тебе лет?

28.

Вроде не стар чтобы до маразма дойти, но и не так молод и глуп чтобы бред и чушь нести. КПД у тебя, как человека, который каждый раз будет обращаться к референсам за любой подсказкой, будет во много раз ниже чем у того, кто будет использовать автокомплит.

То, чем ты сейчас занимаешься, называется «добровольная самодискредитация». К инженеру, не читающему документацию, хорошего отношения быть не может. А если он ещё и доказывает, что это нафиг не нужно...

mv ★★★★★
()
Ответ на: комментарий от mv

И снова ты придумываешь для себя свой маленький мир, в котором все пользователи автокомплита - быдлокодеры, лист - лучший язык etc. Ещё не надоело?

Именно быдлокодеры не хотят углублятся в детали, читать документацию, понимать структуру проекта. Им нужно просто клепать быдлокод.

Где ты прочитал что я «не хочу углубляться в детали, читать документацию, понимать структуру проекта»?
Можешь не отвечать, лучше подумай немного над тем что ты пишешь.

tia
() автор топика
Ответ на: комментарий от mv

> Для C, кстати, гораздо важнее иметь что-то типа cscope, чтобы быстро прыгнуть к месту определения, либо посмотреть, где это определение используется.

Угу, по этой причине я использую ctags и cscope ;) Весьма полезные инструменты.

andreyu ★★★★★
()
Ответ на: комментарий от mv

Да вы смотрите сколько злости! Ты же взорвёшься сейчас если не польёшь кого-то грязью.

Да, я сам использую автодополнение.

Ок, значит ты ничем не отличаешься от меня. Можешь себя назвать быдлокодером.

tia
() автор топика
Ответ на: комментарий от tia

Ты так и не ответил на вопрос. Если у тебя будет работа, по которой нужно использовать слабо документированную библиотеку или библиотеку, у которой нет референсов, то ты откажешься работать(предположим что тебе за эту работу заплатят очень много по меркам твоей з/п)?

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

mv ★★★★★
()
Ответ на: комментарий от tia

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

Он имеет ввиду, что изучив библиотеку, постоянно переключаться на на документацию уже будет не нужно. Его код будет короче, быстрее, чище, etc.
Тут он прав, но при этом автокомплит никак не мешает разработке и написанию хорошего кода.

andreyu ★★★★★
()
Ответ на: комментарий от lazyklimm

Лисп прост, сложность в том, чтобы изучать el и функциональность самого имакса, которая представляется в виде el.
В том-то и проблема, что в виме всё уже есть, а вот в имаксе придётся много где писать на el. Мне проще в виме один конфиг написать за минут 10, чем мудрить с модулями на el.

tia
() автор топика
Ответ на: комментарий от tia

> >Qt - может речь о QtCreator?

Именно. О чём ещё может быть речь? )


Вначале я подумал, что речь о самой библиотеке, потому и уточнил, что вы имели ввиду.

andreyu ★★★★★
()
Ответ на: комментарий от tia

Где ты прочитал что я «не хочу углубляться в детали, читать документацию, понимать структуру проекта»?

Так вот же!

Если ты можешь себе позволить терять время на изучение референсов

Да вы смотрите сколько злости! Ты же взорвёшься сейчас если не польёшь кого-то грязью.

Когда я злой, то ничего не пишу, чтобы в состоянии аффекта не сморозить отчаянную глупость.

Ок, значит ты ничем не отличаешься от меня. Можешь себя назвать быдлокодером.

Ты требуешь семантическое дополнение, а я пользуюсь тупым завершением слова. Чуешь разницу?

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

mv ★★★★★
()
Ответ на: комментарий от mv

>28.
Ну вот и не стыдно? Сначала говоришь что автокомплит не нужен, потом говоришь что использующие его - быдлокодеры, а потом ещё и говоришь что сам его используешь. Ты в себе сначала разберись, а потом что-то пиши.

То, чем ты сейчас занимаешься, называется «добровольная самодискредитация».

Я вижу это только с твоей стороны. Ты сам себя уже показал быдлокодером, а пытаешься ещё что-то сказать.

К инженеру, не читающему документацию, хорошего отношения быть не может. А если он ещё и доказывает, что это нафиг не нужно...

Я вижу что только ты пытаешься здесь доказать что я не читаю документацию. У тебя с психикой вообще как, всё в порядке? Может в детстве с дерева упал?
Я повторюсь, я нигде не писал что документацию не читаю.

Ты же, в противоположность мне, показал что отказываешься от средств быстрой разработки. Это только лишний раз указывает на то, что твоя ценность меньше ценности любого другого, кто хоть как-то использует автокомплит.

tia
() автор топика
Ответ на: комментарий от mv

>Так вот же!
Тебе стоит обратиться к психологу или подучить русский язык.
Когда научишься читать не выдерая отдельные части из контекста, когда научишься понимать русский язык - возвращайся.

К.О.: Я намекал на ежеминутное обращение к докам, референсам за каждым пустяком. Нормальный инженер-программист не может себе позволить каждую минуту обращаться к документации если есть такие средства как автокомплит с автоподсказкой.
Если человек сам отказывается от таких удобств, то он только показывает себя как плохой специалист.

Когда я злой, то ничего не пишу, чтобы в состоянии аффекта не сморозить отчаянную глупость.

Ты уже родил очередную глупость. Поздно думать.

Ты требуешь семантическое дополнение, а я пользуюсь тупым завершением слова. Чуешь разницу?

Семантическое дополнение в разы эффективнее чем просто завершение слова.
Чуешь разницу? Или это для тебя слишком не Ъ?

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

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

tia
() автор топика
Ответ на: комментарий от tia

В том-то и проблема, что в виме всё уже есть, а вот в имаксе придётся много где писать на el.

Вообще-то, по большинству твоих требований в первом посте в имаксе более готовые и развитые модули.

Вимеры, у вас есть функциональность аналагочная модулям: Xrefactory, CEDET, nXhtml-mode?

(1 и 2 - семантический анализ для C++, автокомплит основанный на нём, рефакторинг (1); 3 - наличие нескольких режимов в одном файле, когда в html есть css, js, php, e.t.c., автоматическое переключение в них по заходу в соответствующий блок кода; валидация на лету xhtml).

Reaper ★★
()
Ответ на: комментарий от Reaper

> Вимеры, у вас есть функциональность аналагочная модулям: Xrefactory, CEDET, nXhtml-mode?

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

andreyu ★★★★★
()
Ответ на: комментарий от dmsh

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

tia
() автор топика
Ответ на: комментарий от Zubchick

Да на лиспе, для таких вещей, и автокомплит не нужен большой. Всё плавает на поверхности.
Просто не хочу на нём что-то кодить(а если буду на имаксе, то точно знаю что придётся).

tia
() автор топика
Ответ на: комментарий от dmsh

Это ещё почему? Такой молодой, а сколько кретинизма в сообщениях.
Да, на вопрос можешь не отвечать, и так знаю что гниль пойдёт от тебя.

tia
() автор топика
Ответ на: комментарий от tia

>сложность в том, чтобы изучать el и функциональность самого имакса

там все отлично самодокументировано

M-x describe-function

M-x desctibe-variable

отличный автокомплит искаропки etc/etc/etc

в виме всё уже есть

бред, там также придется много писать, только на ужасном vimscript

lazyklimm ★★★★★
()
Ответ на: комментарий от tia

Такой молодой

Какой?

сколько кретинизма в сообщениях

Сколько?

dmsh
()
Ответ на: комментарий от tia

Тебе стоит обратиться к психологу или подучить русский язык.

Когда научишься читать не выдерая отдельные части из контекста, когда научишься понимать русский язык - возвращайся.

Давай проведём анализ твоего предложения и выясним, кто не знает русского языка?

Нормальный инженер-программист не может себе позволить каждую минуту обращаться к документации если есть такие средства как автокомплит с автоподсказкой.

Вводная правильная, а вот вывод - нет. Нормальный человек, знакомый с языком разработки и проектом, над которым работает, в документацию часто не лазит, ибо он всё это и так знает и помнит.

Если человек сам отказывается от таких удобств, то он только показывает себя как плохой специалист.

Признаюсь, я - плохой быдлокодер. Отвратительный. Сначала документацию читаю, потом код изучаю, пишу каноничный код. А когда третий раз одинаковый паттерн встречается, то изобретаю функцию или макрос.

Семантическое дополнение в разы эффективнее чем просто завершение слова. Чуешь разницу? Или это для тебя слишком не Ъ?

Критерии эффективности приведи.

mv ★★★★★
()
Ответ на: комментарий от lazyklimm

>бред, там также придется много писать, только на ужасном vimscript
Не раз настраивал вим для работы. Не настраивал, правда, тучи плагинов, но тем не менее.
Всё обходилось тем, что я делал, как максимум, пару функций в основном конфиге. И это для того чтобы некоторые фишки сделать под себя.
В имаксе же, как я видел и как говорят его пользователи, приходится иногда помучить el.
То что у el шикарный автокомплит и документация в тултипах - хорошо, но в виме этого и не нужно, основных функций мало, а всё остальное достаточно хорошо понятно.

tia
() автор топика
Ответ на: комментарий от mv

>Давай проведём анализ твоего предложения и выясним, кто не знает русского языка?
Не нужно переводить стрелки. Всё с тобой уже ясно.

Нормальный человек, знакомый с языком разработки и проектом, над которым работает, в документацию часто не лазит, ибо он всё это и так знает и помнит.

У тебя слабое понимание того, как строятся проекты, скажу я тебе. Ты хоть раз что-то большое использовал в своём проекте? Писал что-то больше 100 строк кода?
Неужто ты использовал библиотеку вроде Qt или Gtk+ и заглядывал в доки и референсы только раз в день, на пару минут? Ты держишь названия всех функций каждого объекта в голове?
Можешь не отвечать, мне уже очень смешно от твоих ЧСВ'ных высказываний.

Признаюсь, я - плохой быдлокодер. Отвратительный. Сначала документацию читаю, потом код изучаю, пишу каноничный код. А когда третий раз одинаковый паттерн встречается, то изобретаю функцию или макрос.

Ты хочешь сказать, что в твоём коде не встречается больше 3х прямых вызовов одной и той же функции? Слабо верится. Хотя я представляю какой у тебя быдлокод.

Критерии эффективности приведи.

Тебе было дано не достаточно информации для составления списка критериев эффективности в данном контексте? Может ты и правда страдаешь слабоумием?

tia
() автор топика
Ответ на: комментарий от tia

> Всё обходилось тем, что я делал, как максимум, пару функций в основном конфиге.

Ты не поверишь.

anonymous
()
Ответ на: комментарий от mv

> Нормальный человек, знакомый с языком разработки и проектом, над которым работает, в документацию часто не лазит, ибо он всё это и так знает и помнит.

Т.е. API используемых библиотек нужно знать наизусть, как материал по предмету перед экзаменом (который без учебников сдается)?

kamre ★★★
()
Ответ на: комментарий от mv

Нет, ты глупый программист(если тебя можно так вообще назвать), который впал в маразм.
Ты думаешь что я злюсь? На самом деле мне смешно от того бреда что ты пишешь. Продолжай в том же духе, лору нужны клоуны.

tia
() автор топика
Ответ на: комментарий от kamre

4хзвёздочный mv так и считает.

tia
() автор топика
Ответ на: комментарий от kamre

Т.е. API используемых библиотек нужно знать наизусть, как материал по предмету перед экзаменом (который без учебников сдается)?

Ту часть библиотеки, которую часто используешь, и так, волей-неволей, приходится знать. Когда возникает потребность использовать что-то незнакомое или успешно подзабытое, то к документации всё равно обращаешься.

mv ★★★★★
()
Ответ на: комментарий от mv

> Ту часть библиотеки, которую часто используешь, и так, волей-неволей, приходится знать.

Это, конечно, так и есть. Но хороший семантический автокомплит позволяет избегать опечаток, ручного набора длинных имен, сокращает время на обращение к документации (если вдруг приходится), позволяет сразу писать компилируемый код. Хотя возможность проверки ошибок в коде по мере редактирования больше помогает, но когда она реализована в IDE, то и семантический автокомплит там уже не сложно приделать, так что непонятно зачем от него отказываться.

kamre ★★★
()
Ответ на: комментарий от tia

>Не раз настраивал вим для работы. Не настраивал, правда, тучи плагинов

вот именно

В имаксе же, как я видел и как говорят его пользователи, приходится иногда помучить el.

приходится, если настраивать тучу плагинов

Если нет, то:

пару функций в основном конфиге

будет достаточно

lazyklimm ★★★★★
()
Ответ на: комментарий от kamre

Это, конечно, так и есть. Но хороший семантический автокомплит позволяет избегать опечаток, ручного набора длинных имен, сокращает время на обращение к документации (если вдруг приходится), позволяет сразу писать компилируемый код. Хотя возможность проверки ошибок в коде по мере редактирования больше помогает, но когда она реализована в IDE, то и семантический автокомплит там уже не сложно приделать, так что непонятно зачем от него отказываться.

Да, но долдонить «автокомплит, автокомплит, автокомплит», и говорить, что документация не нужна (хотя он потом и начал отмазываться от своих слов), как это делает ТС, наводит на нехорошие мысли. Навороченный редактор - это вообще не главное в программировании. Программы пишутся в голове.

mv ★★★★★
()
Ответ на: комментарий от kamre

>ручного набора длинных имен

для этого обязательно нужен семантический автокомплит?

сокращает время на обращение к документации (если вдруг приходится)

один раз обратишься к документации, второй, третий, а потом уже будешь знать наизусть

с автокомплитом - твоя скорость так и будет им ограничена

В перспективе - читать доки выгоднее

lazyklimm ★★★★★
()
Ответ на: комментарий от lazyklimm

>один раз обратишься к документации, второй, третий, а потом уже будешь знать наизусть

+1

После двух тысяч строк UI-кода от GTK я уже безошибочно писал все эти gtk_функции_с_длинными_именами_в_пол_экрана на память :)

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

ааа, я понял почему мне

милые-добрые-лиспо-подобные-имена

нравятся больше, чем

gtk_функции_с_длинными_именами_в_пол_экрана

shift не надо жать!!!11

lazyklimm ★★★★★
()
Ответ на: комментарий от tia

>Нет, ты глупый программист(если тебя можно так вообще назвать), который впал в маразм.

Ты думаешь что я злюсь? На самом деле мне смешно от того бреда что ты пишешь. Продолжай в том же духе, лору нужны клоуны.

tia, вы идиот

Drdiesel
()
Ответ на: комментарий от kamre

тут быстрее работает не семантический комплит, а быстрый динамический по открытым буферам

ott ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.