Interested Article - Vim
- 2020-12-31
- 1
Vim (сокр. от V i Im proved , произносится «вим») — свободный текстовый редактор , созданный на основе более старого vi , разработанного Биллом Джойем . Автор Vim’а, Брам Моленар , создал его из порта редактора Stevie для Amiga и в 1991 году выпустил общедоступную версию. Vim предназначен для использования как в интерфейсе командной строки , так и в качестве отдельного приложения в графическом пользовательском интерфейсе .
С выпуска для Amiga кроссплатформенная разработка сделала Vim доступным для . В 2018 году он был признан самым популярным редактором среди читателей Linux Journal ; в 2015 году опрос разработчиков на Stack Overflow показал, что он стал третьим по популярности текстовым редактором , а в 2019 году — пятой по популярности средой разработки.
Существует и модификация для использования в графическом оконном интерфейсе — GVim. Многие пользовательские команды в GVim могут вызываться через соответствующие пункты меню.
История
Предшественник Vim’a, Stevie , был создан Тимом Томпсоном для Atari ST в 1987 году и доработан Тони Эндрюсом и G. R. (Fred) Уолтером.
Взяв за основу Stevie, Брам Моленар начал работать над Vim для компьютера Amiga в 1988 году, а первый публичный релиз (Vim v1.14) состоялся в 1991 году.
Во время первого выпуска название «Vim» было акронимом от «Vi IMitation», но в конце 1993 года оно было изменено на «Vi IMproved».
История версий | ||
---|---|---|
Дата | Версия | Изменения |
Июнь 1987 года | N/A | Тим Томпсон выпускает Stevie, ограниченный клон vi для Atari ST , публикуя исходный код на Usenet . |
Июнь 1988 года | N/A | Тони Эндрюс улучшает Stevie и переносит его на Unix и OS/2 , выпуская версию 3.10 на Usenet. |
1988 год | 1.0 | Брам Моленар создает Vi IMitation , который никогда официально не выходил. |
2 ноября 1991 года | 1.14 | Первая общедоступная версия для Amiga . |
1992 год | 1.22 | Порт для Unix , никогда не публиковался. Теперь Vim конкурирует с vi . |
December 14, 1993 | 2.0 | Первый выпуск под названием Vi IMproved . |
12 августа 1994 года | 3.0 | Поддержка разбиения окон |
29 мая 1996 года | 4.0 | Графический пользовательский интерфейс |
19 февраля 1998 года | 5.0 | Подсветка синтаксиса , простой язык сценариев (определяемые пользователем функции, команды и т. д.) |
6 апреля 1998 года | 5.1 | Исправление ошибок и другие улучшения |
27 апреля 1998 года | 5.2 | Поддержка длинных строк, встроенный файловый браузер, диалоги, всплывающие меню, select mode, файлы сессий, определяемые пользователем функции, команды, 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 | Сворачивание , плагины , многоязычность и др. |
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 | Проверка правописания , автодополнение , вкладки («tab-ы»), подсветка текущей строки и столбца, undo branches и другие изменения |
12 мая 2007 года | 7.1 | Исправление ошибок, новые исполняемые файлы и файлы синтаксиса и др. |
9 августа 2008 года | 7.2 | Поддержка чисел с плавающей запятой в сценариях, рефакторинг кода отрисовки экрана, исправление ошибок, новые файлы синтаксиса и др. |
15 августа 2010 года | 7.3 | Исправление ошибок, новые исполняемые файлы и файлы синтаксиса, улучшение безопасности, «вечные» undo и redo, прекращение поддержки Mac OS 9 и GTK1 , поддержка Lua и Python3 и др. |
10 августа 2013 года | 7.4 | Новый, более быстрый движок для поддержки регулярных выражений |
12 сентября 2016 года | 8.0 | Асинхронный ввод/вывод, лямбда-выражения , замыкания , поддержка GTK+ 3 и Microsoft DirectX и др. |
18 мая 2018 года | 8.1 | Поддержка открытия терминала внутри окна Vim . |
14 декабря 2019 года | 8.2 | Всплывающие окна, свойства текста. |
28 июня 2022 года | 9.0 | Vim9 script |
Лицензия
Vim распространяется по GPL -совместимой лицензии, известной как Charityware ( англ. charity — благотворительность). Часть средств, пожертвованных на разработку Vim, тратится на поддержку сирот Уганды посредством организации .
Интерфейс
Одна из главных особенностей Vim и основное отличие от «классических» текстовых редакторов — применение двух основных, вручную переключаемых, режимов ввода: (после запуска редактор находится в нём) и ( англ. insert mode , режим непосредственного редактирования текста, аналогичный большинству «обычных» редакторов). Существуют и другие режимы.
Vim не интуитивен (кроме «текстового» режима), так что эффективная работа с редактором требует предварительного обучения.
Как и у vi , интерфейс Vim основан не на меню или значках, а на командах, заданных в текстовом пользовательском интерфейсе . Графический режим, gVim , добавляет меню и панели инструментов для часто используемых команд, но полная функциональность по-прежнему используется через интерфейс командной строки . Vi (и, соответственно, Vim), как правило, позволяет наборщику держать пальцы на среднем («домашнем») ряду, что может быть преимуществом для слепого метода печати .
В Vim есть встроенный учебник для начинающих под названием vimtutor, который обычно устанавливается вместе с Vim, но представляет собой отдельный исполняемый файл и может запускаться с помощью команды оболочки. Руководство пользователя Vim, подробно описывающее функции Vim, можно прочитать прямо в Vim или найти в Интернете.
Также Vim имеет подробную справочную систему и систему навигации и перехода между её разделами. Чтобы открыть любой её раздел, достаточно воспользоваться командой :help в командном режиме.
Регистры
У Vim есть специальные элементы памяти — регистры (не путать с аппаратными средствами или регистрами процессора ) — в которые можно сохранить обработанный текст при его вырезании, удалении, копировании или вставке. Есть 36 регистров общего назначения, связанных с буквами и цифрами ([a-z0-9]), и ряд специальных регистров, которые либо содержат специальные значения (текущее имя файла, последняя команда и т. д.), либо служат для специальной цели. :85
Режимы работы
Как и vi, vim поддерживает несколько режимов редактирования. В зависимости от режима вводимые символы интерпретируются либо как последовательности команд, либо вставляются как текст. Всего есть 12 режимов редактирования, 6 из которых — основные.
- Нормальный режим ( normal mode ) — используется для команд редактора. Обычно это режим по умолчанию; нажатие ESC возвращает редактор в этот режим.
- Режим вставки ( insert mode ) — используется для ввода текста аналогично большинству редакторов. В этом режиме открытый текст в буферах можно модифицировать текстом, введенным с клавиатуры.
-
Визуальный режим
(
visual mode
) — используется для выделения областей текста. Выбранную область можно перемещать, редактировать и т. д.
- Визуальный линейный ( visual linewise ) — подтип визуального режима, в котором выбирается одна или несколько целых строк.
- Визуальный поблочный ( visual blockwise ) — другой подтип, который выделяет прямоугольный блок текста в одной или нескольких строках.
- Режим выбора ( select mode ) — аналогичный визуальному, но команды не интерпретируются, вместо этого выделенный текст напрямую заменяется вводом с клавиатуры. Аналогичен режиму выделения, используемому в редакторах на платформах Microsoft Windows.
- Режим командной строки ( command-line mode или cmdline mode ) — обеспечивает однострочный ввод в нижней части окна Vim. Комманды, начинающиеся с : , и некоторые другие клавиши (например поиск по шаблону и команда фильтра) активируют этот режим. По завершении команды Vim возвращается в предыдущий режим.
- Ex mode mode — принимает последовательность команд.
Нормальный режим
Конечно же, подобных команд существует гораздо больше. Дело в том, что вам нужно изучить эти команды, чтобы использовать. Вы можете возразить, что, вероятно, не сможете выучить все эти команды, ведь существуют сотни различных команд перемещения, среди которых есть и простые, и достаточно хитроумные, и что уйдут недели тренировок на изучение всех этих команд. Что ж, вам и не нужно изучать их все. Вместо этого нужно разобраться в своём индивидуальном стиле редактирования и изучить только те команды, которые помогут сделать его более эффективным .
По умолчанию Vim начинает свою работу в нормальном режиме, который также называют командным. Нажатие клавиш в этом режиме воспринимается как команды (копирования, удаления, перемещения текста и т. д.).
Среди команд нормального режима есть «односимвольные» команды. Так, например, нажатие $ приведёт к перемещению курсора в конец строки; нажатие клавиши 0 (ноль) — в начало; D (в верхнем регистре) — к удалению ( d elete) части текущей строки от текущего положения курсора до конца; С (в верхнем регистре) — к замене ( c hange) части текущей строки от текущего положения курсора и до конца и т. д.
Другие команды для своей работы будут ждать дальнейшего продолжения ввода. Например f ответственно за быстрое перемещение в строке к следующему набранному после себя символу. Поэтому после нажатия f Vim будет ждать набора этого символа, чтобы использовать его в качестве искомого.
После нажатия y ( y ank), d , c и других подобных «управляющих» клавиш Vim будет ожидать дальнейшего ввода команд, задающих объект, над которым будет произведено действие (копирование, удаление или замена соответственно). Так, d a w удалит текущее слово под курсором ( d elete a mbient w ord), а d $ — все символы начиная с текущего положения курсора и заканчивая концом строки.
Подобные очень простые команды используются не только в «ручном режиме» (когда при необходимости набираются всякий раз с клавиатуры), но и при задании .
Нормальный режим — это центральный режим , из которого осуществляется переход во все остальные. Из любого режима в командный режим можно перейти, дважды нажав клавишу Esc (в большинстве случаев достаточно одного нажатия).
|
Этот раздел
не завершён
.
|
Режим вставки
Режим вставки ( англ. insert mode ), в котором производится ввод текста.
Для перехода из командного режима в режим вставки можно нажать i (для начала вставки текста на месте курсора) или I (для начала вставки с начала строки) или a (для начала вставки текста после курсора) . Также существует ряд других клавиш и их сочетаний для перехода в режим непосредственного редактирования текста (например, через одну из команд замены текстового объекта).
В этом режиме Vim работает так же, как и большинство «обычных» текстовых редакторов. По умолчанию набранные символы не воспринимаются как команды, а вставляются в существующий текст. Однако даже в этом режиме можно задать особые действия редактора, выполняемые при нажатии определённых клавиш или их сочетаний. Как пример, можно задать, чтобы при наборе открывающейся скобки ( сразу же добавлялась парная ей закрывающая скобка и курсор устанавливался между ними.
Для вставки, удаления, изменения и автодополнения текста также могут использоваться клавиатурные сочетания ( Ctrl + R и др.)
При наборе слова-аббревиатуры это слово автоматически заменяется на заранее заданный текст.
|
Этот раздел
не завершён
.
|
Режим командной строки
Этот режим вызывается нажатием
:
из нормального режима. За двоеточием следует сложная команда (например, поиска или замены), которая после ввода передаётся на исполнение нажатием
↵ Enter
. После выполнения команды редактор возвращается в нормальный режим. К этому режиму также относятся команды поиска дальше по тексту
/
, поиск назад по тексту (
?
) и команда-фильтр
!
для передачи данных внешнему фильтру.
Визуальный режим
Визуальный режим отсутствовал в Vi и впервые появился в Vim. Он чем-то схож с командным. С помощью специальных управляющих команд, в сочетании со стрелками и командами навигации, можно посимвольно, построчно или в виде блока выделять фрагменты текста и затем применить к ним команды нормального режима (например, удаление выделенного текста или его замена). Редактирование в этом режиме проще, чем в нормальном, потому что чётко видно, к какому блоку текста будет применяться вызванная команда редактирования.
Настройка
Расширения Vim
Общее число расширений, доступных на официальном сайте, составляет более 3000 .
К популярным расширениям Vim, в частности, относятся:
- ;
- — для просмотра структуры программных файлов (список функций и пр.);
- (начиная с версии Vim 7.4 в основном не актуален);
- — для более удобного закрывания тегов при редактировании html и xml файлов;
- — для автодополнения слов нажатием Tab ↹ (при этом отступы строк работают как обычно);
- project — для организации файлов в проекты для более удобной навигации по ним;
- indexer — для генерации тегов с помощью ctags для всех файлов, входящих в проект (проект может быть организован как плагином project, так и без него). Теги нужны для быстрого перемещения от вызова функции к её объявлению, для получения списка членов структуры или класса, и т. д.
Благодаря гибкости возможностей, предоставляемых посредством расширений, Vim также можно использовать в качестве персонального вики .
Обзор: избранные улучшения vi
В сравнении с классическим vi , Vim отличается следующими улучшениями:
- Работа со многими файлами одновременно. Разбиение окон редактирования может производиться многократно как по горизонтали, так и по вертикали.
- Поддержка Unicode .
- Поддержка визуального режима, который позволяет, например, выполнять операции над блоками текста.
- Неограниченная глубина отмены ( ) и возврата (redo) действий.
- Режим сравнения двух файлов, перенос отдельных изменений из одного файла в другой.
- Широкая файловая поддержка (файл со справкой и более 200 файлов с описанием синтаксиса).
- Подсветка синтаксиса , автоматическое определение величины отступа для каждой строки в зависимости от языка программирования (изначально поддерживает более 200 языков программирования и форматов конфигурационных файлов).
- Интеграция с операционной системой, дающая возможности, близкие к интегрированным средам разработки , такие как поиск ошибки по сообщению компилятора, автодополнение идентификаторов и др.
- Поддержка языка сценариев; возможность написания модулей расширения — плагинов .
- Автоматическое продолжение команд, слов, строк целиком и имён файлов.
- Автоматический вызов внешних команд (например, автоматическая распаковка файла перед редактированием).
- Распознавание и преобразование файлов различных форматов.
- Удобный механизм истории команд, поисковых слов и т. д.
- Запись и исполнение макросов .
- Возможность сохранения настроек и сеанса.
- Возможна интеграция с языками программирования Perl , Tcl , Python и Ruby .
- Поддержка языков с письмом справа налево (арабских и других).
- Сворачивание (folding) текста для лучшего обзора.
- Возможно использование графического интерфейса в специальных версиях ( GTK , Motif , …).
- Хорошо конфигурируется и настраивается под нужды пользователя.
- Для программистов: поддержка цикла разработки «редактирование — компиляция — исправление» программ. Автоматическое выполнение сборки/компиляции, обнаружение и распознавание ошибок, переход к строкам ошибок в тексте программы.
- Для поклонников vi: практически стопроцентная совместимость с vi.
Терминология
- Буфер — временное хранилище текста, каждый редактируемый файл связан с единственным буфером.
- Окно — часть экрана для просмотра/редактирования одного буфера. Каждый буфер может быть размножен на неограниченное количество окон.
- Вкладки («табы», «tabs») — механизм группировки и переключения между группами окон.
- Именованный регистр — именованное хранилище текста для множественных вставок.
- Регистр по умолчанию — неименованное хранилище текста.
- Аббревиатуры — сокращения, при наборе в виде отдельных слов (но не в составе других слов) автоматически разворачивающиеся (путём замены) в заданный текст.
Vim script
|
Этот раздел
не завершён
.
|
Автоматизация операций
Способность Vim различать текстовые объекты (слова, предложения, параграфы, строки, отдельные символы и т. д.) позволяет задавать последовательность действий для автоматизации определённых операций.
Так, после команды
nmap <F7> byei<<ESC>ea></<C-R>0><ESC>
нажатие F7 преобразует (в командном режиме) любое слово под курсором (вне зависимости от его длины и символов, из которых он состоит) в xml-тег . К примеру если текущее слово под курсором — div , то оно будет преобразовано в <div></div> , если transform — то в <transform></transform> и т. д.
Vim способен на гораздо более сложные преобразования, можно задавать и свои функции для преобразования данных и автоматизации рутинных операций.
Все действия, которые осуществимы в Vim «вручную» (то есть непосредственно человеком с клавиатуры) могут быть автоматизированы (включая переключение между различными режимами).
Портируемость
Одно из достоинств редактора Vim — доступность для множества операционных систем . Это особенно актуально для системных администраторов , которым приходится редактировать файлы на разных платформах.
Vim работает на следующих операционных системах:
- Unix -подобных ( IBM AIX , HP-UX , SGI IRIX , Sun Solaris , SCO OpenServer и др.), включая Linux , BSD и macOS , Raspberry Pi OS .
- Windows (начиная с Windows 3.x ) и DOS
- Android
- iOS
- AmigaOS
- BeOS
- NextStep
- OS/2 , OSF
- RISC OS
- SGI
- VMS
VimTouch
Для ОС Android , использующей сенсорный экран как основное устройство ввода, Дэвид Тао написал адаптированную версию vim — vim touch, в настоящее время распространяемую на условиях лицензии Apache . Также существует вариант DroidVim.
Награды
С 2001 по 2004 годы Vim являлся победителем устраиваемого Linux Journal конкурса Readers' Choice Awards в категории «Любимый текстовый редактор». Он также получал награды Linuxworld Editors' Choice Award в 1999-м и Slashdot Beanie Award в 2000-м.
Neovim
|
Этот раздел
не завершён
.
|
Примечания
- . Дата обращения: 21 мая 2009. 6 июня 2009 года.
- . Дата обращения: 4 февраля 2008. 23 августа 2011 года.
- — 2024.
- — 2024.
-
Zapletal, Lukáš (April 18, 2005),
,
LinuxEXPRES
: 21—22,
из оригинала
22 июня 2018
, Дата обращения:
5 февраля 2015
,
Is VIM derivate of other VI clone or you started from scratch? I started with Stevie. This was a Vi clone for the Atari ST computer, ported to the Amiga. It had quite a lot of problems and could not do everything that Vi could, but since the source code was available I could fix that myself. ( )
{{ citation }}
: Внешняя ссылка в|quote=
- ↑ McDonnell, Mark. . — [Berkeley], 2014. — ISBN 978-1-4842-0250-0 .
- . www.linuxjournal.com . Дата обращения: 20 апреля 2023. 20 апреля 2023 года.
- . Stack Overflow. Дата обращения: 25 июля 2016. 4 мая 2019 года.
- . Stack Overflow § VII. Development Environments. Дата обращения: 20 июля 2019. 7 марта 2020 года.
- ↑ Thompson, Tim (26 марта 2000). Дата обращения: 27 декабря 2010. 4 января 2016 года.
- ↑ Tim Thompson (1987-06-28). . Newsgroup : . Usenet: . из оригинала 9 ноября 2012 . Дата обращения: 27 декабря 2010 .
- ↑ Tony Andrews (1988-06-06). . Newsgroup : . Usenet: . из оригинала 9 ноября 2012 . Дата обращения: 27 декабря 2010 .
- (англ.) . Vim Help . Vim (20 января 2015). Дата обращения: 9 июля 2016. 9 июля 2016 года.
- . die.net . Vim (11 апреля 2006). — «Vim is based on Stevie, worked on by: Tim Thompson, Tony Andrews and G.R. (Fred) Walter. Although hardly any of the original code remains.» Дата обращения: 9 июля 2016. 9 июля 2016 года.
- . Дата обращения: 19 сентября 2011. 18 апреля 2012 года.
- (5 июня 2014). Дата обращения: 25 января 2020. 25 января 2020 года.
- ↑ . Дата обращения: 7 сентября 2019. 31 августа 2019 года.
- ↑ Moolenaar, Bram (15 января 2002). Дата обращения: 24 октября 2005. 23 августа 2011 года.
- . Дата обращения: 2 октября 2009. 16 июля 2011 года.
- . Дата обращения: 26 февраля 2011. Архивировано из 11 июля 2011 года.
- (12 марта 2004). Дата обращения: 6 августа 2008. 11 июня 2008 года.
- (17 июля 2016). Дата обращения: 13 января 2019. 13 января 2019 года.
- . groups.google.com . Дата обращения: 11 августа 2008. 6 ноября 2012 года.
- 22 января 2011 года. . Groups.google.com. Retrieved on 2013-12-09.
- Bram Moolenaar. Дата обращения: 12 сентября 2016. 22 января 2011 года.
- Bram Moolenaar. Дата обращения: 18 мая 2018. 17 мая 2018 года.
- . www.opennet.ru. Дата обращения: 25 мая 2018. 25 мая 2018 года.
- Bram Moolenaar. Дата обращения: 13 декабря 2019. 12 декабря 2019 года.
- Bram Moolenaar. Дата обращения: 30 июня 2022. 2 июля 2022 года.
- ↑ Lamb, Linda. / Linda Lamb, Arnold Robbins. — O'Reilly Media, Inc., 1998. — P. . — ISBN 9781565924260 .
- Moolenaar, Bram (3 ноября 2010). Дата обращения: 28 августа 2019. 29 июля 2020 года.
- 13 января 2019 года. at vimhelp.org
- Oualline, Steve. . — New Riders Publishers, April 2001. — ISBN 0-7357-1001-5 .
- Moolenaar, Bram . vimdoc.sourceforge.net (8 декабря 2010). Дата обращения: 28 августа 2019. 27 августа 2019 года.
- ↑ . web.stanford.edu . Дата обращения: 27 января 2023. 27 января 2023 года.
- . Дата обращения: 7 апреля 2010. 2 октября 2011 года.
- (англ.) . Дата обращения: 4 января 2012. 3 февраля 2012 года.
- Alex Young. . usevim.com (19 сентября 2012). Дата обращения: 15 июня 2016. Архивировано из 13 июня 2016 года.
- . «Хакер» (26 ноября 2013). Дата обращения: 15 июня 2016. 9 августа 2016 года.
- Виталий Сороко. PHP на Android // LinuxFormat . — 2016. — Май ( № 05 (209) ). — С. 22 .
- на сайте GitHub
Ссылки
- (рус.)
- (рус.)
- — Список популярных расширений Vim по популярности их на GitHub
- 2020-12-31
- 1