Делаем из vim-а конфетку

Среда разработки IDE

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

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

Зачем переходить

Для начала — а стоит ли вообще тратить своё время и внимание на переход? Учить ещё один диалект sh, менее распространённый чем POSIX sh или bash, заново заниматься настройкой рабочего окружения…

На мой взгляд, если вы проводите много времени в консоли, вам нравятся Vim или Emacs и вы уже потратили немало времени на их настройку «под себя» — однозначно стоит! Zsh по духу очень на них похожа: это очень сложная и гибкая программа, чьи возможности полностью мало кто знает, но потратив некоторое время на настройку можно получить очень удобную лично вам рабочую среду.

Что касается изучения нового диалекта sh… пользы от этого, скорее всего, действительно мало, но описанного в этой статье минимума должно быть достаточно чтобы настраивать zsh, а писать новые скрипты на диалекте zsh вам никто и не предлагает. В общем и целом это ничем не отличается от необходимости минимально знать VimL или Emacs Lisp исключительно для настройки Vim/Emacs.

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

  • Zsh не использует readline для ввода команд пользователем. Вместо этого используется собственный редактор ZLE (Zsh Line Editor). Это позволило реализовать множество фич: удобное редактирование многострочных команд, подсветку синтаксиса прямо в процессе ввода команды, особую обработку «paste» из clipboard чтобы не выполнить случайно вставленный текст, гибкое управление горячими клавишами, undo (в т.ч. отменяющее результат автодополнения и разворачивания glob-ов)… плюс интегрировать функционал редактора с zsh, что позволяет управлять его поведением через обычные функции zsh (например, подсветка синтаксиса так и реализована).
  • Невероятно сложный и гибкий механизм автодополнения команд. Он сильно зависит от контекста, поэтому при нажатии в разных местах командной строки будут дополняться разные вещи: имена команд, их параметры, файлы, имена пользователей и серверов, номера процессов, названия переменных, индексы массивов и ключи хешей, элементы синтаксиса zsh, названия цветов и шрифтов, сетевых интерфейсов, системных пакетов… короче, вообще всего что можно автодополнять. И его можно детально контролировать, вплоть до изменения логики автодополнения для конкретного контекста у конкретной команды.
  • Громадное количество (177 в zsh-5.2) опций, изменяющих поведение zsh. С их помощью можно, например, изменять поддерживаемый синтаксис и включать (в т.ч. частично) режимы совместимости с sh/bash/ksh/csh. Они позволяют настолько значительно влиять на работу, что в zsh пришлось сделать отдельный «режим совместимости с zsh», который многие функции обычно включают первой командой, потому что только это даёт им гарантию, что код этой функции будет понят zsh именно так, как ожидал его автор.
  • Предпочтение максимально сжатого, краткого синтаксиса — чтобы вам нужно было набирать как можно меньше текста для выполнения типичных, пусть даже довольно сложных, задач. В коде, где важна читабельность через месяц — это однозначно минус. Но в командной строке — однозначно плюс.
  • Модульная организация настроек через фреймворки (вроде oh-my-zsh и prezto), плагины, темы, etc. На самом деле здесь нет ничего специфичного для zsh, ровно то же самое можно сделать и для bash, но… почему-то для zsh всё это уже есть, а для bash — нет (а если и есть, то про это мало кто знает). А это даёт возможность относительно быстро собрать свой вариант настроек zsh из готовых «кубиков» (как пример, посмотрите видео менеджера плагинов zsh Аntigen), точно так же, как обвешивается плагинами Vim.

Базовые команды для работы с терминалом

То, что поможет при работе с консолью в целом.

  • clear — очищает всю выведенную в консоль информацию. Пригодится на тот случай, если терминал будет забит выводом других команд или содержимом ранее открытых документов. Помогает «начать с чистого листа».
  • history — отображает ранее введенные команды. По умолчанию показывает 10 последних, но при желании это значение можно изменить, добавив в качестве параметра любое число. Например, history 17, чтобы показать 17 последних выполненных операций.
  • whatis — вкратце описывает любую установленную программу. Вводим whatis и скармливаем ей в качестве аргумента название интересующей утилиты. Чтобы узнать, что такое wget, напишем whatis wget и получим краткую справку одной строкой.
  • man — демонстрирует подробное руководство по выбранной программе или команде. Чтобы выяснить, как работает wget и какие опции для него доступны, введем man wget. Получим массивное полотно со всей документацией для выбранной утилиты. P.S. Выйти из нее можно нажав на клавишу Q.

Расширяемость и настройка Emacs vs Vim

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

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

Emacs можно расширить на лету, переопределив встроенные функции elisp, введя новое определение в Emacs или загрузив файлы elisp. Группы связанных изменений называются «режимами» и могут быть легко настроены для автоматического использования для определенных типов файлов (буферов). Таким образом, легко определить режимы для разных языков программирования или сред, таких как «режим lisp» или «режим Ruby on Rails» или «режим PHP». Эти режимы могут напрямую изменять даже основные поведения Emacs, автоматически форматировать или раскрашивать текст и добавлять стандартный шаблон или «шаблонный» текст, такой как объявления функций и замыкания. Таким образом, программисты считают, что Emacs гораздо лучше настраивается под их конкретные требования, чем Vim. Тем не менее, некоторые программисты могут найти Vim, в конечном счете, более подходящим для своей среды программирования из-за его одинаково настраиваемой и полностью модальной работы.

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

Графический интерфейс пользователя (GUI)

И Vim, и Emacs имеют графический пользовательский интерфейс. Практически все пункты меню в графическом интерфейсе для обоих редакторов — это просто способы обработки команды быстрого вызова или быстрой настройки. Графические интерфейсы для редакторов не предоставляют практически никаких дополнительных функций, помимо тех, которые доступны в CLI (интерфейс командной строки)

Emacs использует XDisplay или gtk2 для своего GUI. Vim может использовать многие другие библиотеки GUI, такие как gtk, gnome, gnome2, motif, athena и neXtaw, в дополнение к gtk2.

Less Command in Linux

25 Апреля 2020
|

Терминал

Less — утилита командной строки, которая отображает содержимое файла или вывод команды, по одной странице за раз. Это похоже на , но имеет более продвинутые функции и позволяет вам перемещаться вперед и назад по файлу.

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

Как использовать меньше 

Общий синтаксис программы следующий:

Например, чтобы просмотреть содержимое файла, введите:

Вы также можете перенаправить вывод команды на использование канала. Например, чтобы просмотреть вывод команды страница за страницей, вы должны набрать:

Навигация по содержимому файла 

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

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

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

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

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

Когда достигнут конец файла, строка показывается внизу экрана.

Чтобы выйти и вернуться в командную строку, нажмите  

Меньше опций 

Если вы хотите показать номера строк, запустите программу с опцией:

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

Опция указывает , чтобы посмотреть содержимое файла изменений. Это полезно при открытии файлов журнала.

При запуске с , будет вести себя в значительной степени так же , как

Меньше Команд 

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

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

Ниже приведены некоторые из наиболее часто используемых команд для навигации по содержимому файла при просмотре less:

команда действие
, , , Или Продвинуться на одну строку.
, или Переместиться назад на одну строку.
или Переместить вперед на одну страницу.
Переместиться назад на одну страницу.
Поиск вперед для соответствия шаблонам.
Поиск назад для соответствия шаблонам.
Повторите предыдущий поиск.
Повторите предыдущий поиск в обратном направлении.
Перейти к первой строке в файле.
Перейти к N-й строке в файле.
Перейти к последней строке в файле.
Перейти к началу файла.
Перейти к N процентов в файл.
Показать справку.
Выход .

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

Редакторы кода

Наш список лучшие текстовые редакторы linux подходит к завершению. В связи с тем, что для многих Linux является рабочим инструментом, в отдельную группу стоит выделить редакторы кода. Это уже больше, чем просто программы для набора и редактирования текста. В их задачи входит подсветка синтаксиса, автозаполнение, отладка и даже рефакторинг кода. Стоит учитывать, что в этот список попали именно редакторы кода, а не IDE, поэтому Geany или WebStorm вы здесь не найдёте.

12. Sublime Text

Sublime Text не является бесплатным редактором кода, 3-годичная лицензия обойдётся в $80. Но у приложения нет пробного периода, его можно использовать без лицензии сколь угодно долго. Однако, оно будет периодически напоминать вам о том, что стоит приобрести лицензию.

Интерфейс приложения выполнен по классической схеме с тремя блоками: обозреватель файлов, поле с текстом и мини-картой справа. Запустить сборку проекта можно прямо из редактора без необходимости вводить консольные команды.

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

  1. В меню Tools выбрать последний пункт Install Package Control…
  2. Нажать Ctrl+Shift+P, ввести Install Package и нажать Enter, откроется новый список
  3. Ввести LocalizedMenu и нажать Enter, установится пакет с набором языков
  4. Перейти в меню Preferences и в подменю Language выбрать русский язык

Устанавливается Sublime Text из snap-пакета, командой для установки будет:

13. Visual Studio Code

Visual Studio Code от Microsoft появился относительно недавно, но уже успел обрести немалую популярность. Редактор поддерживает рефакторинг, отладку, фирменное автодополнение IntelliSense, систему Git и многие другие функции.

Есть возможность установки Vim плагина, что привнесёт функционал консольного редактора в VS Code. Это позволяет создать один из самых мощных инструментов для написания кода.

Для установки русского языка следует воспользоваться этой инструкцией:

  1. Нажать Ctrl+Shift+P иввести Configure Display Language
  2. Выбрать Install additional languages…, в левой панели откроется магазин расширений
  3. Найтивсписке Russian Language Pack for Visual Studio Code иустановить
  4. После перезагрузки язык интерфейса станет на русском языке

Редактор кода Visual Studio Code можно установить из snap-пакета:

14. Atom

Atom находится примерно на одном уровне с VS Code. Сложно определить, что лучше. Например, Atom без всяких плагинов имеет тесную интеграцию с GitHub, а VS Code работает немного быстрее.

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

  1. Вменю Edit выбрать Preferences
  2. Перейти во вкладку Install и найти Atom-i18n
  3. После установки выбрать Settings у плагина и в Language выставить Русский язык

Аналогичным способом можно добавить мини-карту, плагин называется Minimap.

Редактор кода Atom можно установить из snap-пакета:

15. Kate

Несмотря на то, что Kate расшифровывается как KDE Advanced Text Editor, он корректно работает с библиотекой GTK и оболочкой GNOME. Его интерфейс написан на Qt, что и позволяет организовать поддержку большим количеством дистрибутивов. Редактор далеко не новый, но проигрывает предыдущим представителям. Например, для стандартной функции контроля версий необходимо установить расширение.

Установка Kate возможна через стандартный менеджер пакетов apt:

16. Brackets

Редактор Brackets от Adobe нацелен в первую очередь для работы с веб-документами: HTML, CSS, JS. Есть возможность просмотра изменений в реальном времени и контроль версий Git. Также не обошли стороной поддержку плагинов, хотя в этом случае их не так много ввиду специфики редактора.

Русский язык можно выбрать в разделе Switch Language из меню Debug.

Устанавливается Brackets из snap-пакета командой:

17. Bluefish

Bluefish – это редактор с богатой историей, который начал свой путь ещё в 1997 году. Как и в случае с Kate он не может конкурировать с более современными программами. Но всё же работать с HTML файлами довольно удобно, и программа открывается даже быстрее, чем Brackets.

Установку Bluefish можно командой:

Отмена сделанных изменений

C-x u
Отменить одну группу изменений — обычно одну стоящую команду ().
C-_
То же самое.
C-u C-x u
Отменить одну группу изменений в области.

Последовательное повторение C-_ или C-x u отменяет все более ранние изменения, вплоть до предела доступной информации отмены. Если все записанные изменения уже были отменены, команда отмены печатает сообщение об ошибке и ничего не делает.

Любая команда, отличная от команды отмены, прерывает последовательность команд отмены. Начиная с этого момента предыдущие команды отмены рассматриваются как простые изменения, которые могут быть отменены. Таким образом, чтобы вернуть отмененные вами изменения, наберите C-f или любую другую команду, которая не причиняя вреда прервет последовательность отмен, а затем снова набирайте команды отмены.

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

Если вы не помните, намеренно ли вы изменили буфер, наберите C-_ один раз. Когда вы увидите последнее изменение, которое вы сделали отмененным, вы поймете, было ли это изменение умышленным. Если это была случайность, оставьте его отмененным. Если оно было умышленным, восстановите изменение, как описано выше.

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

Переменная устанавливает гибкий предел: Emacs хранит данные для отмены достаточного числа команд, чтобы оставаться в этих границах и, возможно, выйти за них, но не хранит данные для более ранних команд сверх этого предела. Ее значение по умолчанию равно 20000. Переменная устанавливает более жесткий предел: команда, которая увеличивает размер за эту границу, забывается сама. Значение этой переменной равно по умолчанию 30000.

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

Причина того, что для команды определены два запускающих ключа, C-x u и C-_, состоит в том, что эта команда стоит того, чтобы иметь однознаковый ключ, но на некоторых клавиатурах нет очевидного способа ввести C-_. C-x u предоставляет альтернативу, вы можете прямо набрать его на любом терминале.

Вместо заключения

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

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

  1. EmacsWiki (увы, русская версия оставляет
    желать лучшего)
  2. Руководство по GNU Emacs. Ричард Столлман
  3. Для быстрого старта можно воспользоваться Emacs Starter Kit (подготовит
    основу) или emacs.d/ имени purcell
  4. Программирование на Emacs Lisp
  5. GNU Emacs Manuals Online

Плагины

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

Совет: For a list of popular plugins, see Vim Awesome)

Установка

Используя встроенную систему управления пакетами

В Vim 8 добавлена возможность загрузки сторонних плагинов. Чтобы использовать эту функциональность, переместите плагины в .

Используя менеджер плагинов

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

Из репозиториев Arch

Группа объединяет множество разнообразных плагинов. Используйте команду для отображения списка пакетов, которые вы можете затем , используя pacman.

cscope

Установите пакет .

Скопируйте стандартный файл cscope, который Vim будет автоматически читать:

Примечание: Вам наверное понадобится откомментировать следующие строки в , чтобы включить горячие клавиши cscope в Vim 7.x:

set timeoutlen=4000
set ttimeout

Создайте файл, который содержит список файлов для индексации (cscope может обрабатывать множество языков, но для примера мы возьмем файлы на Си/Си++ с расширениями .c, .cpp и .h):

cd /путь/к/каталогу/проекта
find . -type f -print | grep -E '\.(c(pp)?|h)$' > cscope.files

Создание файлы базы данных, которые cscope будет читать:

cscope -bq

Примечание: cscope ищет файл в рабочем каталоге, поэтому тот же каталог следует использовать и для навигации по проекту в Vim. Также, вы можете указать путь до этого файла явно, установив его в переменной окружения .

Горячие клавиши по умолчанию:

 Ctrl-\ и
      c: найти функции вызывающие эту функцию
      d: найти функции вызываемые этой функцией
      e: найти egrep паттерн
      f: найти этот файл
      g: найти это определение
      i: найти файлы, включающие этот файл (#include)
      s: найти этот символ Си
      t: найти присвоения

Не стесняйтесь изменять горячие клавиши:

#Maps ctrl-c to find functions calling the function
nnoremap <C-c> :cs find c <C-R>=expand("<cword>")<CR><CR>

Установите пакет AUR.

Полезные опции можно записать в :

let Tlist_Compact_Format = 1
let Tlist_GainFocus_On_ToggleOpen = 1
let Tlist_Close_On_Select = 1
nnoremap <C-l> :TlistToggle<CR>

Функциональность клавиатуры Emacs и Vim

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

Vim лишён этих функций, потому что он основан на более старом текстовом редакторе vi. Функциональность клавиатуры Vim, как и её предка, кажется немного устаревшей. Тем не менее, Vim по-прежнему позволяет вам настраивать привязки клавиш, чтобы сделать его более удобным, но может потребоваться некоторое время, чтобы настроить их так, как вам нравится. Функциональность клавиатуры — полезный инструмент независимо от того, какой язык программирования вы предпочитаете использовать. Они обладают простыми и понятными функциями клавиатуры. А ваши индивидуальные предпочтения являются наиболее важным определяющим фактором.

zkbd

При первом запуске zsh нередко оказывается, что часть кнопок вроде F1/Backspace/Delete/курсора работает некорректно. Это связано с тем, что абсолютное большинство консольных приложений использует readline и корректная настройка этих кнопок считывается из и , а zsh этого не делает.

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

Смотреть выдаваемые кнопками последовательности можно запустив и нажимая перед нужной кнопкой. (И таки да, занимаясь этим в 2017 я чувствовал себя немного странно…) Но в комплекте с zsh идёт вспомогательная утилита , которая автоматизирует этот процесс. Для этого необходимо подключить её в , после чего у вас появится ассоциативный массив содержащий нужные escape-последовательности:

Я не уточняю детально какие команды (вроде ) на какие кнопки назначать потому, что во-первых назначать надо не все подряд, а только те, которые у вас из коробки не заработают, и во-вторых если мнения насчёт того, что должны делать Home или Backspace у всех сходятся, то вот поиск в истории по Up и Down может выполняться довольно разными способами, и функции в этих случаях на эти кнопки надо назначать тоже разные.

(Кстати, задавать символ Escape () в параметре bindkey можно и настоящим символом, вводя его через , и двумя обычными символами , и двумя символами .)

Как Vim и Emacs обрабатывают языки?

Vim и Emacs по-разному обрабатывают языки. Vim происходит из среды Unix старой школы, поэтому он хорошо работает с Linux, DOS, BSD, HP-UX, Mac и другими операционными системами. Emacs также работает с системами Unix, используя специальные основные режимы для Scheme, Lisp, Perl, Java, Ruby и других.

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

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

Пакеты Elisp

Elisp — это диалект языка программирования LISP, который Emacs использует для добавления и модификации функциональности в редакторе. В следующем списке перечислены библиотеки Elisp, которые многие разработчики, использующие Emacs, включают в свою среду разработки.

  • Magit позволяет пользователю просматривать и изменять Git-репозитории из Emacs.
  • company-mode предоставляет возможность автозавершения кода.
  • Flycheck обеспечивает проверку синтаксиса.
  • anaconda-mode (подходит только для разработки на Python) позволяет осуществлять навигацию по коду, поиск документации и автозавершение кода.
  • web-mode.el — это пакет для редактирования веб-шаблонов, таких как Jinja. Он поддерживает многие шаблонизаторы Python, включая Django templates, Mako и Cheetah. Также web-mode.el поддерживает JavaScript-фреймворки для фронтенд-разработки.

Другие особенности

Многобайтовые символы

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

Расширяемость

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

Vim может быть расширен на лету с помощью режима командной строки. Командный режим позволяет использовать различные опции конфигурации для настройки функций редактора. На самом деле конфигурационные файлы VIm — это всего лишь команды, которые могут быть введены через командный режим.

Расширяемость — это главная фишка Emacs, он был написан на интерпретируемом языке программирования, а поэтому вы можете изменять даже работающий экземпляр программы и изменения будут применены, если они синтаксически правильны. Поэтому Emacs может быть расширен на лету простым редактированием кода или загрузкой Elisp файлов. Изменения могут быть собраны в группы, и настраиваться для автоматического использования для определенных типов файлов. Такие настройки называются режимами. Например, режим Ruby или режим Rails. Они могут полностью изменить поведение Emacs, раскрасить текст, добавить форматирование и т д.

Графический интерфейс

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

Emacs использует XDisplay и GTK2 для реализации графического интерфейса. Vim может применять множество других графических библиотек, таких как GTK, GTK2, Gnome, Gnome2, motif, athena, neXtaw, photon, carbon.

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

Буферные вкладки

Оба Emacs vs Vim поддерживают буфера вкладок как в CLI, так и в графическом интерфейсе. Кроме того, Vim в доступен на большинстве серверов, в отличие от Emacs.

Лицензия

GNU Emacs распространяется под лицензией GNU GPL, и гораздо чаще ассоциируется с операционной системой GNU LInux, учитывая тот факт, что он является частью проекта GNU. Vim распространяется под лицензией  charityware, хотя сам автор утверждает, что она совместима с GPL. Vim был изначально основан на Vi, разработанным Билом Джойем. Он используется многими пользователями Linux, поэтому может считаться родным для BSD, и других *nix систем.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: