stringtranslate.com

Вим (текстовый редактор)

Vim ( / v ɪ m / ; [5] vi Improved ) — бесплатная программа экранного текстового редактора с открытым исходным кодом . Это улучшенный клон vi Билла Джоя . Автор Vim, Брэм Муленаар , создал Vim из порта редактора Stevie для Amiga [6] и выпустил общедоступную версию в 1991 году. Vim предназначен для использования как из интерфейса командной строки , так и в качестве автономного приложения в графическом редакторе . пользовательский интерфейс . [7] С момента выпуска игры для Amiga в результате кросс-платформенной разработки она стала доступна на многих других системах. В 2018 году он был признан самым популярным редактором среди читателей Linux Journal ; [8] в 2015 году опрос разработчиков Stack Overflow показал, что он является третьим по популярности текстовым редактором, [9] а в 2019 году — пятым по популярности средой разработки. [10]

История

Предшественник Vim, Стиви (редактор ST для энтузиастов VI) , был создан Тимом Томпсоном для Atari ST в 1987 году [11] [12] и далее развит Тони Эндрюсом [11] [13] и GR (Фредом) Уолтером. [14] [15] Это был один из первых популярных клонов Vi , в котором не использовался исходный код Vi. В исходном коде Vi использовался текстовый редактор Ed , разработанный AT&T, поэтому Vi могли использовать только те, у кого была лицензия на исходный код AT&T. [ нужна цитация ] Создание Vim на основе исходного кода Стиви означало, что программу можно было распространять, не требуя исходной лицензии AT&T.

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

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

История выпусков

Лицензия

Vim выпускается под лицензией Vim , которая включает в себя некоторые положения о благотворительной деятельности , которые побуждают пользователей, которым нравится это программное обеспечение, рассмотреть возможность пожертвований детям в Уганде . [4] Лицензия Vim совместима со Стандартной общественной лицензией GNU благодаря специальному пункту, разрешающему распространение модифицированных копий под лицензией GNU GPL версии 2.0 или более поздней . [4]

Интерфейс

гВим 7.3

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

В Vim есть встроенное руководство для начинающих под названием vimtutor, которое обычно устанавливается вместе с Vim, но представляет собой отдельный исполняемый файл и может запускаться с помощью команды оболочки. [34] В Руководстве пользователя Vim подробно описаны функции Vim, его можно прочитать непосредственно в Vim или найти в Интернете. [35] [36]

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

Регистры

Vim имеет различные специальные записи памяти, называемые регистрами (не путать с аппаратными регистрами или регистрами процессора ). При вырезании, удалении, копировании или вставке текста пользователь может выбрать сохранение обработанного текста в регистре. Существует 36 регистров общего назначения, связанных с буквами и цифрами ([a-z0-9]), а также ряд специальных регистров, которые либо содержат специальные значения (текущее имя файла, последняя команда и т. д.), либо служат специальной цели. [7] : 85 

Режимы

Режимы Vim

Как и vi, vim поддерживает несколько режимов редактирования. В зависимости от режима вводимые символы интерпретируются либо как последовательность команд, либо вставляются как текст. В Vim имеется 14 режимов редактирования, 7 основных режимов и 7 вариантов: [37]

Кастомизация

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

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

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

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

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

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

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

Vim-скрипт

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

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

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

Примеры

" Это программа Hello World в сценарии Vim.
echo "Hello, world!"«Это простой цикл while в сценарии Vim. let  i  =  1 while  i  <  5 echo «count is»  i  let  i  +=  1 end while
unlet i

Доступность

Хотя изначально vi был доступен только в операционных системах Unix , Vim был портирован на многие операционные системы, включая AmigaOS (исходная целевая платформа), Atari MiNT , BeOS , DOS , Windows , начиная с Windows NT 3.1 , OS/2 , OS/390 , MorphOS , OpenVMS , QNX , RISC OS , Linux , BSD и Classic Mac OS . [56] Кроме того, Vim поставляется с Apple macOS . [57]

Независимые порты Vim доступны для Android [58] [59] и iOS . [60]

Неовим

Neovim [62] — это ответвление Vim, целью которого является улучшение расширяемости и удобства сопровождения Vim. [63] Некоторые особенности ответвления включают встроенную поддержку протокола языкового сервера (LSP), поддержку асинхронного ввода-вывода и поддержку сценариев Lua с использованием языкового интерпретатора luaJIT . [64] [a] Проект является свободным программным обеспечением , его исходный код доступен на GitHub . [65]

Neovim имеет тот же синтаксис конфигурации, что и Vim (если не используется vim9script); таким образом, один и тот же файл конфигурации можно использовать с обоими редакторами, хотя есть небольшие различия в деталях опций. [66] Если дополнительные функции Neovim не используются, Neovim совместим практически со всеми функциями Vim. [67]

Проект Neovim стартовал в 2014 году, после того как был отклонен патч для Vim, поддерживающий многопоточность. [68] В марте 2014 года компания Neovim провела успешный сбор средств, поддержав как минимум одного штатного разработчика. [69] [70]

В стадии разработки находится несколько интерфейсов, в которых используются возможности Neovim. [71] [72] [73]

С выпуском Neovim 0.5 2 июля 2021 года он получил встроенную поддержку LSP , Tree -sitter и более полную поддержку Lua, включая поддержку сценариев конфигурации, написанных на Lua вместо VimL. [74]

Галерея

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

Примечания

  1. ^ LuaJIT напрямую указан как сторонняя зависимость для сборки программы.

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

  1. ^ «Vim 9.1 доступен» . 2 января 2024 г. Проверено 3 января 2024 г.
  2. ^ "vim/ЛИЦЕНЗИЯ". github.com . 20 октября 2021 года. Архивировано из оригинала 16 августа 2021 года . Проверено 5 июля 2021 г.
  3. ^ «Лицензия Vim». spdx.org . Архивировано из оригинала 29 июля 2021 года . Проверено 5 июля 2021 г.
  4. ^ abc "Vim: uganda.txt". vimhelp.org . Архивировано из оригинала 13 января 2019 года . Проверено 13 января 2019 г.
  5. Документация Vim: введение. Архивировано 13 января 2019 г. на Wayback Machine : «Vim произносится как одно слово, как Джим, а не vi-ai-em. Оно пишется с заглавной буквы, так как это имя, опять же, как Джим».
  6. ^
    • Оригинальное интервью: Муленаар, Брэм (18 апреля 2005 г.). «Рожовор: Брэм Муленаар» [Интервью: Брэм Муленаар]. LinuxEXPRES (Интервью) (на чешском языке). Беседовал Заплетал, Лукаш. вопрос 2. Архивировано из оригинала 28 декабря 2023 года . Проверено 3 января 2024 г.
    • Перевод: Брэм Муленаар (nd). «Интервью с Брэмом Муленааром, опубликованное в чешском журнале LinuxEXPRES, английская версия». Сайт Брэма Муленаара . Архивировано из оригинала 7 января 2016 года.
  7. ^ Аб Макдоннелл, Марк (2014). Про вим. [Беркли]. ISBN 978-1-4842-0250-0. OCLC  897466496.{{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  8. ^ «Лучший редактор | Linux Journal». www.linuxjournal.com . Проверено 20 апреля 2023 г.
  9. ^ «Опрос разработчиков Stack Overflow, 2015 г., § IV. Текстовый редактор» . Переполнение стека. Архивировано из оригинала 4 мая 2019 года . Проверено 25 июля 2016 г.
  10. ^ «Результаты опроса разработчиков Stack Overflow за 2019 год» . Переполнение стека § VII. Среды разработки. Архивировано из оригинала 7 марта 2020 года . Проверено 20 июля 2019 г.
  11. ^ abcd Томпсон, Тим (26 марта 2000 г.). «Стиви». Архивировано из оригинала 4 января 2016 года . Проверено 27 декабря 2010 г.
  12. ^ AB Тим Томпсон (28 июня 1987 г.). «Мини-ви для ST». Группа новостей : comp.sys.atari.st. Usenet:  [email protected]. Архивировано из оригинала 9 ноября 2012 года . Проверено 27 декабря 2010 г.
  13. ^ аб Тони Эндрюс (6 июня 1988 г.). «v15i037: Стиви, «амбициозный» клон VI для Unix, OS/2, Amiga». Группа новостей : comp.sources.unix. Usenet:  [email protected]. Архивировано из оригинала 9 ноября 2012 года . Проверено 27 декабря 2010 г.
  14. ^ Вим (20 января 2015 г.). "интро.txt". Вим, помогите . Вим. Архивировано из оригинала 9 июля 2016 года . Проверено 9 июля 2016 г.
  15. ^ "ВИМ (1)" . сайт die.net . Вим. 11 апреля 2006 года. Архивировано из оригинала 9 июля 2016 года . Проверено 9 июля 2016 г. Вим основан на Стиви, над которым работали: Тим Томпсон, Тони Эндрюс и GR (Фред) Уолтер. Хотя от исходного кода почти ничего не осталось.
  16. ^ Муленаар, Брэм (10 октября 2000 г.). «Продолжение истории Вима» (PDF) . Архивировано (PDF) из оригинала 18 апреля 2012 года . Проверено 19 сентября 2011 г.
  17. ^ "История Вима - Йовица Илич" . 5 июня 2014 г. Архивировано из оригинала 25 января 2020 г. . Проверено 25 января 2020 г.
  18. ^ abc «VILE (Vi Like Emacs) - Часто задаваемые вопросы (FAQ)» . Архивировано из оригинала 31 августа 2019 года . Проверено 7 сентября 2019 г.
  19. ^ abcdef Муленаар, Брэм (15 января 2002 г.). «Vim, текстовый редактор с открытым исходным кодом». Архивировано из оригинала 7 августа 2011 года . Проверено 24 октября 2005 г.
  20. ^ "Textfiles.com". Архивировано из оригинала 16 июля 2011 года . Проверено 2 октября 2009 г.
  21. ^ "Наблюдатель за файлами". Архивировано из оригинала 11 июля 2011 года . Проверено 26 февраля 2011 г.
  22. ^ «Официальное руководство по Vim, краткое описание версии 4» . 12 марта 2004 г. Архивировано из оригинала 18 августа 2008 г. Проверено 6 августа 2008 г.
  23. ^ «Официальное руководство по Vim, краткое описание версии 5» . 17 января 2004 г. Архивировано из оригинала 21 августа 2008 г. Проверено 6 августа 2008 г.
  24. ^ «Официальное руководство по Vim, краткое описание версии 6» . 12 марта 2004 г. Архивировано из оригинала 11 июня 2008 г. Проверено 6 августа 2008 г.
  25. ^ «Справочное руководство Vim, версия 7» . 17 июля 2016 г. Архивировано из оригинала 13 января 2019 г. . Проверено 13 января 2019 г.
  26. ^ «Группы Google». groups.google.com . Архивировано из оригинала 6 ноября 2012 года . Проверено 11 августа 2008 г.
  27. ^ Google Дискуссия. Архивировано 22 января 2011 года в Португальском веб-архиве. Группы.google.com. Проверено 9 декабря 2013 г.
  28. ^ Брэм Муленаар. «Выпущен Vim 8.0!». Архивировано из оригинала 22 января 2011 года . Проверено 12 сентября 2016 г.
  29. ^ Брэм Муленаар. «Vim 8.1 выпущен!». Архивировано из оригинала 17 мая 2018 года . Проверено 18 мая 2018 г.
  30. ^ Брэм Муленаар. «Vim 8.2 выпущен!». Архивировано из оригинала 12 декабря 2019 года . Проверено 13 декабря 2019 г.
  31. ^ Брэм Муленаар. «Vim 9.0 выпущен!». Архивировано из оригинала 2 июля 2022 года . Проверено 30 июня 2022 г.
  32. ^ Кристиан Брабандт. «Vim 9.1 выпущен!». Архивировано из оригинала 2 января 2024 года . Проверено 4 января 2024 г.
  33. ^ abc Лэмб, Линда; Роббинс, Арнольд (1998). Изучение редактора Vi . О'Рейли Медиа, Инк. с. 305. ИСБН 9781565924260.
  34. Муленаар, Брэм (3 ноября 2010 г.). «Документация Vim: usr_01». Архивировано из оригинала 29 июля 2020 года . Проверено 28 августа 2019 г.
  35. ^ Файлы справки Vim. Архивировано 13 января 2019 г. на Wayback Machine на сайте vimhelp.org.
  36. ^ Уаллин, Стив (апрель 2001 г.). Vi IMproved (VIM) (PDF) . Издательство «Новые гонщики». ISBN 0-7357-1001-5. Архивировано (PDF) из оригинала 19 ноября 2021 года . Проверено 11 октября 2021 г.
  37. ^ Муленаар, Брэм. «Вим: intro.txt». vimhelp.org . Проверено 1 сентября 2023 г.
  38. ^ ab "CS107 Редактор Vim". веб-сайт Stanford.edu . Архивировано из оригинала 27 января 2023 года . Проверено 27 января 2023 г.
  39. Мелендес, Стивен (28 октября 2014 г.). «Почему Vim, текстовый редактор 80-х, по-прежнему остается предпочтительным пользовательским интерфейсом для опытных пользователей». Компания Фаст . Архивировано из оригинала 6 мая 2019 года . Проверено 5 мая 2019 г.
  40. ^ «Советы: упрощение работы с Vim» . Linux.com . 10 апреля 2007 г. Архивировано из оригинала 6 мая 2019 г. . Проверено 6 мая 2019 г.
  41. ^ "Документация Vim: usr_41" . vimhelp.org . Архивировано из оригинала 13 января 2019 года . Проверено 13 января 2019 г.
  42. ^ Справочная система Vim (введите « :help» в Vim)
  43. ^ The Open Group (2008), «vi — экранно-ориентированный (визуальный) редактор отображения», Единая спецификация Unix, версия 4 (IEEE Std 1003.1–2008), заархивировано из оригинала 22 января 2011 г. , получено 27 декабря 2010 г.
  44. ^ Пеппе; Бенджи; Кэмпбелл, Чарльз (2 января 2004 г.). «Часто задаваемые вопросы по Vim». Архивировано из оригинала 13 января 2019 года . Проверено 27 декабря 2010 г.(вопрос 1.3)
  45. ^ «Документация Vim: восстановление» . vimdoc.sourceforge.net . Архивировано из оригинала 13 декабря 2020 года . Проверено 17 декабря 2020 г.
  46. ^ «Как обращаться с файлами подкачки в Vim» . cs.longwood.edu . Архивировано из оригинала 7 мая 2021 года . Проверено 17 декабря 2020 г.
  47. ^ «Опция «файл подкачки»» . vimhelp.org . 10 октября 2020 года. Архивировано из оригинала 14 декабря 2020 года . Проверено 18 декабря 2020 г.
  48. ^ Кляйн, Бенджамин. «Букварь по VimL: редактируйте как профессионал с помощью плагинов и сценариев Vim, Бенджамин Кляйн | Прагматичная книжная полка». Архивировано из оригинала 25 января 2020 года . Проверено 25 января 2020 г.
  49. ^ "Документация Vim: usr_41" . vimhelp.org . Архивировано из оригинала 13 января 2019 года . Проверено 13 января 2019 г.
  50. ^ Вердулаге, Свен; Герасимов, Мэтт. «Документация Vim: if_perl». Архивировано из оригинала 8 февраля 2012 года . Проверено 27 августа 2019 г.
  51. ^ Мур, Пол. «Документация Vim: if_pyth». Архивировано из оригинала 22 августа 2012 года . Проверено 27 августа 2019 г.
  52. ^ Карвальо, Луис. «Документация Vim: if_lua». Архивировано из оригинала 30 марта 2012 года . Проверено 27 августа 2019 г.
  53. ^ Маэда, Сюго. «Документация Vim: if_ruby». Архивировано из оригинала 14 февраля 2012 года . Проверено 27 августа 2019 г.
  54. ^ Уилкен, Инго. «Документация Vim: if_tcl». Архивировано из оригинала 24 августа 2012 года . Проверено 27 августа 2019 г.
  55. ^ Хорев, Сергей. «Документация Vim: if_mzsch». Архивировано из оригинала 14 апреля 2012 года . Проверено 27 августа 2019 г.
  56. ^ " :help sys-file-list" "Vim Online: Загрузки". Архивировано из оригинала 8 января 2007 года . Проверено 7 января 2007 г.
  57. ^ «Страница руководства Mac OS X для vim (1)» . разработчик.apple.com . Apple Inc. Архивировано из оригинала 9 июня 2012 года . Проверено 12 января 2010 г.
  58. ^ «VimTouch, разработка этого приложения застопорилась» . Гитхаб . Архивировано из оригинала 29 декабря 2015 года . Проверено 9 августа 2015 г.
  59. ^ «DroidVim, в активной разработке» . Гитхаб . Архивировано из оригинала 27 июня 2018 года . Проверено 5 марта 2017 г.
  60. ^ "Vim - Applidium, мобильное агентство в Париже" . Архивировано из оригинала 20 января 2012 года . Проверено 11 августа 2015 г.
  61. ^ "Нвим 0.9.5" . 30 декабря 2023 г. Проверено 3 января 2024 г.
  62. ^ «Неовим: vim, из коробки» . Архивировано из оригинала 16 мая 2022 года . Проверено 18 февраля 2016 г.
  63. ^ "Неовим Вижн". Архивировано из оригинала 26 апреля 2022 года . Проверено 18 февраля 2016 г.
  64. ^ "Документация Nvim: vim_diff" . Архивировано из оригинала 25 августа 2019 года . Проверено 2 октября 2019 г.
  65. ^ «GitHub - neovim/neovim: форк Vim, ориентированный на расширяемость и удобство использования» . Гитхаб . 29 августа 2019 года. Архивировано из оригинала 10 февраля 2016 года . Проверено 18 февраля 2016 г.
  66. ^ «Переход на NeoVim». 31 марта 2015 г. Архивировано из оригинала 16 февраля 2016 г. . Проверено 18 февраля 2016 г.
  67. ^ «Как начать использовать Neovim вместо Vim». Архивировано из оригинала 4 июня 2017 года . Проверено 18 февраля 2016 г.
  68. Эдди Ковски (1 февраля 2017 г.). «25-летие Vim и выпуск Vim 8 [LWN.net]». lwn.net . Проверено 13 июня 2023 г.
  69. ^ "Сообщение в блоге Vimcasts.org" . Архивировано из оригинала 17 августа 2021 года . Проверено 18 февраля 2016 г.
  70. ^ "Неовим". Источник Баунти . 23 марта 2014 г. Архивировано из оригинала 5 января 2021 г. . Проверено 20 марта 2021 г.
  71. ^ "Фронтенд NyaoVim" . Гитхаб . 29 августа 2019 года. Архивировано из оригинала 30 апреля 2022 года . Проверено 18 февраля 2016 г.
  72. ^ «Фронтенд Mac OS X» . Гитхаб . 29 августа 2019 года. Архивировано из оригинала 17 апреля 2022 года . Проверено 18 февраля 2016 г.
  73. ^ "Фронтенд Neovim-Qt" . Гитхаб . 21 июля 2020 года. Архивировано из оригинала 16 сентября 2019 года . Проверено 17 июля 2019 г.
  74. Айоолува Исайя (3 августа 2021 г.). «Новые возможности Neovim 0.5 [LWN.net]». lwn.net . Проверено 13 июня 2023 г.

Внешние ссылки