Вопрос

Прямо впереди:Я делаю нет хотят начать религиозную войну.

я использовал ви сколько себя помню, и несколько раз я пытался подобрать Эмакс Я настолько растерялся, что быстро сдался.Однако многие люди находят Emacs очень мощным инструментом.Его программируемость в некоторой степени легендарна.Я в основном занимаюсь разработкой Solaris+Java и хотел бы задать простой вопрос:увеличится ли моя производительность, если я потрачу время на изучение Emacs?Является ли функциональность, которую он предлагает, более Вим окупится ли это повышением производительности в разумные сроки?

Повторить:Мне не нужен ответ: «Мой редактор лучше вашего».Я просто хочу получить ответ «да» или «нет» на вопрос, стоит ли тратить время или нет.Действительно ли увеличится моя продуктивность?

Это было полезно?

Решение

Я предпочитаю emacs vi, но мне комфортно и в том, и в другом.

В emacs можно выполнять некоторые действия, которые делают его более мощным, чем vi, но не все из них вообще связаны с программированием.(Можете ли вы отправлять электронную почту или читать новости из vi?Нет, но кого это волнует?) Если вам комфортно работать с Lisp (я нет), возможно, вы сможете написать дополнения, режимы и прочее, чтобы облегчить себе жизнь, но это, скорее всего, будет раскраска синтаксиса и фигурные скобки. совпадение и такая радость для глаз.

Я перестану сейчас болтать.Будет ли ваш производительность увеличить с помощью emacs?Нет.

Обновлять:Смотрите мой комментарий ниже.С тех пор как я опубликовал это, я иметь столкнулся с тем, что использование emacs сделало меня более продуктивным, чем использование vi.

Другие советы

[Отказ от ответственности: лично, я предпочитаю Вим.Отказ от ответственности:читай дальше.]

Vim выделяется в малом:Разделив движение и действие на отдельные концепции и предоставив возможности для сложных повторов, вы можете выполнять невероятно мощные операции редактирования всего за короткую последовательность нажатий клавиш.В Vim в обычном процессе редактирования вы можете легко делать что-то, что потребует от вас перехода к написанию сценариев в Emacs.Кроме того, большая часть используемой вами мощности поступает из коробки, поэтому даже если у вас обширная .vimrc настройки, скорее всего, вы сможете продуктивно работать с любой Установка ВИМа.

Emacs выделяется в целом:Сопоставляя все концепции пользовательского интерфейса непосредственно с базовыми конструкциями и концепциями в Elisp, становится очень легко глобально внедрять функции для определенных типов файлов или обстоятельств, что делает Emacs чем-то вроде текстовой и гораздо более структурно программируемой формы Excel.Это предполагает, что вы собираетесь потратить много времени на настройку своей среды в соответствии с личными потребностями и предпочтениями.Конечно, Emacs делает все возможное, чтобы вам было легко оставаться в одной среде для всего, что вы захотите сделать.

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

vi — кухонный нож.

vim — действительно хороший, острый и сбалансированный поварской нож.

Emacs — это световой меч.

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

Я использую Emacs уже 20 лет.Я сейчас печатаю в Emacs с виджетом под названием «Это все текст» это позволяет мне вставлять текст в текстовые поля Firefox и из них.Я могу работать очень быстро в Emacs.Без него я значительно менее продуктивен.

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

В зависимости от того, как вы кодируете, вы может увидеть рост производительности.Для справки: я также давний пользователь vim, но я изучил emacs около 2 лет назад и теперь использую их как взаимозаменяемые.

К фактическому изучению emacs меня подтолкнула его полезная способность одновременно открывать большое количество файлов и легко переключаться между ними.Я как раз представлял функцию, которая добавила и затронула большое количество классов.(Это был C++, поэтому обычно в каждом классе было два файла.) Поскольку я все еще дорабатывал интерфейс, я обычно находился в процессе обновления одного файла, когда понимал, что мне нужно изменить другой.

С помощью gvim было проще всего открывать новое окно для каждого файла, что становилось громоздким.Однако в Emacs было просто открыть новый файл в том же окне (Ctrl-x, Ctrl-f).Как только в Emacs открыт файл, очень легко переключаться между открытыми буферами (Ctrl-x, Ctrl-b).

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

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

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

Я не хочу священной войны, но, пожалуйста, ответьте на весьма субъективный вопрос ответом да/нет.

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

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

Короткий ответ на ваш вопрос: «ДА».Более подробно ниже.

Я использовал почти исключительно vi примерно с 1980 по 1991 год.Единственный раз, когда я не использовал vi, это когда я имел дело с минимальной установкой Unix, которая была слишком мала для включения vi, поэтому мне пришлось вернуться к ed, который представляет собой минимальный набор функций редактирования, который был встроен в исходный vi. на вершине.

Примерно с 1985 года другие программисты, где я работал, постоянно восхваляли emacs.Но каждый раз, когда я пытался научиться этому, мне не удавалось продвинуться далеко.Я потратил час на изучение учебного курса по emacs (C-h t), и к концу всего этого я знал только то, как вставлять и изменять текст и перемещаться по экрану.С vi я мог сделать гораздо больше, чем то, чему научился за тот час с emacs, что не смог переключиться.Три месяца спустя я нашел время, чтобы потратить еще час, и в конечном итоге прочел тот же материал.В Emacs есть кривая обучения с заглавной буквы «L».Только когда я выполнял контракт, по которому все остальные использовали emacs, я в конце концов решил, что мне нужно уделять его изучению более часа за раз.Потратив чуть больше дня, ничего не делая, кроме работы с руководством и прилагаемой документацией, я, наконец, дошел до того, что мог делать с emacs то, чего не мог с vi.С тех пор я никогда не хотел возвращаться.Я все еще могу вводить команды vi во сне, но с помощью emacs я могу сделать гораздо больше.

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

Среди вещей, от которых я постоянно завишу в emacs:

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

  2. Emacs предоставляет многооконную среду, отображаемую на терминале с символьными ячейками.Во времена, когда еще не было растровой графики и настоящих окон, emacs был написан для имитации поведения окна, используя только символы ascii и позиционирование курсора.Вы, вероятно, думаете: «Это древняя история.Почему кого-то это должно волновать сегодня?» Я до сих пор использую эту возможность каждый день.Я использую веб-хостинговую компанию, которая предоставляет мне доступ по SSH.Таким образом, я могу войти в систему Linux через Интернет и запускать команды оболочки.Хотя это довольно мощно, гораздо эффективнее иметь возможность разделить мой эмулятор терминала на «окна» с помощью emacs, запускать оболочки в нескольких из этих «окон», редактировать файлы в других окнах, а также просматривать и редактировать каталоги в других «окнах». окна».

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

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

  4. Когда вы используете команду emacs для открытия файла, но на самом деле вы выбрали каталог, буфер работает в режиме dired (редактор каталогов).В этом режиме одно нажатие клавиши откроет все, на что в данный момент указывает курсор, будь то файл или подкаталог.Буфер в режиме dired представляет собой файловый менеджер — терминал, ориентированный на символьные ячейки, аналог Finder на Mac или проводнике Windows.

  5. Одна из функций emacs, которую я использую почти постоянно, — это «окна сравнения».Я предпочитаю это «разницам» командной строки или инструментам сравнения графического интерфейса, таким как встроенные в Eclipse.Diff или Eclipse сравнивают файлы целиком и показывают, какие строки отличаются.Но что произойдет, если у вас есть две разные линии, которые выглядят очень похожими?Учтите следующее:

    Чем эта линия отличается от другой?

    Чем эта линия отличается от другой?

    Сколько времени вам понадобится, чтобы заметить разницу?(Намекать:Апострофы ASCII и Unicode очень похожи.)

    В отличие от diff и Eclipse, которые просто показывают различающиеся строки, функция «окна сравнения» в emacs является интерактивной.Вы помещаете курсор в каждом из двух расположенных рядом окон в точку, где содержимое окна одинаково.Запустите «compare-windows», и курсор в каждом окне переместится на первый отличающийся символ.Переместите курсор в одном из окон в точку, где оно совпадает с другим окном, и повторно запустите «окна сравнения», чтобы найти следующее отличие.Это позволяет легко сравнивать части файлов.

    Еще одна вещь, для которой я регулярно использую «окна сравнения», — это сравнение контрольных сумм.Многие программные проекты распространяют архив приложения на странице, которая также включает хэш MD5 архива.Итак, как сравнить хеш MD5 на странице раздачи с хешем MD5, вычисленным из загруженного файла.Emacs делает это тривиальным.

    Сначала скопируйте хэш MD5 с веб-страницы в новый буфер emacs.Затем, после загрузки файла .tar.gz, запустите:

    md5sum загруженный файл.tar.gz

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

  6. В предыдущем пункте я привел пример запуска «окна сравнения» на строках:

    Чем эта линия отличается от другой?

    Чем эта линия отличается от другой?

    «Compare-Windows» оставит курсор на апострофе в каждой строке.Итак, теперь вы знаете, какие персонажи различаются.Но что это за персонажи?Введите команду CTRL-x =, нажав две клавиши, и emacs отобразит символ, его значение ascii в восьмеричном, десятичном и шестнадцатеричном формате, смещение символа от начала файла и смещение символа от начала строки.Поскольку ASCII — это 7-битная кодировка, у всех символов ASCII старший бит отключен.Как только вы увидите, что значение первого апострофа — 0x27, а второго — 0x92, становится очевидно, что первый находится в наборе символов ASCII, а второй — нет.

  7. Emacs был одной из первых IDE, возможно, самой первой.Имеет режимы для определенных языков.Я считаю их удобными для создания последовательных отступов в моем коде, чтобы сделать его более читабельным.Также имеется встроенный функционал для компиляции и отладки кода.Я не так часто использую функции компиляции, потому что, когда я писал для компилируемого языка, такого как C, я привык делать это в командной строке оболочки.Функциональность отладки была очень хороша для C и C++.Он интегрировал gdb с редактором таким образом, что вы получали практически те же функциональные возможности, что и возможности отладки в Eclipse, но не тратили впустую пространство экрана, как это делают современные IDE на основе графического пользовательского интерфейса.Теоретически интеграция отладчика должна быть простой, чтобы его можно было применить практически к любому другому языку, но я не проверял, с какими еще языками он работает в настоящее время.

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

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

  10. Привязки клавиш Emacs.Я буду первым, кто признает, что сочетания клавиш в Emacs — отстой.Но он настолько мощнее, чем все остальное, что я использовал, что я готов мириться с привязками клавиш.

  11. В юмористическом ключе много лет назад автор Emacs Ричард Столлман (также создатель GPL, основатель проекта GNU и основатель FSF) высмеивал тех, кто рассматривает vi vs.emacs как священная война.Он придумал персонажа «Святой Игнуций» из церкви Эмакс.В таком виде Столлман прокомментировал: «Иногда люди спрашивают меня, является ли грехом в Церкви Emacs использовать другой текстовый редактор vi.Ну, это правда, что vi vi vi - редактор зверя, но использование бесплатной версии vi - это не грех, это покаяние." (см. http://stallman.org/saint.html.Еще есть его милая фотография, но, поскольку я новичок в StackOverflow, я не могу опубликовать более одного URL-адреса.Итак, зайдите в тот же домен, но получите файл Saintignucius.jpg)

Я использовал Vim в течение 10 лет, а 2 года назад углубился в Emacs.У меня достаточно свежие воспоминания о том, как менялась с течением времени моя кривая производительности.

Все мои баллы условны, YMMV зависит от ваших сильных сторон и опыта.

Если вы использовали Unix и командную строку достаточно долго и знакомы с C-a, C-e, C-n, C-p, C-k, C-y и т. д., как они функционируют в оболочке, переход к использованию тех же привязок не займет много времени ( по умолчанию) в Emacs.Недавно я обнаружил, что XCode также использует эти привязки.

Если вас устраивает постоянно работающий редактор, работающий с буферами (как если бы вы работали с вкладками браузера) и, таким образом, вы живете в приложении (как если бы вы работали с приложениями Web2.0 в браузере), Emacs, скорее всего, сразу же продемонстрирует повышение производительности.

Если вы обычно работаете над проектами, состоящими из множества связанных файлов, такое сохранение дает некоторые дополнительные преимущества при сохранении контекста этого буфера.Каждый буфер привязан к своему открытому файлу, что позволяет удобно использовать различные инструменты повышения производительности для вашего проекта (например, grep-find, eshell, run-python и slime).В сочетании с завершением текста, ясниппетами и т. д. это начинает выглядеть немного похоже на IDE, хотя и индивидуально и в значительной степени индивидуализировано вашей конфигурацией.Это не считая более цивилизованных сервисов, подобных Emacs IDE, таких как ECB.

Поначалу моя производительность сильно пострадала, поскольку я постоянно набирал «jjjkkk» Esc-Esc-Esc-Esc в течение первой недели или около того.На следующей неделе я осторожно начал использовать правильные навигационные клавиши.Затем я обнаружил файл конфигурации...Честно говоря, если бы у меня был Стартовый комплект Emacs С самого начала я бы сказал, что моя производительность постепенно вернулась к паритету в течение 3-4-й недели, но я все же залез в кроличью нору конфигурационного файла.Однако мой коллега только что перешел с vim на emacs, он только что взял стартовый комплект и уже в пути.Первая неделя прошла, и он, кажется, чувствует себя комфортно и наслаждается всеми неожиданными преимуществами (это ощущение, вероятно, продлится десять лет).

Наконец, если вы допустите ошибки, вы сразу же повысите производительность (и уверенность) за счет циклического уничтожения/выдергивания и отмены кольца.Я также лично являюсь поклонником отмен в зависимости от региона.

Мой короткий ответ: да, стоит потратить 3-4 недели снижения производительности на изучение Emacs.Даже если вы решите, что предпочитаете для разработки оптимизированную комбинацию утилит Unix вместо Emacs, вы получите от нее образование, широко применимое за пределами редактора.

Документация Emacs — это лес.Я перешел с Emacs на Vim, когда понял, насколько организована документация Vim и насколько удобны многие функции.Я не знаю, что лежит на пути эксперта по Emacs, но предупреждаю вас, что обучение тому, чтобы делать что-то полезное в нем, занимает много времени и не сделает вас лучше в nethack.Держитесь Вима.

Соратник по тексту это лучший Emacs для Mac, хотя с Solaris он вам не поможет.Eclipse — это круто, и у него много плагинов.

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

Вот быстрый тест:настроили ли вы свой оконный менеджер, чтобы сделать вашу среду более эффективной (адаптированной к вашим потребностям)?Если «нет», то, скорее всего, вы не получите окупаемости инвестиций в изучение emacs.

При этом, если вы разрабатываете Java, стандартным ответом является Eclipse, поэтому ваш вопрос довольно спорный.

Я был очень доволен своим Vim, но однажды я услышал о организационный режим, я начал изучать Emacs.org-mode может быть одной из веских причин изучить Emacs.

Я люблю emacs и использую его каждый день.

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

Если вы программируете на Java, вам нужна хорошая IDE.Emacs вполне может стать одним из них, но давайте посмотрим правде в глаза: IDEA и другие с легкостью превзошли его.(Emacs, вероятно, вдохновил многие из этих IDE, но это уже другая история).

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

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

Попробуйте Емакс.Посмотрите, подойдет ли он лучше.Это беспроигрышная ситуация.

Я хочу продолжить изучение emacs, но я просто не могу использовать его в течение длительного времени;у меня болят руки.Я делаю что-то ужасно неправильное?

vim и emacs, они САМЫЕ способные редакторы, причем уже довольно давно.Если вы знаете кого-то действительно хорошо, я сомневаюсь, что вы так много выиграете в процессе...

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

/Йохан

Нет (и я использовал оба).

Аналогично тому, как не искать религиозной войны (но проголосуйте против меня, если считаете, что это необходимо), почему вы считаете, что единственный вариант для vi — это emacs?Это операционная система, на которой вы разрабатываете, или просто варианты, которые вы исследовали?

В настоящее время в сфере разработки Java используются одни из лучших IDE (как бесплатные, так и платные), если не лучшие, когда дело доходит до поддержки редактирования кода и рефакторинга. У IntelliJ IDEA даже есть плагин vi, который поможет вам чувствовать себя как дома. например (не уверен, доступно ли что-то подобное для Eclipse).Хотя смена инструментов действительно требует обучения, время, потраченное на это, может окупиться, если скачок будет достаточно большим.

Как быстро вы печатаете?Если вы охотитесь и клюете, то emacs не для вас.Если вы быстры, это может помочь вам не постоянно хватать мышь.

Как правило, emacs более мощный, чем vi.В emacs можно сделать гораздо больше вещей.

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

Одна из веских причин изучить Emacs заключается в том, что другие программы также используют сочетания клавиш Emacs.Например, вы можете использовать сочетания клавиш Emacs в командной строке bash или что-то еще, используя GNU readline.Полезно изучить базовые движения, удаление слов/строк и аккорды отмены/повтора в Emacs, чтобы вы могли использовать их в других программах.Ваша производительность при использовании этих других инструментов возрастет, даже если вы никогда больше не будете использовать Emacs.

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

Действительно ли увеличится моя продуктивность?

В течение первых нескольких дней/недель категорически нет.

После того, как вам перестанет читать руководство каждый раз, когда вы захотите что-то отредактировать — конечно..

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

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

Возможно, это не так продуктивно - я бы сказал, что vim быстрее редактирует файлы, emacs лучше делает все остальное (опять же, лично я бы сказал такие вещи, как flymake-mode, привязки VCS используются быстрее, чем эквивалент vim)

Я согласен с Аланом Стормом:«потому что шаблоны и метафоры, используемые в Emacs, могут не совпадать с вашим мозгом»

Это очень важный фактор.Разный мозг по-разному адаптируется к разным интерфейсам.

Некоторые из основных и легкодоступных функций, за которые я действительно люблю Emacs и которые считаю повышающими производительность:
1.Функция «yank-pop» — каждая вырезка/копия сохраняется в стек, поэтому вы можете позже выбрать, что вставить (не знаю, есть ли это в vi / Vim, но в большинстве Java IDE нет)
2.отображение навигации с помощью клавиши Ctrl — это позволяет вам перемещаться по файлу, не отрывая рук от клавиш со стрелками.(конечно, привязка клавиш в других редакторах помогает)
3.доступны почти на каждой платформе (конечно, это относится и к vi/Vim) - будь то графический интерфейс или текстовый интерфейс (Java IDE также доступны на большинстве платформ, но только в режиме графического интерфейса, они значительно больше и их необходимо устанавливать отдельно, тогда как Emacs как правило, более широко доступен - системы BSD / *nix / Linux / Mac
4.Я предпочитаю, чтобы мой редактор не мешал мне, пока он мне не понадобится — спартанский интерфейс Emacs заставляет меня думать, прежде чем печатать.
5.Основные навигационные клавиши в Emacs доступны повсеместно — в моей Mac OS я могу использовать эти клавиши в терминале, Mac-почте и т. д.

В конечном счете, если философия Emacs вам нравится, вы приложите дополнительные усилия для ее изучения.И это вознаградит вас.

Поскольку vi/Vim и Emacs довольно близки с точки зрения того, что они могут или не могут делать, производительность этих двух редакторов зависит от опыта их использования.

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

Что касается меня, я использую оба.Это все равно что взять на войну несколько видов оружия: использовать правильное в правильных обстоятельствах.;)

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

Отказ от ответственности: Я невежественен.Я пользуюсь emacs около 4 лет и пользователем vim около 6 месяцев, а может быть, и больше 15, если посчитать все время, когда я пытался выучить его и ненавидел.(Различие режима письма и движения меня убивает.Каждый раз.Так что, если это вас не убьет, то мое мнение может быть совершенно бесполезным.) Тем не менее, я думаю, что мое мнение на самом деле интересно отличается от 26 других, которые я видел здесь, поэтому я собираюсь его озвучить.:Отказ от ответственности

Мое мнение:

  • Emacs лучше подходит для набора текста, особенно в больших объемах: «Я пишу новую функцию, и пройдет некоторое время, прежде чем я даже пытаться чтобы увидеть, работает ли он».
  • Vim лучше подходит для редактирования, особенно для быстрого редактирования.

Когда мне нужно понять и взломать 8 файлов одновременно, свойства Emacs как тайлового оконного менеджера с мультибуфером (буферы имеют соответствие файлам 1,2:1, часто это одно и то же, но не обязательно) регулярное выражение -поиск (и замена) невероятен.

Если мне не нравится какая-то мелочь из-за git diff в оболочке (я не часто использую функции VC emacs, хотя когда использую, они мне нравятся) я открываю его с помощью vim и ухожу быстрее, чем успеваю Alt-TAB.

Тот факт, что команды редактирования Emacs более доступны во время набора текста, делает ввод текста много быстрее, чем в Vim. Ctrl+a является много быстрее, чем ESC ^ i, и у вас нет когнитивной нагрузки типа «хочу ли я a или i или o или O...» о чем, боже, я ненавижу думать.И то же самое для всех остальных команд движения.

Я печатаю быстрее, намного быстрее в Emacs.Это означает такие вещи, как Организационный режим (который я использую для всего:Списки TODO, отслеживание ошибок, заметки, длинные электронные письма, документация...) имеют больше смысла (для меня) в Emacs, чем в Vim.

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

Если вас беспокоит здоровье ваших рук выберите Вим.

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

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

По моему мнению, SLIME — единственная причина перейти на emacs, если вы уже хорошо владеете vi.

Нет

Я использую emacs уже много лет, я перешел с VIM, и мне он очень нравится.

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

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

Какая разница?Это очень весело, а шепелявят собаки!Если вы хотите «добиться цели», забудьте о программировании.Вы всегда можете нанять программистов, чтобы они «делали что-то».

Единственное обстоятельство, при котором я бы рекомендовал изучать emacs из соображений производительности если вы программист Lisp/Scheme/Clojure.Это настолько хорошая среда Lisp, что несколько секунд, которые она сэкономит вам каждый раз, когда вы захотите что-то сделать, быстро обернутся реальной выгодой.И elisp (который относится к lisp так же, как макросы Excel относятся к ALGOL) будет казаться гораздо менее чуждым, если вы уже используете настоящий lisp.

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

В более раннем ответе Аристотель Пагальцис писал:«Вим преуспевает в небольших...В Vim в обычном процессе редактирования вы можете легко делать что-то, что потребует от вас перехода к написанию сценариев в Emacs».

Я переключился на Emacs после более чем десятилетия исключительно с использованием VI, и первоначально я бы согласился с утверждением: «Вы можете легко сделать что -то в VIM в обычной редактировании, которое потребовало бы от вас сценариев в Emacs». Но затем я обнаружил, что, используя макросмерки EMACS и большое количество повторений, я мог бы легко заставить EMACS делать практически все, что VI сделало легко, и гораздо больше.

Функциональность макросов Emacs включает три команды:

C-x (       start remembering keystrokes
C-x )       stop remembering keystrokes
C-x e       replay the remembered keystrokes

Например, в vi, если бы я хотел найти все <a> теги в HTML -файле и добавьте target атрибут, я мог бы сделать что-то вроде следующего:

:g/^<a/s/>/ target="_blank">/

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

Чтобы легко добиться того же эффекта в emacs, я делаю следующее:

1.  C-x (
2.  M-C-s <a\>
3.  C-b
4.  C-s >
5.  C-b
6.   target="_blank"
7.  C-x )
8.  C-u 10000 C-x e

Вот описание того, что делает каждое нажатие клавиши выше:

1.  start remembering keystrokes
2.  regex search for <a.  Note that the "\>" after the "a" is not HTML.  It's emacs regex notation for end-of-word.
3.  back up one character - as a side-effect this gets you out of search mode
4.  search for the next ">"
5.  back up over the ">"
6.  enter space as an attribute-delimiter followed by the target="_blank" attribute
7.  stop remembering keystrokes
8.  replay the remembered keystrokes 10,000 times or until the search fails

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top