Различия между Emacs и Vim

Java-код, если кому-то интересно. Вход: 4 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 Выход: 1 2 3 4 8 3 7 6 5 4 9 5 6 7 2 1

public class ArraySpiralPrinter {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt(); //marrix size
    //read array
    int[][] ar = new int[n][n];
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        ar[i][j] = sc.nextInt();
      }
    }
    printTopRight(0, 0, n - 1, n - 1, ar);
  }
    //prints top and right layers.
  //(x1,y1) to (x1, y2) - top layer & (x1,y2) to (x2, y2)
  private static void printTopRight(int x1, int y1, int x2, int y2, int[][] ar) {
    //print row values - top
    for (int y = y1; y <= y2; y++) {
      System.out.printf("%d ", ar[x1][y]);
    }
    //print column value - right
    for (int x = x1 + 1; x <= x2; x++) {
      System.out.printf("%d ", ar[x][y2]);
    }

    //are there any remaining layers
    if (x2 - x1 > 0) {
      //call printBottemLeft
      printBottomLeft(x1 + 1, y1, x2, y2 - 1, ar);
    }
  }

    //prints bottom and left layers in reverse order
  //(x2,y2) to (x2, y1) - bottom layer & (x2,y1) to (x1, y1)
  private static void printBottomLeft(int x1, int y1, int x2, int y2, int[][] ar) {
    //print row values in reverse order - bottom
    for (int y = y2; y >= y1; y--) {
      System.out.printf("%d ", ar[x2][y]);
    }

    //print column value in reverse order - left
    for (int x = x2-1; x >= x1; x--) {
      System.out.printf("%d ", ar[x][y1]);
    }

    //are there any remaining layers
    if (x2 - x1 > 0) {
      printTopRight(x1, y1 + 1, x2 - 1, y2, ar);
    }
  }
}
651
задан 5 revs, 4 users 93% 25 April 2018 в 18:21
поделиться

17 ответов

(приведенный ниже текст является моим мнением, его не следует воспринимать как факт или оскорбление)

Ожидается, что с Emacs он будет открыт 24/7 и жить внутри программа, практически все, что вы делаете, может быть сделано оттуда. Вы пишете свои собственные расширения, используете их для заметок, организации, игр, программирования, доступа к оболочке, доступа к файлам, прослушивания музыки, просмотра веб-страниц. Пройдут недели и недели, прежде чем вы будете довольны этим, и тогда вы все время будете учиться новому. Вы будете раздражаться, если у вас нет доступа к нему и вы будете постоянно менять свой конфиг. Вы не сможете легко использовать версии emacs других людей, и это победило т просто установить. Он использует Lisp, и это здорово. Вы можете превратить его во что угодно. (что угодно, вообще)

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

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

472
ответ дан 22 November 2019 в 21:44
поделиться

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

Я использую плагин StatET для Eclipse для разработки отчетов, и Sweave интегрирован (Eclipse распознает форматирование латекса и т. Д.) ). В Windows легко использовать MikTEX .

Я бы также добавил, что вы можете создавать красивые отчеты с помощью Beamer . Создать обычный отчет так же просто. Я привел пример ниже, который извлекает данные из Yahoo! и создает диаграмму и таблицу (с помощью Quantmod). Вы можете построить этот отчет так:

Sweave(file = "test.Rnw")

Вот сам документ Beamer:

5
ответ дан 22 November 2019 в 21:44
поделиться

Самым большим отличием для меня в выборе использования emacs вместо vim была встроенная поддержка gdb в emacs. В Vim этого нет '

6
ответ дан 22 November 2019 в 21:44
поделиться

Я полный фанат Emacs, но я знал VI задолго до того, как узнал Emacs. Тем не менее, я заставляю всех своих людей изучать VI, потому что он доступен всегда и везде. Не могу ошибиться ни с одним из них.

24
ответ дан 22 November 2019 в 21:44
поделиться

For me, emacs has better development tools(not only tags based tools).

8
ответ дан 22 November 2019 в 21:44
поделиться

Я начал с vi, перешел на emacs, затем к vim. Я подумывал попробовать Emacs, чтобы увидеть, что изменилось за последние пять лет. (Говоря об IDE, я на какое-то время погрузился в затмение, но я предпочитаю, чтобы мое окно терминала соединяло мой Mac с Linux-боксом моего (мужа)).

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

Я не играл ни с какими причудливыми функциями vi или emacs, мне просто нравится заниматься программированием. Все, что мне нужно, это красивые цвета и правильное преобразование табуляции в пространство (особенно важно для python).

Думаю, все зависит от того, хотите ли вы использовать : wq или Ctrl-x Ctrl-s (IIRC), чтобы сохранить файл, если вас не интересуют причудливые вещи.

@mgb был правильным. Я был на минимальном уровне Linux, чтобы исправить что-то всего месяц или два назад в дистрибутиве Debian. vi был единственным доступным редактором.

13
ответ дан 22 November 2019 в 21:44
поделиться

На мой взгляд, плюсы emacs в том, что

  • tramp-mode позволяет редактировать удаленные файлы через ssh. точно так же, как и локальные файлы.
  • tramp-mode + dired = полнофункциональный клиент sftp
  • поддержка всех языков, которые вам когда-либо понадобятся.
  • встроенный эмулятор терминала (режим term), так что я могу продолжать кодирование без переключения между приложений.
  • расширяемость все, что вам не нравится, вы можете изменить с помощью lisp.
10
ответ дан 22 November 2019 в 21:44
поделиться

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

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

Стоит ли изучение возможностей Emacs по сравнению с использованием графического редактора / IDE и использования чего-то вроде python / awk / etc для дополнительных задач - решать вам.

38
ответ дан 22 November 2019 в 21:44
поделиться
  1. Vim всегда запускался быстрее, чем Emacs. Я говорю, что на любой машине готовые установки Vim начнутся быстрее, чем стандартные установки Emacs. И я склонен думать, что после небольшой настройки любого из них Vim все равно будет запускаться быстрее, чем Emacs.

  2. После этого другим практическим отличием были режимы Emacs. Они значительно облегчают вашу жизнь при редактировании XML, C / C ++ / Java / что угодно, LaTeX и самых популярных языков, о которых вы только можете подумать. Они заставляют вас держать редактор открытым на долгие сессии и работу.

В общем, я » скажу, что Vim привлечет вас к нему для выполнения коротких и быстрых задач редактирования; в то время как Emacs поощряет вас погружаться в длительные сеансы.

44
ответ дан 22 November 2019 в 21:44
поделиться

Если вы ищете объективный анализ обоих редакторов, посмотрите на их происхождение и философию, лежащую в основе их соответствующих проектов. Подумайте, какой из них подойдет вам лучше, и изучите его (и изучите его, и изучите его, потому что требуется время, прежде чем вы обнаружите его истинную полезность по сравнению с любой IDE). Введение в редактирование дисплея с помощью Vi было написано Биллом Джоем и Марком Хортоном, и он объясняет, почему он выбирает модальный дизайн и обоснование для различных нажатий клавиш (это помогает мне помнить, что CTRL-W + W (переключит к следующему W indow, и это будет то же самое для CTRL W + CTRL W, на тот случай, если вы удерживали клавишу CTRL в течение более длительного времени.

Вот ссылка на шкалу времени Emacs и есть ссылка на статью Multics Emacs. Здесь представлена ​​статья RMS по Emacs , где я вижу, что упор делается на программируемый текстовый редактор (даже в 1981 году и раньше).

Я не читал emacs документов, но пару раз читал статью Билла Джоя о vi. Оба старые, но вы все равно поймете философию, и вы можете использовать текущий инструмент (vim 7.x или emacs 25?)

Изменить: Я забыл упомянуть, что чтение требует терпения и воображения обе эти статьи, поскольку она переносит вас в прошлое, читая ее. Но оно того стоит.

47
ответ дан 22 November 2019 в 21:44
поделиться

Vim:

  • лучше в качестве простого редактора (для простых задач требуется меньше ключей)
  • более активное сообщество разработчиков сценариев - внутренний язык: vimscript
  • один центральный репозиторий скриптов, плагинов , цветовые схемы, ...
  • также расширяемый в python, ruby ​​
  • можно сделать переносимым (у emacs есть некоторые проблемы с этим)

Emacs:

  • немодальный по умолчанию (большинство сегодняшних редакторов используют этот подход). Хотя есть злой режим , который имитирует поведение vim.
  • более мощный язык для его расширения (elisp - это полноценный язык, и в emacs вы можете практически все переопределить; в то время как в vim вы не можете переопределить сборку в функциях редактора. С другой стороны, vimscript относительно похож на современные динамические языки, в то время как elisp не он почти ни на что не похож)
  • более расширяемый
  • отличная поддержка инструментов GNU (их куча)

Лично я предпочитаю vim - он маленький, делает то, что должен делать, и когда я хочу полноценная IDE открываю VS. Подход Emacs к редактору, который хочет быть IDE (или, я бы сказал, ОС), но не совсем, IMHO, устарел. Раньше наличие почтового клиента, ftp-клиента, тетриса ... еще много чего в одном пакете (emacs) имело определенный смысл ... в настоящее время это уже не так.

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

делает то, что должен делать, и когда мне нужна полноценная IDE, я открываю VS. Подход Emacs к редактору, который хочет быть IDE (или, я бы сказал, ОС), но не совсем, IMHO, устарел. Раньше наличие почтового клиента, ftp-клиента, тетриса ... еще много чего в одном пакете (emacs) имело определенный смысл ... в настоящее время это уже не так.

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

делает то, что должен делать, и когда мне нужна полноценная IDE, я открываю VS. Подход Emacs к редактору, который хочет быть IDE (или, я бы сказал, ОС), но не совсем, IMHO, устарел. Раньше наличие почтового клиента, ftp-клиента, тетриса ... еще много чего в одном пакете (emacs) имело определенный смысл ... в настоящее время это уже не так.

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

104
ответ дан 22 November 2019 в 21:44
поделиться

Vim не является оболочкой. И он плохо взаимодействует с подпроцессами. Это почти задумано, тогда как в Emacs эти элементы включены в проект. Это означает, что некоторые вещи, такие как встраивание отладчика или интерпретатора (что дает своего рода IDE), затруднены в Vim.

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

Emacs был единственным редактором из двух, который был программируемым, и в то время как Vim имеет много странных уровней программируемости с добавлением привязок Python и Ruby (и более того, я забыл), Vim также можно программировать большинством способов, которые вам нужны.

Я использую Vim, и меня это вполне устраивает.

131
ответ дан 22 November 2019 в 21:44
поделиться

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

Конечно, используя меню и тому подобное, вам не нужно фактически входить в командный режим в Vim - сначала. Но вы сможете использовать даже малую часть возможностей Vim. Это суть дебатов о Vim / Emacs.

Лично я также считаю, что Emacs гораздо более расширяемый. Вы можете найти пакеты Elisp для многих вещей.

Мне любопытно, однако, почему вы думаете изучить один из этих пакетов вместо более традиционной IDE. Для чего вы хотите выучить один из них?

11
ответ дан 22 November 2019 в 21:44
поделиться

Если вы много перемещаетесь с сайта на сайт или ваша работа связана с входом в производственную систему, тогда вам подойдет vim.

На всех машинах * nix vi установлен по умолчанию.

Большинство системных администраторов предпочитают ksh в качестве оболочки по умолчанию. ksh использует командные нажатия клавиш vi (или emacs) для поиска в истории и редактирования командной строки.

Если вы плохо знаете vi, вы столкнетесь с серьезными затруднениями при входе в систему unix со стандартной конфигурацией.

Только по этой причине я бы рекомендовал vim в качестве обычного повседневного редактора. Я видел, как фанаты emacs рвали там волосы, пытаясь изменить файлы конфигурации на голом сервере unix.

1
ответ дан 22 November 2019 в 21:44
поделиться

Кажется, ответ уже выбран, но для меня большая разница всегда заключалась в модальном и немодальном. Vim является модальным, что означает, что он выполняет оптимизацию на основе определенного набора режимов использования. По крайней мере, я всегда так на это смотрел. Это делает использование Vim другим, потому что вместо рабочей области, в которой вы набираете код, вы действительно говорите среде действовать с текстом. Вот почему люди говорят такие вещи, как будто с Vim вы действительно изучаете язык. Команды: wq и: s / foo / bar являются частью среды, подобной оболочке, которая редактирует и читает текст.

Emacs, с другой стороны, намного ближе к большинству редакторов / текстовых процессоров / и т. Д. вы видите сегодня. У вас есть рабочее пространство с хорошо программируемым интерфейсом. Вот почему вы видите такие вещи, как электронная почта, irc, оболочки и т. Д. Программисту легко думать, говоря: «возьмите номер строки, в которой я нахожусь, и сделайте что-нибудь с информацией». Желание покинуть редактор становится меньше, потому что вместо того, чтобы выходить, открывать какое-то другое приложение / язык и делать что-то с некоторым текстом, у вас есть Emacs, где вы можете делать это в рамках своего редактора.

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

13
ответ дан 22 November 2019 в 21:44
поделиться

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

  • Оба - великие редакторы.
  • Оба очень расширяемы сегодня
  • И имеют большие плагины и сообщество

Как разработчики, которых мы вводим много, и, наконец для меня, перемещая в буферах, и файлы являются самыми большими повторяющимися задачами, таким образом, я хочу редактора где я ПЕРЕМЕЩЕНИЕ CAN FAST!

мотивация для экспериментирования с emacs снова - то, что я упал он Ctrl leaded keybinds быстрее, чем энергия, и легче рассуждать о.

В энергии у Вас есть режимы, у Вас есть режим вставки, визуальный режим, нормальный режим, что происходит, когда Вы нажимаете, что-то зависит от режима, который Вы, подход с сохранением информации к редактированию. Вы перемещаетесь, входите в режим вставки, редактирование, выходите из режима вставки и перемещения снова. Я часто теряю мой сам, если я пропускаю нажатие ESC или что-то вроде этого.

В emacs нет никакого режима, в основном Вы нажимаете Ctrl со своим розовым и вводите нажатие клавиши, как C-x C-f, C-x C-s, C-x C-c. Существуют keybinds, где необходимо выпустить клавишу Ctrl, я ненавижу это и всегда заменяю их с нажатым управлением.

я думаю, что подход emacs быстрее, чтобы думать и ввести, но энергия имеет другую силу, к. Его команды компонуемы, у них обычно есть формат. Например, для удаления строки можно использовать dd, для удаления Word dw. Плагины используют тот лесоповал, с энергией - окружают плагин, можно удалить кавычки с ds" (удалите, окружают"), удалите до следующего / dt/. Удалите до предыдущего/: dT/ и так далее. Таким образом, пока Вы узнаете, что движущиеся вещи начинают становиться очень интересными.

Подведение итогов, сегодня я упал, что emacs keybinds быстрее для макро-редактирования, и команды энергии более мощны для микроредактирования

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

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

0
ответ дан 22 November 2019 в 21:44
поделиться

Во-первых, Vi (оригинальная реализация) сегодня не используется. То, что вы говорите, является производным от Vim.

Чтобы расширить функциональность Vim, вы должны перекомпилировать Vim, а не Emacs.

Emacs имеет Vim в автономном режиме (viper-mode).

Emacs обычно требует ручной установки, Vim обычно предварительно устанавливается на все Unix-подобные ОС (но если у вас есть ssh-доступ к хосту в tramp-mode, выиграйте Vim :).

Если вы попробуете Vim, вы ненавидите Emacs, поэтому начните сначала с Emacs.

Также прочтите http: // www.dina.dk/~abraham/religion/vi-tutorial.html (ссылка вниз, используйте это )

Поиск ответа в hxxp: //en.wikipedia.org/wiki / Editor_war

-8
ответ дан 22 November 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: