# Vim

## Возможности текстового редактора  


В сравнении с классическим [vi](https://ru.wikipedia.org/wiki/Vi "Vi"), Vim отличается следующими улучшениями:

- Работа со многими файлами одновременно. Разбиение окон редактирования может производиться многократно как по горизонтали, так и по вертикали.
- Поддержка [Unicode](https://ru.wikipedia.org/wiki/Unicode "Unicode").
- Поддержка визуального режима, который позволяет, например, выполнять операции над блоками текста.
- Неограниченная глубина отмены ([undo](https://ru.wikipedia.org/w/index.php?title=Undo&action=edit&redlink=1 "Undo (страница отсутствует)")) и возврата (redo) действий.
- Режим сравнения двух файлов, перенос отдельных изменений из одного файла в другой.
- Широкая файловая поддержка (файл со справкой и более 200 файлов с описанием синтаксиса).
- [Подсветка синтаксиса](https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B0_%D1%81%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81%D0%B0 "Подсветка синтаксиса"), автоматическое определение величины отступа для каждой строки в зависимости от [языка программирования](https://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F "Язык программирования") (изначально поддерживает более 200 языков программирования и форматов конфигурационных файлов).
- Интеграция с операционной системой, дающая возможности, близкие к [интегрированным средам разработки](https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F "Среда разработки программного обеспечения"), такие как поиск ошибки по сообщению компилятора, автодополнение идентификаторов и др.
- Поддержка языка сценариев; возможность написания модулей расширения — [плагинов](https://ru.wikipedia.org/wiki/%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD "Плагин").
- Автоматическое продолжение команд, слов, строк целиком и имён файлов.
- Автоматический вызов внешних команд (например, автоматическая [распаковка](https://ru.wikipedia.org/wiki/%D0%A1%D0%B6%D0%B0%D1%82%D0%B8%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85 "Сжатие данных") файла перед редактированием).
- Распознавание и преобразование [файлов](https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB "Файл") различных форматов.
- Удобный механизм [истории](https://ru.wikipedia.org/wiki/%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F "История") команд, поисковых слов и т. д.
- Запись и исполнение [макросов](https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BA%D1%80%D0%BE%D1%81 "Макрос").
- Возможность сохранения настроек и сеанса.
- Возможна интеграция с языками программирования [Perl](https://ru.wikipedia.org/wiki/Perl "Perl"), [Tcl](https://ru.wikipedia.org/wiki/Tcl "Tcl"), [Python](https://ru.wikipedia.org/wiki/Python "Python") и [Ruby](https://ru.wikipedia.org/wiki/Ruby "Ruby").
- Поддержка языков с письмом справа налево (арабских и других).
- [Сворачивание](https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%BE%D1%80%D0%B0%D1%87%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5) "Сворачивание (программное обеспечение)") (folding) текста для лучшего обзора.
- <div class="thumbinner" style="width: 222px;"></div>Возможно использование графического интерфейса в специальных версиях ([GTK](https://ru.wikipedia.org/wiki/GTK "GTK"), [Motif](https://ru.wikipedia.org/wiki/Motif "Motif"), …).
- Хорошо конфигурируется и настраивается под нужды пользователя.
- Для программистов: поддержка цикла разработки «редактирование — [компиляция](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) "Компиляция (программирование)") — исправление» программ. Автоматическое выполнение сборки/компиляции, обнаружение и распознавание ошибок, переход к строкам ошибок в тексте программы.
- Для поклонников vi: практически стопроцентная совместимость с vi.

## Копирование, вырезание и вставка в нормальном режиме

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

Чтобы вернуться в нормальный режим из любого другого режима, просто нажмите `Esc` .

В Vim есть собственная терминология для копирования, вырезания и вставки. Копирование называется yank ( `y` ), вырезание называется delete ( `d` ), а вставка называется put ( `p` ).

### <span class="ez-toc-section" id="bkmrk--2"></span>Копирование (Yanking)

Чтобы скопировать текст, поместите курсор в желаемое место и нажмите клавишу `y` а затем команду перемещения. Ниже приведены некоторые полезные команды восстановления:

- `yy` — Скопировать текущую строку, включая символ новой строки.
- `3yy` — Копирование трех строк, начиная с строки, в которой находится курсор.
- `y$` — Копировать все от курсора до конца строки.
- `y^` — Копирование всего от курсора до начала строки.
- `yw` — Копировать до начала следующего слова.
- `yiw` — Копировать текущее слово.
- `y%` — Копировать на соответствующий символ. По умолчанию поддерживаются пары `()` , `{}` и `[]` . Полезно для копирования текста между совпадающими скобками.

### <span class="ez-toc-section" id="bkmrk-%D0%A3%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%28%D0%B2%D1%8B%D1%80%D0%B5%D0%B7%D0%B0%D0%BD%D0%B8%D0%B5%29-1">Удаление(вырезание)</span>  


В обычном режиме `d` — клавиша для вырезания (удаления) текста. Переместите курсор в желаемое положение и нажмите клавишу `d` , а затем команду перемещения. Вот несколько полезных команд для удаления:

- `dd` — Удалить (вырезать) текущую строку, включая символ новой строки.
- `3dd` — Удалить (вырезать) три строки, начиная с линии, в которой находится курсор,
- `d$` — Удалить (вырезать) все от курсора до конца строки.

Команды движения, применяемые для восстановления, также действительны для удаления. Например, `dw` удаляет до начала следующего слова, а `d^` удаляет все от курсора до начала строки.

### <span class="ez-toc-section" id="bkmrk--3"></span>Вставка(склеивание)

Чтобы поместить извлеченный или удаленный текст, переместите курсор в желаемое место и нажмите `p` чтобы вставить (вставить) текст после курсора, или `P` чтобы поместить (вставить) перед курсором.

## <span class="ez-toc-section" id="bkmrk--4"></span>Копирование, вырезание и вставка в визуальном режиме

Визуальный режим Vim позволяет выбирать текст и управлять им.

1. Поместите курсор на линию, с которой вы хотите начать копирование или резку.
2. Визуальный режим имеет три подтипа.
    
    
    - Нажмите `v` чтобы войти в визуальный режим.
    - Нажмите `V` чтобы войти в визуальный линейный режим, в котором текст выделяется построчно.
    - Нажмите `Ctrl+v` чтобы войти в режим визуального блока. В этом режиме текст выделяется прямоугольными блоками.
    
    Переход в визуальный режим также отмечает начальную точку выбора.
3. Переместите курсор в конец текста, который вы хотите скопировать или вырезать. Вы можете использовать команду перемещения или клавиши со стрелками вверх, вниз, вправо и влево.
    
    ![](https://routerus.com/wp-content/uploads/vim-copy-paste-visual_hub98cb6e7406c1949b861c92b96b6f1c1_124609_480x0_resize_q75_lanczos.jpg)
4. Нажмите `y` чтобы скопировать, или `d` чтобы вырезать выделение.
5. Переместите курсор в то место, куда вы хотите вставить содержимое.
6. Нажмите `P` чтобы вставить содержимое перед курсором, или `p` чтобы вставить его после курсора.

## Полезные источники

- [Интерактивное руководство по Vim](https://www.openvim.com/)
- [Википедия](https://ru.wikipedia.org/wiki/Vim)