Почему люди используют командную строку вместо IDE? [закрытый]

Привет я изучаю C++ и в самом начале использовал командную строку... затем я начал использовать Xcode (и с тех пор не мог переключиться обратно в командную строку) и просто задавался вопросом о некоторых конкретных причинах/ситуациях для использования командной строки вместо IDE...

6 ответов


более эффективный для больших систем - Попробуйте открыть решение VS с помощью 100 проектов и 10 000 файлов.

проще для многих задач, вы редактируете в одном окне, запускаете make в другом, имеете gdb в третьем.

легче автоматизировать задачи, часто легче работать в командах или кросс-платформенных, если у всех есть gcc и vi (или emacs)


большой для меня редактор. Я действительно люблю vim, и довольно редко, что IDE имеет хорошую эмуляцию vim - тем более, что я использую dvorak и должен переназначить много ключей. Для многих других людей они сказали бы то же самое, за исключением того, что они выбрали emacs.

большинство редакторов IDE бледнеют по сравнению с такими, как vim или emacs. Есть функции, которые вы пропустите или намного сложнее, чтобы хорошо работать. Например, ctags определенно помогает вам прыгать в определения функций в vim, но это далеко не так хорошо, как многие IDE, поскольку они действительно понимают язык. И, конечно же, интеграция отладчика и управление проектами и тому подобное не будут работать так же хорошо в vim или emacs, потому что они не являются полномасштабными IDE (хотя вы можете сделать много этого с ними). Но часто власть vim или emacs затмевает все, что имеет над ними IDE.

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

конечно, было бы здорово, если бы вы могли объединить все замечательные функции vim или emacs с полномасштабной IDE-и есть некоторые попытки сделать это - но всегда есть проблемы с ним, и даже лучшие попытки далеки от совершенства. Таким образом, вы часто все еще застряли с выбором vim или emacs и функциями, которые они принесите или IDE с функциями, которые он приносит.

EDIT: переход к тому, почему vim или emacs намного мощнее во многих отношениях, чем ваша типичная IDE, может быть довольно длинным, и уже есть несколько вопросов, которые охватывают это.

это отличный ответ на emacs: https://stackoverflow.com/questions/35809/why-are-vi-and-emacs-popular/35929#35929

это хорошая статья о vi, которая, похоже, связана с часто: http://www.viemu.com/a-why-vi-vim.html

для быстрой попытки с моей стороны дать некоторые причины, почему vim более мощный:

ваша типичная IDE-это в основном усовершенствованный блокнот с точки зрения редактирования текста. Вы вводите текст и используете мышь для навигации (что иногда довольно полезно, но может быть немного медленнее, чем просто с помощью клавиатуры). Они добавляют код-специфические особенности как завершение кода, автоматический код отступы, возможность перехода к определениям функций, инструментам рефакторинга и т. д. (следовательно, почему IDEs может быть так полезен), но их основные текстовые редакторы, как правило, довольно бедны. Они могут добавить некоторые полезные функции, такие как ctrl-d, чтобы удалить строку, но обычно они добавляют очень limited по сравнению с тем, что вы получите в vim или emacs.

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

  • dd удалить всю линию.
  • 5dd удалить 5 строк.
  • dj переместите курсор вверх, удалив все слева на текущей строке и все справа на строке выше.
  • dG удалить все отсюда и до конца файла.
  • 7dgg удалить все строки 7.
  • d% перейти к скобке или парен, который соответствует следующему парен или скобки (в зависимости от того, что приходит первым) и удалить все Между здесь и там, в том числе скобки или парен, что вы переходите к
  • dw удалить все Между здесь и далее начало слова
  • de удалить все Между здесь и следующим концом слова
  • D удалить все и конец линия
  • d0 удалить все Между здесь и в начале строки
  • d^ удалить все Между здесь и началом первого слова на строке
  • dty удалить все Между здесь и следующим возникновением y на этой строке (или ничего, если нет y между здесь и концом строки)

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

большинство IDEs даже не имеют доли доли таких возможностей редактирования. У них есть много других специфичных для программирования и языка функций, которых vim и emacs либо не хватает, либо в которых им намного сложнее работать - такие как хорошее, контекстно-зависимое завершение кода, инструменты рефакторинга, управление проектами и т. д. Но как для редактирования текста capabalities, большинство Иды просто нельзя сравнивать.


по крайней мере в Unix, инструменты командной строки зрелые. Ошибки, с которыми мне приходится иметь дело, на данный момент очень неясны. vi, make, gcc, gdb - этим инструментам в некоторых случаях 20 лет и более. Проверено, проверено, доказано.

кроме того, они вездесущие. У всех есть vi, make, gcc. Мне не нужно беспокоиться о том, что у меня нет моего tool-du-joir. Я могу перейти к практически anyones box, и никаких проблем, я могу компилировать, писать, отлаживать без необходимости учиться какой инструмент фантазии.


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

во-вторых, многие разработчики привыкли к инструментам Unix, которые являются зрелыми, очень мощными и предназначены для использования самими собой. В Microsoft Windows нет такой традиции, и там правили IDEs начиная с турбо Паскаля. (Большим преимуществом Turbo Pascal было то, что в дни, предшествовавшие какой-либо многозадачности, не было необходимости запускать и останавливать редактор, а затем запускать компилятор и компоновщик отдельно перед запуском теста.)

В-третьих, очень, очень легко автоматизировать все, что вы делаете из командной строки. Это труднее сделать в GUI любого рода, как в том, что инструменты гораздо труднее разработать, и в том, что они труднее учиться. Опять же, есть культура разрыв здесь, поскольку традиция Unix заключается в том, чтобы иметь дело со сложными процедурами путем их автоматизации, а традиция Microsoft-создавать GUIs и wizards.

В-четвертых, для обработки сложных систем по-прежнему нет метода, явно лучше, чем человеко-читаемое текстовое представление. Синтаксис Unix makefiles плох, но это позволило бы избежать проблемы, которую я недавно имел, где конфигурация шага после сборки в одной настройке файла проекта Visual C++ была неправильной в одном случае, и это трудно было определить. Используя makefile и vim, я могу просто и надежно изменить способ компиляции и сборки данного проекта. Это намного сложнее с Visual Studio.


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

кроме того, вы всегда должны использовать IDE для отладки, компиляции и редактирования кода.


сборки командной строки можно автоматизировать и использовать стандартные инструменты, такие как CMake для ваших сборок командной строки сделайте такие сборки кросс-платформенными (обратите внимание, что вы можете построить проект Xcode из командной строки, используя xcodebuild, но это работает только на Mac OS X с Xcode). Автоматизация невероятно важна, потому что она позволяет, например, создать "крючок" для вашей системы управления версиями, чтобы построить проект и отклонить код, который не компилируется или иметь сервер непрерывной интеграции периодически создает ваш проект, чтобы вы могли легко определить, когда были внесены изменения в код, и быстро их исправить.

в дополнение к переносимости и автоматизации, командная строка просто быстрее. Если вы используете проект Makefile или что-то вроде Шаблон Проекта C++ который использует CMake, но имеет оболочку Makefile, тогда все, что требуется, это простая команда "make" для сборки. Во второй раз, когда вы строите, вам нужно только ударить стрелка вверх, а затем нажмите ENTER для его повторного запуска "make". Хотя новички с командной строкой могут быть не очень быстрыми и могут найти GUI / IDE проще, как только вы некоторое время использовали командную строку, она становится намного быстрее, чем делать это с GUI, и все эти движения мыши и щелчки кажутся медленными и пустой тратой усилий.