Vim (текстовый редактор) - Википедия - Vim (text editor)

Vim
Vimlogo.svg
Vim работает в эмуляторе терминала
Vim работает в эмулятор терминала
Оригинальный автор (ы)Брэм Мооленаар
изначальный выпуск2 ноября 1991 г.
(29 лет назад)
 (1991-11-02)
Стабильный выпуск8.2.0000[1] (13 декабря 2019 г.; Год назад (2019-12-13)) [±]
Репозиторий Отредактируйте это в Викиданных
Написано вC, Сценарий Vim
Операционная системаUnix, Linux, Windows NT, MS-DOS, macOS, iOS, Android, Хайку, AmigaOS, MorphOS
ТипТекстовый редактор
ЛицензияБесплатно программное обеспечение (Лицензия Vim ), благотворительная посуда
Интернет сайтwww.vim.org Отредактируйте это в Викиданных

Vim (/vɪм/;[2] сокращение Vi IMпроверено) является клоном с дополнениями Билл Джой с vi Текстовый редактор программа для Unix. Автор Vim, Брэм Мооленаар, основанный на исходный код для порта Стиви редактор к Amiga[3] и выпустил общедоступную версию в 1991 году. Vim предназначен для использования как с Интерфейс командной строки и как отдельное приложение в графический интерфейс пользователя. Vim - это бесплатное программное обеспечение с открытым исходным кодом и выпущен под лицензией, которая включает некоторые благотворительная посуда пунктов, поощряющих пользователей, которым нравится программное обеспечение, рассмотреть возможность пожертвования детям в Уганда.[4] Лицензия совместима с Стандартная общественная лицензия GNU через специальный пункт, разрешающий распространение измененных копий »под GNU GPL версии 2 или любой более поздней версии ».[5]

С момента выпуска для Amiga, кросс-платформенный разработка сделала его доступным на многие другие системы. В 2006 году он был признан самым популярным редактором среди Linux журнал читатели;[6] в 2015 году Переполнение стека Опрос разработчиков показал, что это третий по популярности текстовый редактор,[7] и пятая по популярности среда разработки в 2019 году.[8]

История

Предшественник Вима, Стиви (редактор ST для энтузиастов VI), был создан Тимом Томпсоном для Atari ST в 1987 г.[9][10] и далее развит Тони Эндрюс[9][11] и Г. (Фред) Уолтер.[12][13]

Основываясь на своей работе над Стиви, Брэм Мооленаар начал работу над Vim для Amiga компьютер в 1988 году, с первым публичным выпуском (Vim v1.14) в 1991 году.[14][15][нужен лучший источник ]

Во время его первого выпуска название «Vim» было аббревиатурой от «Vi IMitation», но в конце 1993 года оно было изменено на «Vi IMproved».[16]

История выпуска
ДатаВерсияИзменения и дополнения
Июнь 1987 г.Нет данныхТим Томпсон выпускает Stevie (редактор ST для энтузиастов VI), ограниченный клон vi для Atari ST, разместив источник на Usenet.[9][10]
Июнь 1988 г.Нет данныхТони Эндрюс улучшает Stevie и переносит его на Unix и OS / 2, выпустив версию 3.10 на Usenet.[9][11]
19881.0Брэм Мооленаар создает Vi имитация для Amiga, основанной на Стиви, никогда не выпускавшейся публично
2 ноября 1991 г.1.14[17]Первый публичный выпуск для Amiga на Фред Фиш диск # 591[18]
19921.22[17]Перенос на Unix, публично никогда не выпускался.[16] Vim теперь конкурирует с vi.
14 декабря 1993 г.2.0[19]Это первый выпуск с названием Vi IMпроверено.[16]
12 августа 1994 г.3.0[17]Поддержка нескольких окон
29 мая 1996 г.4.0[17][20]Графический пользовательский интерфейс
19 февраля 1998 г.5.0[17][21]Подсветка синтаксиса, базовый сценарии (пользовательские функции, команды и т. д.)
6 апреля 1998 г.5.1Ошибка исправления, различные улучшения
27 апреля 1998 г.5.2Поддержка длинной строки, обозреватель файлов, диалоговые окна, всплывающее меню, режим выбора, файлы сеанса, определяемые пользователем функции и команды, Tcl интерфейс и др.
31 августа 1998 г.5.3Исправления ошибок и т. Д.
25 июля 1999 г.5.4Базовое шифрование файлов, различные улучшения
19 сентября 1999 г.5.5Исправления ошибок, различные улучшения
16 января 2000 г.5.6Новые файлы синтаксиса, исправления ошибок и т. Д.
24 июня 2000 г.5.7Новые файлы синтаксиса, исправления ошибок и т. Д.
31 мая 2001 г.5.8Новые файлы синтаксиса, исправления ошибок и т. Д.
26 сентября 2001 г.6.0[17][22]Складной, плагины, многоязычный и т. д.
24 марта 2002 г.6.1Исправление ошибок
1 июня 2003 г.6.2Поддержка GTK2 и libgnome2, поддержка арабского языка,: команда try, незначительные функции, исправления ошибок
7 июня 2004 г.6.3Исправления ошибок, обновления переводов, улучшения пометок
15 октября 2005 г.6.4Исправления ошибок, обновления поддержки Perl, Python и Ruby
7 мая 2006 г.7.0[23]Проверка орфографии, завершение кода, вкладки (несколько видовых экранов / макетов окон), выделение текущей строки и столбца, отмена ветвей и т. д.
12 мая 2007 г.7.1Исправления ошибок, новый синтаксис и файлы времени выполнения и т. Д.
9 августа 2008 г.7.2[24]Поддержка чисел с плавающей запятой в скриптах, отредактированный код отрисовки экрана, исправления ошибок, новые файлы синтаксиса и т. Д.
15 августа 2010 г.7.3Lua поддержка, поддержка Python3, Blowfish шифрование, постоянная отмена / повтор
10 августа 2013 г.7.4[25]Новый, более быстрый движок регулярных выражений.
12 сентября 2016 г.8.0[26]Поддержка асинхронного ввода-вывода, задания, лямбда-выражения и т. Д.
18 мая 2018 г.8.1[27]Поддержка окон терминала и плагин терминала gdb.
13 декабря 2019 г.,8.2[28]Всплывающие окна, свойства текста.

Интерфейс

Графический Vim (gVim) под GTK + 2.
Код вверху (Идти ), открытые файлы, регистры ("менеджер буфера обмена" и история макросов)

Нравиться vi, Интерфейс Vim основан не на меню или значках, а на командах, указанных в текстовый пользовательский интерфейс; это GUI Режим, gVim, добавляет меню и панели инструментов для часто используемых команд, но полная функциональность по-прежнему выражается через командная строка режим. Vi (и, соответственно, Vim) позволяет машинистке держать пальцы на клавиатуре. домашний ряд, что может быть преимуществом для сенсорная машинистка.[29]

Vim имеет встроенный руководство для новичков называется vimtutor. Обычно он устанавливается вместе с Vim, но существует как отдельный исполняемый файл и может запускаться с помощью команды оболочки.[30] Также есть Vim Руководство пользователя который подробно описывает функции Vim и Часто задаваемые вопросы. Это руководство можно прочитать в Vim или найти в Интернете.[31][32]

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

Поиск (grep) внутри Vim по файлам на диске без плагинов

Режимы

Vim имеет 12 различных режимов редактирования, 6 из которых являются вариантами 6 основных режимов.[33] Основные режимы:

  • Нормальный режим - используется для команд редактора. Это также режим по умолчанию, если только режим вставки опция указана.
  • Визуальный режим - аналогичен обычному режиму, но используется для выделения областей текста. Обычные команды запускаются в выделенной области, которую, например, можно использовать для перемещения или редактирования выделения.
  • Выбирать режим - работает аналогично визуальному режиму. Однако, если вводится печатаемый символ, возврат каретки или новая строка (или перевод строки), Vim вставляет символ и запускает режим вставки.[34]
  • Вставлять режим - аналогичен редактированию в большинстве современных редакторов. В режиме вставки буферы могут быть изменены с вставленным текстом.
  • Командная строка или же Cmdline mode - поддерживает однострочный ввод в нижней части окна Vim. Обычные команды (начиная с :), и некоторые другие конкретные буквы, соответствующие различным действиям (включая поиск шаблона и команду фильтрации), активируют этот режим.
  • Бывший режим - аналогично режиму Cmdline, он принимает однострочный ввод в нижней части окна. Однако в режиме Cmdline ввод команды выходит из режима при выполнении команды. Ввод команды в режиме Ex не приводит к изменению режима.
История команд ниже: мы можем редактировать каждую команду и / или запускать ее снова

Настройка

Vim обладает широкими возможностями настройки и расширения, что делает его привлекательным инструментом для пользователей, которым требуется большой контроль и гибкость в своей среде редактирования текста.[35] Ввод текста облегчается благодаря множеству функций, предназначенных для повышения эффективности клавиатуры. Пользователи могут выполнять сложные команды с «назначениями клавиш», которые можно настраивать и расширять. Функция «записи» позволяет создавать макросы для автоматизации последовательности нажатий клавиш и вызова внутренних или определяемых пользователем функций и сопоставлений. Аббревиатуры, аналогичные макросам и сопоставлениям клавиш, облегчают расширение коротких строк текста на более длинные, а также могут использоваться для исправления ошибок. Vim также предлагает «легкий» режим для пользователей, которым требуется более простое решение для редактирования текста.[36]

Есть много плагины доступны, которые расширяют или добавляют новые функции в Vim, например линтеры, интеграция с Git, отображение цветов в CSS. Эти сложные сценарии обычно пишутся на внутреннем языке сценариев Vim, vimscript (также известном как VimL),[37] но может быть написан и на других языках.

Vim редактирует JavaScript, с установленным плагином GitGutter: плюсы слева показывают новые строки (по информации от Git).
Vim редактирует JavaScript, с установленным плагином GitGutter: плюсы слева показывают новые строки (по информации от Git).

Существуют проекты, объединяющие сложные сценарии и настройки и направленные на превращение Vim в инструмент для решения конкретной задачи или на добавление особого вкуса к его поведению. Примеры включают Крем, который заставляет Vim вести себя как редактор щелчков и вводить текст, или VimOutliner, который обеспечивает удобную планировщик для пользователей Unix-подобных систем.

Особенности и улучшения по сравнению с vi

Vim имеет режим совместимости с vi, но когда этот режим не используется, Vim имеет множество улучшений по сравнению с vi.[38] Однако даже в режиме совместимости Vim не полностью совместим с vi, как определено в Единая спецификация Unix[39] и POSIX (например, Vim не поддерживает открытый режим vi, только визуальный режим). Разработчики Vim заявляют, что он «полностью совместим с Vi».[40]

Файловый менеджер внутри vim

Некоторые из улучшений Vim включают завершение, сравнение и слияние файлов (известный как vimdiff), комплексная интегрированная справочная система, расширенная обычные выражения, языки сценариев (как собственные, так и через альтернативные интерпретаторы сценариев, такие как Perl, Python, Ruby, Tcl и т. д.), включая поддержку плагины, а графический интерфейс пользователя (известный как gvim), ограниченный интегрированная среда развития -подобные особенности, мышь взаимодействие (как с графическим интерфейсом, так и без него), складывание, редактирование сжатых или архивных файлов в gzip, bzip2, застегивать, и деготь формат и файлы по сетевым протоколам, таким как SSH, FTP, и HTTP, сохранение состояния сеанса, проверка орфографии, разделенные (горизонтальные и вертикальные) окна и окна с вкладками, Unicode и другая многоязычная поддержка, подсветка синтаксиса, межсессионная команда, поиск и положение курсора истории, многоуровневый и ветвящийся отменить повторить история, которая может сохраняться в сеансах редактирования и в визуальном режиме.

Во время работы Vim сохраняет изменения пользователя в файле подкачки с расширением ".swp". расширение. Файл подкачки можно использовать для восстановления после сбоя. Если пользователь пытается открыть файл, а файл подкачки уже существует, Vim предупредит пользователя, и, если пользователь продолжит, Vim будет использовать файл подкачки с расширением «.swo» (или, если уже существует более одного файл подкачки, «.swn», «.swm» и т. д.).[41][42] Эту функцию можно отключить.[43]

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

Сценарий Vim

Сценарий Vim (также называемый vimscript или же VimL)[44] это язык сценариев встроен в Vim.[45] На основе бывший язык редактора оригинала vi редактор, в ранних версиях Vim добавлены команды для потока управления и определения функций. Начиная с версии 7, сценарий Vim также поддерживает более сложные типы данных, такие как списки и словари и (простая форма) объектно-ориентированного программирования. Встроенные функции, такие как карта() и фильтр() разрешить базовую форму функциональное программирование, а сценарий Vim имеет лямбда начиная с версии 8.0. Скрипт Vim в основном написан на императивный стиль программирования.

Vim макросы может содержать последовательность нормальный режим команды, но также может вызывать ex-команды или функции, написанные в сценарии Vim, для более сложных задач. Почти все расширения (называемые плагинами или чаще скриптами) основных функций Vim написаны на скрипте Vim, но плагины также могут использовать другие языки, например Perl[46], Python[47], Lua[48], Рубин[49], Tcl[50], или же Ракетка.[51] Эти плагины можно установить вручную или через диспетчер плагинов, например Vundle, Pathogen или Vim-Plug.

Файлы сценария Vim хранятся в виде обычного текста, как и другой код, а расширение имени файла обычно .vim. Заметным исключением является конфигурационный файл Vim, .vimrc.

Примеры

"Это программа Hello World в сценарии Vim.эхо "Привет, мир!""Это простой цикл while в скрипте Vim.позволять я = 1пока я < 5  эхо "счет" я  позволять я += 1в конце концовотпустить я

Доступность

В то время как vi изначально был доступен только на Unix операционных систем, Vim был портирован ко многим операционным системам, включая AmigaOS (исходная целевая платформа), Atari МИНТ, BeOS, ДОС, Windows начиная с Windows NT 3.1, OS / 2, OS / 390, MorphOS, OpenVMS, QNX, ОС RISC, Linux, BSD, и Классическая Mac OS.[52] Кроме того, Vim поставляется с каждой копией яблоко macOS.[53]

Независимые порты Vim доступны как для Android[54][55] и iOS.[56]

Неовим

Неовим
Скриншот Neovim
Neovim с плагином строки состояния

Неовим[57] вилка - с дополнениями[58] - Vim, который стремится улучшить расширяемость и ремонтопригодность Vim.[59] Neovim использует тот же синтаксис конфигурации, что и Vim; в результате то же самое конфигурационный файл можно использовать с обоими редакторами, хотя между ними есть небольшие различия.[60] Если дополнительные функции Neovim не используются, Neovim совместим почти со всеми функциями Vim.[61]

Проект Neovim был запущен в 2014 году, и некоторые члены сообщества Vim предложили раннюю поддержку высокоуровневого рефакторинга для обеспечения лучшего сценария, плагинов и интеграции с современными GUI .[62][63] Проект бесплатно программное обеспечение и это исходный код доступно на GitHub.[64]

23 марта 2014 г. Neovim провел успешный сбор средств.[65] поддержка как минимум одного штатного разработчика. Несколько интерфейсов находятся в стадии разработки, в которых используются возможности Neovim.[66][67][68]

Редактор Neovim доступен в PPA Ubuntu,[69] и несколько других менеджеров пакетов,[70] что делает возможным установку в различных операционных системах.

Смотрите также

Рекомендации

  1. ^ «Релизы». Получено 13 декабря 2019 - через GitHub.
  2. ^ Документация по Vim: введение: «Vim произносится как одно слово, как Джим, а не как vi-ai-em. Оно пишется с большой буквы, так как это имя, опять же как Джим».
  3. ^ Заплетал, Лукаш (18 апреля 2005 г.), "Интервью: Брэм Мооленаар", LinuxEXPRES: 21–22, получено 5 февраля 2015, VIM является производным от другого клона VI или вы начали с нуля? Я начал со Стиви. Это был клон Vi для компьютера Atari ST, перенесенный на Amiga. У него было довольно много проблем, и он не мог делать все, что мог Vi, но, поскольку исходный код был доступен, я мог исправить это сам. (английский перевод )
  4. ^ "Документация Vim: Уганда". vimhelp.org.
  5. ^ "Документация Vim: Уганда".
  6. ^ "Linux Journal: Выбор читателей 2003". 1 ноября 2003 г.. Получено 24 мая 2006.; "Linux Journal: Выбор читателей 2004 г.". 1 ноября 2004 г.. Получено 24 мая 2006.; "Linux Journal: 2005 Readers 'Choice Awards". 28 сентября 2005 г.. Получено 24 мая 2006.
  7. ^ «Опрос разработчиков Stack Overflow, 2015 § IV. Текстовый редактор». Переполнение стека. Получено 25 июля 2016.
  8. ^ «Результаты опроса разработчиков Stack Overflow за 2019 год». Переполнение стека § VII. Среды разработки. Получено 20 июля 2019.
  9. ^ а б c d Томпсон, Тим (26 марта 2000 г.). "Стиви". Получено 27 декабря 2010.
  10. ^ а б Тим Томпсон (28 июня 1987 г.). "Мини-vi для ST". Группа новостейcomp.sys.atari.st. Usenet:  [email protected]. Получено 27 декабря 2010.
  11. ^ а б Тони Эндрюс (6 июня 1988 г.). «v15i037: Stevie,« начинающий »клон VI для Unix, OS / 2, Amiga». Группа новостейcomp.sources.unix. Usenet:  [email protected]. Получено 27 декабря 2010.
  12. ^ Vim (20 января 2015 г.). "intro.txt". Справка Vim. Vim. Архивировано из оригинал 9 июля 2016 г.. Получено 9 июля 2016.
  13. ^ "vim (1)". die.net. Vim. 11 апреля 2006 г. Архивировано с оригинал 9 июля 2016 г.. Получено 9 июля 2016. Vim основан на Стиви, над которым работали: Тим Томпсон, Тони Эндрюс и Г. (Фред) Уолтер. Хотя почти ничего не осталось от исходного кода.
  14. ^ "Продолжение истории Vim" (PDF).
  15. ^ «История Вим - Йовица Илич». Получено 25 января 2020.
  16. ^ а б c "VILE (Vi Like Emacs) - Часто задаваемые вопросы (FAQ)". Получено 7 сентября 2019.
  17. ^ а б c d е ж Мооленаар, Брэм (15 января 2002 г.). "Vim, текстовый редактор с открытым исходным кодом". Получено 24 октября 2005.
  18. ^ "Textfiles.com".
  19. ^ "Наблюдатель за файлами". Архивировано из оригинал 11 июля 2011 г.. Получено 26 февраля, 2011.
  20. ^ "Официальное руководство по Vim, обзор версии 4". 12 марта 2004 г.. Получено 6 августа 2008.
  21. ^ "Официальное руководство по Vim, сводка по версии 5". 17 января 2004 г.. Получено 6 августа 2008.
  22. ^ "Официальное руководство по Vim, обзор версии 6". 12 марта 2004 г.. Получено 6 августа 2008.
  23. ^ "Справочное руководство по Vim, версия 7". 17 июля 2016 г.. Получено 13 января 2019.
  24. ^ "Группы Google". groups.google.com.
  25. ^ Google Discussiegroepen. Groups.google.com. Проверено 9 декабря 2013.
  26. ^ Брэм Мооленаар. "Vim 8.0 выпущен!". Получено 12 сентября 2016.
  27. ^ Брэм Мооленаар. "Выпущен Vim 8.1!". Получено 18 мая 2018.
  28. ^ Брэм Мооленаар. "Выпущен Vim 8.2!". Получено 13 декабря 2019.
  29. ^ Лэмб, Линда; Роббинс, Арнольд (1998). Изучение редактора Vi. O'Reilly Media, Inc. стр.305. ISBN  9781565924260.
  30. ^ Мооленаар, Брэм (3 ноября 2010 г.). "Документация Vim: usr_01". Получено 28 августа 2019.
  31. ^ Файлы справки Vim на vimhelp.org
  32. ^ Уаллин, Стив (апрель 2001 г.). Vi IMproved (VIM) (PDF). Издатели New Riders. ISBN  0-7357-1001-5.
  33. ^ Мооленаар, Брэм (8 декабря 2010 г.). "Документация Vim: введение". vimdoc.sourceforge.net. Получено 28 августа 2019.
  34. ^ Мооленаар, Брэм (17 февраля 2010 г.). «Документация Vim: визуальная». vimdoc.sourceforge.net. Получено 28 августа 2019.
  35. ^ Мелендес, Стивен. «Почему Vim, текстовый редактор 80-х, по-прежнему является предпочтительным пользовательским интерфейсом для опытных пользователей». FastCompany. Получено 5 мая 2019.
  36. ^ «Советы: как упростить Vim». Linux.com. 10 апреля 2007 г.. Получено 6 мая 2019.
  37. ^ "Документация Vim: usr_41". vimhelp.org.
  38. ^ Справочная система Vim (введите ":помощь"в Vim)
  39. ^ Открытая группа (2008), «vi - экранно-ориентированный (визуальный) редактор дисплея», спецификация Single Unix, версия 4 (IEEE Std 1003.1-2008), получено 27 декабря 2010
  40. ^ Пеппе; Бенджи; Кэмпбелл, Чарльз (2 января 2004 г.). "Vim FAQ". Получено 27 декабря 2010. (вопрос 1.3)
  41. ^ "Документация Vim: восстановление". vimdoc.sourceforge.net. Получено 17 декабря 2020.
  42. ^ "Как работать с файлами подкачки в Vim". cs.longwood.edu. Получено 17 декабря 2020.
  43. ^ "'опция swapfile ". vimhelp.org. 10 Октябрь 2020. Получено 18 декабря 2020.
  44. ^ Кляйн, Бенджамин. «Учебник по VimL: редактируйте как профессионал с плагинами и скриптами Vim, Бенджамин Кляйн | Прагматичная книжная полка». Получено 25 января 2020.
  45. ^ "Документация Vim: usr_41". vimhelp.org.
  46. ^ Verdoolaege, Sven; Герасимоф, Мэтт. "Документация Vim: if_perl". Получено 27 августа 2019.
  47. ^ Мур, Пол. "Документация Vim: if_pyth". Получено 27 августа 2019.
  48. ^ Карвалью, Луис. "Документация Vim: if_lua". Получено 27 августа 2019.
  49. ^ Маэда, Шуго. "Документация Vim: if_ruby". Получено 27 августа 2019.
  50. ^ Уилкен, Инго. "Документация Vim: if_tcl". Получено 27 августа 2019.
  51. ^ Хорев, Сергей. "Документация Vim: if_mzsch". Получено 27 августа 2019.
  52. ^ ": справка sys-file-list"
    "Vim Online: Загрузки". Получено 7 января 2007.
  53. ^ "Страница руководства Mac OS X для vim (1)". developer.apple.com. Apple Inc.. Получено 12 января 2010.
  54. ^ «VimTouch, разработка этого приложения остановилась». Получено 9 августа 2015.
  55. ^ «DroidVim, в активной разработке». Получено 5 марта 2017.
  56. ^ «Vim - Applidium, мобильное агентство в Париже». Архивировано из оригинал 20 января 2012 г.. Получено 11 августа 2015.
  57. ^ "Neovim: vim, из коробки".
  58. ^ "Документация Nvim: vim_diff".
  59. ^ "Неовим Вижн".
  60. ^ «Переход на NeoVim».
  61. ^ «Как начать использовать Neovim вместо Vim».
  62. ^ "Neovim: восстановление Vim для 21 века".
  63. ^ "Сообщение в блоге Vimcasts.org".
  64. ^ «GitHub - neovim / neovim: вилка Vim, ориентированная на расширяемость и удобство использования». 29 августа 2019.
  65. ^ "Сборщик средств Bountysource".
  66. ^ "Интерфейс NyaoVim". 29 августа 2019.
  67. ^ "Интерфейс Mac OS X". 29 августа 2019.
  68. ^ "Интерфейс Neovim-Qt". 21 июля 2020.
  69. ^ "Неовим ППА информация".
  70. ^ «Neovim wiki: инструкция по установке». 29 августа 2019.

внешняя ссылка