В чем преимущество использования таких вещей, как emacs, vim и nano, перед любой другой IDE или текстовым редактором? - PullRequest
16 голосов
/ 02 ноября 2010

Из того, что я видел. Emacs и т.д .. запустить в терминале. Есть ли польза от этого? Кажется, что было бы больше хлопот, чтобы написать и организовать вещи. Я не пытаюсь быть субъективным. Я буквально ничего не знаю о emacs, vim, nano и т. Д. И хотел бы узнать больше, возможно, используйте один из них.

Ответы [ 9 ]

21 голосов
/ 02 ноября 2010

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

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

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

14 голосов
/ 03 ноября 2010

В настоящее время большинство людей используют IDE.Они помогают с вещами, которые вы можете получить путем анализа вещей, которые вы уже написали.Эти вещи могут быть очень полезными и полезными, но они не помогают в основной задаче редактирования кода.Создатели инструментов делают ставку на то, что эти дополнительные вещи обеспечивают достаточную выгоду, что перевесят эффективность vim и emacs в качестве редакторов.Они в значительной степени выиграли эту битву в большинстве сообществ, главным образом потому, что новые разработчики столкнулись с выбором между отличным дополнением кода и простой поддержкой рефакторинга, а также редактором, от которого они не получат никаких преимуществ в течение примерно 6 месяцев.Простой способ.Я знаю, что сделал.

Теперь я парень.Похоже, у Vim на самом деле нет той же верхней границы производительности, я использую ее более года, и полугодично все еще сталкиваюсь с вещами, о которых я не знал, которые делают меня быстрее.Даже без этого, чем больше я этим пользуюсь, тем меньше думаю о том, что я делаю, что опять же делает меня быстрее.Кроме того, vim существует для всех языков и платформ и устанавливается на любой сервер UNIX из коробки.Он не имеет загрузочных экранов, практически вылетает на экран, фантастически работает с большими файлами и никогда не тормозит и не падает.Навыки, которые вы изучите с его помощью, будут применимы ко всему, что вы когда-либо делали до конца своей карьеры, в отличие от IDE, которая будет меняться при смене платформы.

Vim - это инвестиция, но если выГоворя о чем-то, что вы будете использовать в течение 8-10 часов в день почти всю оставшуюся жизнь, кривая обучения становится совершенно неактуальной.

9 голосов
/ 02 ноября 2010

Нет реальной причины использовать нано.Практически все лучше.

Что касается vim и emacs, вот что я сказал в прошлый раз, когда это произошло :

Я полукомпетентен с сочетаниями клавиш vi,но я предпочитаю Emacs в целом.Причина, по которой у этих редакторов такие пылкие приверженцы, заключается в том, что предоставляемая ими модель редактирования является более мощной, чем в более новых системах, поэтому недостаточно предоставления «привязок клавиш vi» или «привязок клавиш emacs», даже если вы не используете какие-либо функции расширения.или настройки для emacs или vi.

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

Буферы Emacs, конечно, могут поддерживать этиоперации.Наряду с отслеживанием позиции курсора для каждого окна, в котором они видны, они также отслеживают сделанные в них «отметки».Текст между «точкой» (позицией курсора) и «меткой» называется «областью» и примерно соответствует выделению в основных редакторах.

Разница в том, что Emacs отслеживает последние несколькоместа, в которых была установлена ​​метка в кольце меток, и вы можете вернуться к ним нажатием клавиши (или двумя, в зависимости от вашей конфигурации).Я нахожу это чрезвычайно полезным, тем более что многие команды Emacs, которые изменяют ваше местоположение в буфере, устанавливают метку в вашем старом местоположении.Например, когда я редактирую модуль Python и мне нужно добавить оператор импорта в начало файла.Нажатие клавиши для перехода к вершине буфера (Alt- <) устанавливает метку.Я добавляю заявление на импорт.Я нажимаю Ctrl-U Ctrl-Space и возвращаюсь туда, откуда начал.Я могу продолжать делать это, чтобы вернуться к предыдущим позициям.(Возможно, мне нужно было выбрать какой-то текст при добавлении этого оператора импорта.) </p>

Другое (и более известное) отличие Emacs - это список уничтожений.Большинство нажатий клавиш для удаления текста из буфера сохраняют текст в список уничтожений, который затем можно вызвать с помощью команды «yank» (Ctrl-y).Важной особенностью является то, что последующие команды yank возвращают старый уничтоженный текст.Таким образом, вы можете убить несколько разделов текста подряд, а затем получить их по порядку.Вы также можете циклически перемещаться по кольцу уничтожения с помощью Alt-y после рывка, удаляя извлеченный текст и вставляя следующую запись в кольцо.

Emacs имел эти функции в 1978 году. Единственная другая основная система, которая приняла ихв какой-то степени это NeXTStep (и теперь наследуется Какао).Другие инструменты предоставляют больше возможностей для конкретных задач, могут быть расширены на языках, более простых в использовании, чем Emacs Lisp, и имеют более приятные визуальные интерфейсы ... но Emacs остается лучше при редактировании текста.Вот почему, когда вы знаете, как его использовать, так трудно бросить.

6 голосов
/ 02 ноября 2010

Vim пород

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

Частью секрета vim является строчный режим , который он унаследовал, в конечном счете, от текстового редактора ed (1), написанного самим Кеном Томпсоном. Это удивительно мощный инструмент: его можно использовать для рефакторинга и даже помещать в сценарии. Он основан на замене шаблона регулярного выражения.

И со всей этой мощью, поскольку это старое школьное приложение Terminal / xterm, оно запускается мгновенно и никогда не обнаруживает задержки.

Я много раз переключался на IDE и gui редакторы, но продолжаю возвращаться к vim. Думаю, на этот раз я просто буду придерживаться этого и спасу себя в объезд.


Заметки:

Если ваша IDE поддерживает рефакторинг, это причина для использования IDE. Я просто использую это как пример сложной задачи редактирования.

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

4 голосов
/ 02 ноября 2010

Есть две вещи (примерно), которые вы получаете от использования VIM / Emacs:

  1. Customizability
  2. Они бегут повсюду

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

3 голосов
/ 03 ноября 2010

Emacs и Vim - самое совершенное и многоцелевое программное обеспечение, о котором я только могу подумать.

Это более конкретно верно при работе в среде Unix, где простые текстовые файлы используются для всего (кода, сценариев, конфигурации, процессов и т. Д.).

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

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

2 голосов
/ 03 ноября 2010

emacs - и, я полагаю, vim, возможно - имеют несколько преимуществ:

  1. Больше возможностей экрана.
  2. Real Ultimate Extensibility
  3. Минимальное использование памяти,У меня открыто более 100 файлов, в том числе несколько файлов для удаленного редактирования с использованием оперативной памяти менее 35 МБ.
  4. Emacs никогда не закрывается, если вам не нужно перезагружать компьютер или обновлять emacs.Обычно я запускаю один процесс emacs неделями подряд.
  5. Тривиально легко изменить.Я могу порекомендовать режим подсветки для DSL за день, если захочу.С отступом это более или менее работает.И я даже не настолько хорош в emacs.
  6. Проще на руках, так как вы можете легко переназначать клавиши, чтобы поддерживать форму вашей личной руки и предпочитаемую форму клавиатуры.
  7. Надежно.Я мог бы однажды вызвать сбой emacs.
  8. Работает везде, где я могу получить доступ.Возможно, некоторые старые системы IBM 390 могут его не запускать ...

Я использовал Visual Studio и несколько затмевал.Они не так хороши в редактировании необработанного текста, как emacs.Они значительно медленнее и поддерживают меньше языков.

Единственное осмысленное возражение, которое я слышал в отношении emacs, - это "отсутствие смысла".Я не использую VS / Eclipse Intellisense, когда я там редактирую.Более того, механизмы автозаполнения в emacs превосходят, насколько я могу судить.(например, автозаполнение имен переменных).

Конечно, это требует обучения.Что касается emacs, я бы посчитал, что 1 месяц ежедневного использования приведет вас к удобной компетенции для повседневного использования.

1 голос
/ 02 ноября 2010

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

1 голос
/ 02 ноября 2010

Я часто использую vi (сейчас я использую его на работе, потому что не могу потрудиться запустить xserver и потому, что он быстро запускается), но только потому, что мне пришлось изучать его (и "этим"«Я имею в виду довольно небольшое подмножество команд) много лет назад, это полезно для удаленного редактирования файлов и иногда gedit или чего-либо недоступного.

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

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

...