В любой системе Linux, даже самой минимальной, всегда присутствует текстовый редактор, поскольку в любой — даже самой катастрофической — ситуации у пользователя должна быть возможность отредактировать конфигурационные файлы, чтобы привести систему в рабочее состояние. По сложившейся традиции текстовым редактором, который обязательно запустится из любой командной строки Linux, является Vim.
Vi, как и большинство основных утилит и принципов, унаследован Linux от UNIX. Название Vim происходит от visual editor, «визуальный», экранный редактор, поскольку Vim — первый редактор для UNIX, использующий весь экран для отображения текста и позволяющий работать с текстом не построчно, а перемещаясь по нему в любых направлениях, как по странице.
Однако верно и обратное: если Вы работаете в незнакомой системе Linux или произошёл сбой, в результате которого доступна только очень небольшая часть системы, нельзя быть увереным, что найдётся хоть какой-нибудь другой текстовый редактор кроме Vim. Поэтому каждому пользователю Linux нужны хотя бы основные навыки работы в Vim. При первом знакомстве c Vim работа обычно не ладится: очень уж он непривычен, его нельзя с удобством использовать, запомнив только две-три простейшие команды редактирования. Стоит понять основные принципы работы в Vim и потратить некоторое время на его освоение, тогда в нём откроется мощный инструмент, позволяющий очень эффективно работать с текстом.
Под именем Vim, на самом деле, могут скрываться несколько разных программ: с момента появления Vim в операционной системе UNIX (а это произошло около 30-ти лет назад), этот редактор стал чем-то вроде стандарта. К настоящему времени существует ряд программ либо в точности повторяющих вид и поведение «классического» Vim (например, nvi
), либо очень похожих на него, но со значительно расширенными возможностями (Vi, elvis
). Наибольшей популярностью пользуется Vi, возможности которого огромны, для их описания потребовалось почти сто тысяч строк документации. Когда пользователь Linux набирает в командной строке Vim, скорее всего будет запущена «облегчённая» версия Vi, которая настроена таким образом, чтобы максимально воспроизводить поведение классического редактора Vim. Естественно, в таком режиме часть возможностей Vi недоступна. Все свойства, которыми Vi отличается от Vim, обязательно снабжены в руководстве по Vi указанием «not in vi». В дальнейшем изложении под Vim мы будем понимать именно Vi в режиме совместимости, все возможности, недоступные в этом режиме, будут отдельно оговариваться. Чтобы вызвать Vi в полнофункциональном режиме, достаточно набрать команду Vi.
Популярность Vi не случайна: этот текстовый редактор позволяет не только производить простые операции редактирования текстовых файлов, но и хорошо приспособлен для максимально быстрого и эффективного решения ряда смежных с редактированием задач. Среди самых важных его возможностей — инструменты для работы с текстами на различных языках программирования и в различных форматах разметки. Vim умеет подсвечивать разными цветами синтаксические конструкции языка программирования или разметки, автоматически выставлять отступы, что облегчает восприятие структуры документа.
Обычно современные терминалы и программы-эмуляторы терминалов поддерживают вывод текста по крайней мере несколькими разными цветами.
Кроме того, в Vi есть специальные средства для организации цикла отладки программы: компиляция–правка исходного текста–компиляция... Подробнее об этих и прочих возможностях Vi можно узнать из руководств по Vi. Объём данной лекции позволяет описать только самые начала работы с Vi, более подробное введение в этот текстовый редактор можно найти в книге [Курячий:2004].
Запуск vi
Чтобы начать сеанс редактирования в Vim, достаточно выполнить команду Vim на любом терминале. Чтобы открыть для редактирования уже существующий файл, путь к этому файлу нужно указать в качестве параметра: «vi путь_к_файлу
». Как и всякая уважающая себя программа UNIX, Vim может быть запущен с множеством модифицирующих его поведение ключей, которые подробно описаны в руководстве. Вызванный без параметра, редактор откроет пустой буфер — чистый лист для создания нового текста. В центре экрана при этом может появиться краткое приветственное сообщение, где указаны версия программы и команды для получения помощи и выхода из редактора (что нетривиально!). Однако такое сообщение может и не возникнуть — это зависит от версии Vim, установленной в системе.
Для отображения текста и работы с ним Vim использует весь экран терминала, только последняя строка предназначена для диалога с пользователем: вывода информационных сообщений и ввода команд. Пока буфер не заполнен текстом, в начале каждой строки экрана отображается символ «~
», обозначающий, что в этом месте буфера нет ничего, даже пустой строки. Общий вид экрана в начале работы будет примерно такой:
#
~
~
~
~
~
Пример 1. Начало работы с vi
Символ «#
» обозначает курсор. На экране терминала умещается больше строк, но в примерах мы будем для компактности изображать только необходимый минимум.
Режимы
В Vim проблема разделения команд редактору и вводимого текста решена при помощи режимов: в командном режиме нажатие на любую клавишу — это команда редактору, в режиме вставки нажатие на клавишу приводит к вставке соответствующего символа в редактируемый текст. Поэтому при работе с Vim пользователю всегда нужно обращать внимание на то, в каком режиме находится редактор.
- режимы vi
- Состояния редактора Vim, в которых он по-разному обрабатывает нажатия клавиш. Различают три режима Vim: командный (нажатие любой клавиши считается командой и немедленно исполняется), вставки (нажатие клавиши-печатного символа приводит к вставке этого символа в текст) и командной строки (для ввода длинных команд, отображаемых на экране; ввод завершается
Enter
.
Vim всегда начинает работу в командном режиме. В этом режиме есть два способа отдавать команды редактору. Во-первых, нажатие практически на любую клавишу редактор воспринимает как команду. В Vi, даже в режиме Vim-совместимости, командное значение определено для всех латинских букв (в верхнем и нижнем регистрах), цифр, знаков препинания и большинства других печатных символов. При нажатии на эти клавиши вводимые команды нигде не отображаются, они просто исполняются.
Не нужно пытаться вводить текст в командном режиме: поскольку у каждой буквы есть командное значение, результат может быть самым неожиданным!
Во-вторых, у Vim есть своя командная строка: чтобы её вызвать, нужно ввести «:
» в командном режиме. В результате в начале последней строки экрана появится двоеточие — это приглашение командной строки. Здесь вводятся более сложные команды Vim, которые включают в себя целые слова (например, имена файлов), причём текст набираемой команды, конечно, отображается. Команды передаются Vim клавишей Enter
. В современных версиях Vim с командной строкой можно работать так же, как и в shell: редактировать её, достраивать команды клавишей Tab
, пользоваться историей команд.
Главная команда командной строки Vi — вызов подсистемы помощи «:helpEnter
». Двоеточие переводит Vi в режим командной строки, «help
» — собственно команда, Enter
передаёт команду. help
можно вызывать с аргументом: названием команды или настройки Vi. Vim очень хорошо документирован, поэтому по команде «:help объект
» можно получить информацию о любом свойстве Vi, например, команда «:help i
» выведет сведения о значении клавиши «i
» в командном режиме Vi.
Команда «:set имя_настройки
» позволяет настраивать Vim прямо в процессе работы с ним. Например, отдав команду «:set wrap
» пользователь тем самым включает настройку «wrap
», что заставляет редактор переносить слишком длинные строки, не умещающиеся в ширину терминала. Выключить эту настройку можно командой «:set nowrap
», так что концы длинных строк исчезнут за правым краем экрана.
Наконец, чтобы ввести текст, нужно перейти из командного режима в режим вставки, нажав клавишу «i
» (от «insert» — «вставка»). В этот момент в последней строке появится информационное сообщение о том, что редактор находится в режиме вставки: «--INSERT--
» или «--ВСТАВКА--
», в зависимости от установленного языка системных сообщений.
Если используется не Vi, или настройка showmode
по умолчанию запрещена, сообщения может и не быть.
В режиме вставки можно вводить текст, завершая строку нажатием на Enter
. Однако нужно помнить, что в некоторых (ортодоксальных) версиях Vim в режиме ввода не работают никакие команды перемещения по тексту, здесь можно только набирать. Если Вы заметили, что ошиблись в наборе — не нужно сразу пытаться переместить курсор и пытаться исправлять ошибку: гораздо удобнее будет вносить все исправления потом, в командном режиме, где доступно множество специальных команд быстрого перемещения и замены текста. Чтобы перейти из режима вставки обратно в командный режим, нужно нажать ESC
.
Если Vim пришёл в непонятное для Вас состояние, нажмите ESC
, чтобы вернуться в командный режим (иногда требуется нажать ESC
дважды).
Мефодий начал упражняться с Vim на файле примеров:
methody@oblomov:~ $ vi textfile
Это файл для примеров.
Пример 1.
~
~
~
~
~
"textfile" 2L, 33C 1,1 Весь
Пример 2. Vim в командном режиме Vim начал работу — как и положено — в командном режиме. В последней строке возникли некоторые полезные сведения об открытом файле: его имя, общее количество строк («2L
»), символов («33С
»), позиция курсора («1,1
» — номер_строки, номер_символа
). «Весь
» обозначает, что всё содержимое файла уместилось на экране терминала. Теперь Мефодий нажмёт «i
» и введёт немного текста:
Это файл для примеров.
Пример 1.
Моя первая сторка в vi!
~
~
~
~
-- ВСТАВКА -- 3,24 Весь
Пример 3. Vim в режиме вставки
Теперь Vim в режиме вставки: в последней строке появилось информационное сообщение об этом. Набрав текст, Мефодий может вернуться в командный режим, нажав ESC
(подсказка «--ВСТАВКА--
» при этом исчезнет из последней строки).
На самом деле, из командного режима можно перейти в режим ввода несколькими командами, разница между ними заключается в том, в какой точке начнётся ввод символов. Например, по командам «O
» и «o
» («open») можно вводить текст с новой строки (до или после текущей), по команде «I
» — с начала строки, команды «a
» и «A
» («append») ведают добавлением символов (после курсора или в конец строки) и т. п.
Работа с файлами
Редактируя текст в Vim, пользователь работает не непосредственно с файлом, а с буфером. Если открывается уже существующий файл, Vim копирует его содержимое в буфер и отображает буфер на экране. Все изменения, которые делает пользователь, происходят именно в содержимом буфера — открытый файл пока остаётся неизменным. Если же Vim вызван без параметра, то создаётся пустой буфер, который пока не связан ни с каким файлом.
В действительности содержимое буфера хранится в специальном временном файле (swap file). Если сеанс работы в редакторе по какой-то причине прервался, то этот временный файл не будет удалён, и при следующей попытке продолжить незаконченную работу с файлом Vim предложит провести процедуру восстановления — на случай, если во временном файле остались несохранённые изменения.
Чтобы записать сделанные изменения в файл, используется команда «:wEnter
» (чтобы её отдать, нужно сначала перейти в командный режим). О том, что «w
» — это сокращение от англ. «write», «записать», можно узнать, нажав Tab
после «:w
» — и Vim дополнит эту команду до «write
». Подобным образом можно поступить с большинством команд в командной строке Vim — в этом редакторе очень последовательно соблюдается принцип аббревиативности. Мефодий выполнил «write
» и получил такое информационное сообщение:
Это файл для примеров.
Пример 1.
Моя первая сторка в vi!
~
~
~
~
"textfile" 3L, 57C записано 3,24 Весь
Пример 4. Запись файла
Мефодий не указал, куда именно записать содержимое буфера, и по умолчанию оно было записано в тот файл, который он и открывал для редактирования: «textfile
». Однако команде «write
» можно указать любое имя файла в качестве параметра — и тогда содержимое буфера будет записано в этот файл, а если такого файла нет, то он будет создан. Параметр «write
» обязательно потребуется, если текст в буфере ещё не записан ни в каком файле.
Наиболее важна для новичка команда выхода из Vim — «:qEnter
» (сокращение от «quit»). Пользователь, запустивший редактор в первый раз, нередко сталкивается с тем, что никак не может его закрыть: не работает ни один из привычных способов завершения программы, даже «^C
» Vim обрабатывает по-своему.
Управляющая последовательность «^C
» приводит к аварийному завершению текущей команды vi, а не самого редактора.
И «:w
» и «:q
» — команды режима командной строки, в этот режим Vim переводится из командного режима с помощью «:
» в мх начале.
Однако если в буфере есть изменения, которые ещё не записаны ни в каком файле, то Vim откажется выполнять команду «:q
», предложив сначала сохранить эти изменения. Если Вы не хотите сохранять изменения, нужно настоять на своём желании выйти их Vim, добавив к команде выхода восклицательный знак: «:q!
». В этом случае все несохранённые изменения будут выброшены. Восклицательный знак можно добавить в конце любой файловой команды в командной строке Vim, в этом случае Vim будет выполнять команды, не предъявляя пользователю никаких возражений.
В Vim предпринято множество усилий для экономии сил и времени пользователя, командующего редактором. Поэтому вполне можно одним разом записать текст и выйти из редактора: командой «:wq
» или аналогичной командой «:x
» или просто нажав «ZZ
» в командном режиме.
Перемещение по тексту
При редактировании в тексте всегда есть точка, в которой вы «находитесь» в данный момент: вводимые с клавиатуры символы появятся именно здесь, удаляться символы будут тоже отсюда, к этой точке будут применяться команды редактора и т. п. Обычно эта точка обозначается курсором, а в последней (информационной) строке экрана Vim указывает номера текущей строки и колонки (номер символа в строке), в которых находится курсор.
Для того, чтобы выполнять редактирование текста, по нему необходимо перемещаться, т. е. перемещать курсор. Самый очевидный способ это делать — воспользоваться клавишами со стрелками. Нажатие на одну из этих клавиш обычно заставляет курсор переместиться на один символ влево/вправо или на одну строку вверх/вниз. Трудно придумать более неэффективный и медленный способ перемещения, если нужно попасть на другой конец объёмистого текста, и даже простое перемещение к началу или концу строки может занять несколько секунд.
Заметим, что в процессе редактирования текста обычно возникает необходимость перемещаться не в произвольную точку, а в некоторые ключевые: начало и конец строки, слова, предложения, абзаца, выражения, заключённого в скобки, целого текста. Особенно это заметно, если требуется редактировать структурированный текст: программу (например, сценарий), конфигурационный файл и т. п. В Vim для каждого такого перемещения предусмотрены специальные команды, обычно состоящие в нажатии одной клавиши в командном режиме. Используя их, можно не только одной кнопкой переместиться на любое расстояние в тексте, но и двигаться по структурным элементам, переходя к предыдущему/следующему слову, предложению, абзацу, скобке и т. д.
Прежде чем начинать экспериментировать с перемещением, нужно перейти в командный режим.
Итак, передвинуть курсор на начало текущей строки можно командой «0
», на первый непробельный символ в строке — «^
», в конец строки — «$
».
Символами «^
» и «$
» в Linux повсеместно обозначаются начало и конец строки, в частности, в регулярных выражениях.
Абзацами Vim считает фрагменты текста, разделённые пустой строкой, к началу предыдущего/следующего абзаца можно попасть командами «{
» и «}
» соответственно. Очень распространённая необходимость — попасть в самый конец файла: для этого служит команда «G
» («Go»), в самое начало — «gg
» («go-go»?).
Передвинуть курсор вперёд на начало следующего слова можно командой «w
» (от «word», слово), на начало предыдущего — «b
» (от «backward», назад). К началу предыдущего/следующего предложений можно переместиться командами «(
» и «)
» соответственно. Нужно учитывать, что границы слов и предложений Vim находит по формальным признакам (руководствуясь специально определёнными регулярными выражениями), поэтому решение Vim может иногда не совпадать с представлениями пользователя о границах слов и предложений. Однако пользователь всегда властен изменить соответствующие регулярные выражения, подробности — в документации по Vi.
В Vim никогда не следует вручную повторять по нескольку раз одну и ту же команду: если нужно перейти на три слова вперёд, не следует трижды нажимать «w
», для повторения команды используется множитель. Множитель, это любое число, набранное перед командой Vim: команда будет повторена такое число раз. Например, «3w
» — означает «трижды переместить курсор на слово вперёд», иначе говоря, переместить курсор на три слова вперёд. Обратите внимание, что множители могут применяться не только с командами перемещения, а с любыми командами Vim. Аналогично можно переместить курсор на 10 абзацев вперёд командой «10}
».
- множитель
- Число, предшествующее команде Vim, и означающее, что данную команду следует выполнить указанное число раз.
Не сразу очевидно, что поиск шаблона в тексте (строки или регулярного выражения) — это тоже команда перемещения. Как и любое перемещение, поиск осуществляется в командном режиме: прежде всего нужно нажать «/
»: в последней строке возникнет символ «/
». Далее следует ввести шаблон для поиска, он будет отображаться в этой строке, его можно редактировать. Обычно Vim настроен таким образом, что шаблон для поиска интерпретируется как регулярное выражение, где ряд символов имеет специальное значение, эту настройку можно выключить («:set nomagic
»). После того, как введён шаблон, следует нажать Enter
— курсор переместится к ближайшему (далее по тексту) совпадению с шаблоном. Поиск в обратном направлении (к предыдущему совпадению) следует начинать с команды «?
».
Совсем просто перейти к следующему употреблению в тексте того слова, на котором стоит курсор: для этого нужно просто нажать «*
» в командном режиме. Аналогичная команда поиска слова в обратном направлении — «#
». Можно специально отметить в тексте точку и затем в любой момент возвращаться к ней, как к закладке, одну закладку определяет сам Vim — «``
», место в тексте, где было сделано последнее изменение. Подробно об этих и других командах перемещения можно прочесть в руководстве по Vi по команде «:help usr_03.txt
».
Изменение текста
В командном режиме нельзя вводить символы в текст с клавиатуры, но изменить текст при этом можно, например, удаляя символы. Чтобы удалить отдельный символ (тот, на котором стоит курсор), достаточно нажать «x
» в командном режиме, а чтобы удалить сразу целую строку (естественно, текущую, то есть ту, в которой находится курсор), «dd
». «d
» — это сокращение от «delete», удалить, а «dd
» — характерный приём Vim: удвоение команды означает, что её нужно применить к текущей строке.
Из командной строки Vim можно выполнить операцию поиска и замены: для простой строки или для регулярного выражения. Причём синтаксис команды поиска и замены полностью воспроизводит синтаксис потокового редактора sed
, о котором уже шла речь в лекции Работа с текстовыми данными.
Это файл для примеров.
Пример 1.
Моя первая сторка в vi...
~
~
~
:s/.$/.../
Пример 5. Замена по шаблону в Vim Мефодий хотел заменить в своём файле точки в концах строки многоточиями. Для этого в командном режиме он нажал «:
» (вызов командной строки Vim), где набрал команду «s
» (сокращение от «substitute», заменить), за которой следует уже знакомое по «sed
» выражение «/что_заменить/на_что_заменить/
». Только результат получился совсем не тот, какого ожидал Мефодий: заменился на многоточие восклицательный знак последней строки. Не учёл он следующего: по умолчанию команды шаблоны для поиска и замены — это регулярные выражения, то есть «.
» означает вовсе не точку, а «любой символ», имея в виду точку, следовало написать «\.
» «$
», как и ожидал Мефодий, это конец строки. В момент выполнения команды поиска курсор находился в последней строке, в первом совпадении после курсора и была произведена замена.
Форматирование текста — это расставление символов конца строки, пробелов и табуляций таким образом, чтобы текст хорошо смотрелся на экране терминала. Делать форматирование вручную крайне неэффективно. В Vi автоматичекое форматирование текста (если редактируется программа на каком-либо языке программирования, то с учётом правил этого языка) может происходить прямо в режиме вставки, в режиме вставки же можно изменять отступ текущей строки (по командам «^D
» и «^T
»). Для выравнивания текста по центру, правому или левому краю есть команды «:center
», «:left
» и «:right
» соответственно. Эти команды, как и большинство команд командной строки, можно применять к диапазону строк способом, описанным ниже.
Режим ввода не богат специальными командами изменения текста, что и понятно: он предназначен именно для ввода
, и больше ни для чего. Однако в Vi (но не в Vim!) есть некоторые удобства, упрощающие и сам процесс набора. Если слово, которое нужно ввести, уже встречалось в тексте, можно набрать только первые буквы и нажать «^P
» («previous») — Vi попробует сам завершить его. Если Vi не угадал и предложил не то слово, можно продолжить перебирать варианты. Команда «^N
» («next») подставляет слова, которые встречаются ниже по тексту. Подробнее об этой функции можно узнать из руководства по команде «:help ins-completion
».
Иногда, изменив текст, тут же хочется вернуть всё обратно, для этого в Vim предусмотрена команда отмены последнего изменения: «u
» в командном режиме (от «undo», отменить). Сколь бы сложным, масштабным (и разрушительным) ни было изменение, совершённое последней командой, «u
» вернёт текст в исходное состояние. Впрочем, саму отмену тоже можно отменить. В классическом Vim доступна отмена только последней выполненной команды, в Vi отменить можно сколько угодно последних команд, а также повторить их командой «^R
».
Работа с фрагментами текста
Любая команда перемещения определяет две точки в тексте: та, в которой был курсор до перемещения, и та, в которую он переместился в результате данной команды. Расположенный между этими двумя точками отрезок текста однозначно задаётся командой перемещения. Например, команда «)
» захватывает текст от текущего положения курсора до начала следующего предложения. Vim позволяет прменить к этому фрагменту любую команду — так устроены гнездовые команды. Гнездовая команда состоит из действия и следующего за ним перемещения. Перемещение задаёт фрагмент текста, а действие определяет, что с этим фрагментом сделать. Например, команда «d)
» удалит весь текст от текущей позиции курсора до начала следующего предложения. Наиболее полезные действия — «d
» («delete»), «c
» («cchange»), «>
» и «<
» (сдвинуть), «y
» (запомнить) и «gq
» (отформатировать).
- гнездовая команда
- Команда редактора Vim, позволяющая применить указанное действие к указанному отрезку текста. Отрезок задаётся стандартной командой перемещения по тексту.
Очень часто возникает необходимость заменить фрагмент в тексте: слово, предложение, строку и т. д. Это можно сделать в два действия: сначала удалить часть текста, затем перейти в режим вставки и вставить замену. Vim предоставляет возможность упростить эту операцию, сведя два действия к одному: заменить. Гнездовая команда «c
» предназначена именно для этого. Например, команда «cw
» (буквально: «cange word») заменит текст от курсора до начала следующего слова (так можно заменить одно слово), «c)
» заменит текст от курсора до начала следующего предложения.
Мефодий не забыл, что команды перемещения можно использовать с множителями, и попробовал заменить сразу три слова в своём файле на другие: для этого он в командном режиме подогнал курсор в начало слова «первая» и набрал «c3w
» («заменить фрагмент отсюда до начала третьего слова», буквально: «change 3words»). Результат этой команды выглядел так:
Это файл для примеров.
Пример 1.
Моя #vi...
~
~
~
-- ВСТАВКА -- 3,5 Весь
Пример 6. Команда замены в Vim
В примере знак «#
» обозначает позицию курсора: как видно, Vim удалил три слова, попавшие в зону действия команды и сразу перешёл в режим вставки. Мефодию осталось только набрать что-то взамен.
Перестановка частей — типичная задача, возникающая в процессе редактирования. Для перестановки требуется удалить фрагмент в одном месте текста и вставить его же в другом. Для решения первой части задачи в Vim не понадобится специальных средств, потому что любая команда удаления («d
», «c
», «x
» и др.) сохраняет удалённый текст в специальном регистре. Для вставки последнего удалённого фрагмента служит команда «p
» в командном режиме (от «put», положить). При помощи этой команды Мефодий может вставить только что удалённые им командой «c3w
» три слова:
Это файл для примеров.
Пример 1.
Моя новая строка для vi...
первая сторка в
~
~
4,1 Весь
Пример 7. Вставка удалённого фрагмента
Для того, чтобы скопировать фрагмент текста, служит команда «y
» (от «yank», забрать, сдёрнуть): она не удаляет текст, а просто сохраняет его в том же регистре, что и команды удаления. Команду «y
» можно использовать в гнездовых командах, например, «y5w
» сохранит в регистре фрагмент текста от курсора до начала пятого слова. Вставить скопированный фрагмент можно всё той же командой «p
». Однако таким способом можно вставлять только текст, удалённый или скопированный последним, для хранения нескольких разных фрагментов текста следует использовать именованные регистры, см. подробнее в руководстве по Vi.
Для того, чтобы применить команду к нескольким строкам текста, не обязательно подгонять к ним курсор. В командной строке Vim любой команде может предшествовать указание диапазона в тексте, к которому следует эту команду применить. Команды с указанием диапазона выглядят так: «:начало,конецкоманда
», где начало
и конец
— это адреса начальной и конечной строк диапазона (т. е. фрагмента текста), а команда
— это команда режима командной строки, такая как «:w
» или «:r
». Многие команды командного режима (в частности, «d
» и «y
») доступны также и в командной строке. В качестве адреса можно использовать номера строк в файле (команда «:1,5y
» будет означать «скопировать в регистр строки с первой по пятую»), есть специальные обозначения для текущей строки («.
»), последней строки («$
») и всего файла («%
»). Указать границу диапазона можно и при помощи шаблона: граничной будет считаться та строка, в которой обнаружится шаблон. Последним свойством Мефодий воспользовался, чтобы удалить плоды своих экспериментов: он выполнил команду «:/Пример 1/,$d
» (от строки «Пример 1
» до конца файла — удалить).
Это файл для примеров.
~
~
~
3 fewer lines
Пример 8. Удаление диапазона по шаблону. Выполнена команда «:/Пример 1/,$dEnter
».
Настройка Vi и Vim
Вид и поведение Vim и Vi можно довольно существенно изменить при помощи настроек, приспособив редактор именно к своим вкусам и привычкам. Прямо во время работы редактора можно менять настройки из командной строки Vim при помощи команды «:set имя_настройки
». Кроме того, можно сделать настройку постоянной, вписав все нужные значения в конфигурационный файл .vimrc
(или .exrc
— для Vim) в домашнем каталоге пользователя. При каждом запуске Vim/Vi читает этот файл и исполняет все содержащиеся в нём команды. Объём данной лекции не позволяет подробно остановиться на настройке Vi, читатель может заняться изучением этого вопроса сам: все необходимые сведения есть в руководствах. Чтобы оценить возможности настройки, можно выполнить в Vi (но не в Vim!) команду «:options
», по которой будет выведен список всех доступных опций с кратким описанием их смысла.