Теперь давайте проведем операцию удаления еще раз, но на этот раз воспользуемся командой d. Снова установите курсор на слово Это и введите dW, чтобы удалить слово:
Съешь же ещё этих мягких французских булок, да выпей чаю. классно.
Строка 2
Строка 3
Строка 4
Строка 5
Введите d$, чтобы удалить все от текущей позиции курсора до конца строки:
Съешь же ещё этих мягких французских булок, да выпей чаю.
Строка 2
Строка 3
Строка 4
Строка 5
Введите dG, чтобы удалить все от текущей строки до конца файла:
~
~
~
~
~
Введите u три раза, чтобы отменить операции удаления.
Вырезание, копирование и вставка текста
Команда d не просто удаляет текст, она «вырезает» его. Каждый раз, когда выполняется команда d, удаленный текст копируется в буфер вставки (своего рода буфер обмена — clipboard), откуда позднее его можно извлечь командой p и вставить правее позиции курсора или левее — командой P.
Команда y выполняет копирование (yank) текста в буфер вставки почти так же, как команда d. В табл. 12.4 перечислены некоторые примеры комбинирования команды y с разными командами перемещения курсора.
Таблица 12.4. Команды копирования текста
Команда | Скопирует |
yy | Текущую строку |
5yy | Текущую и следующие четыре строки |
yW | От текущей позиции курсора до начала следующего слова |
y$ | От текущей позиции курсора до конца текущей строки |
y0 | От текущей позиции курсора до начала строки |
y^ | От текущей позиции курсора до первого непробельного символа в строке |
yG | От текущей строки до конца файла |
y20G | От текущей строки до 20-й строки файла |
Давайте попробуем что-нибудь скопировать и вставить. Поместите курсор на первую строку и введите yy, чтобы скопировать текущую строку. Далее, переместите курсор в последнюю строку (G) и введите p, чтобы вставить скопированную строку ниже текущей:
Съешь же ещё этих мягких французских булок, да выпей чаю. Это классно.
Строка 2
Строка 3
Строка 4
Строка 5
Съешь же ещё этих мягких французских булок, да выпей чаю. Это классно.
Введите команду u, чтобы отменить изменение. Оставив курсор в последней строке, введите P, чтобы вставить текст выше текущей строки:
Съешь же ещё этих мягких французских булок, да выпей чаю. Это классно.
Строка 2
Строка 3
Строка 4
Съешь же ещё этих мягких французских булок, да выпей чаю. Это классно.
Строка 5
Попробуйте другие команды y из табл. 12.4 и посмотрите, как действуют команды p и P. Закончив эксперименты, верните файл в исходное состояние.
Объединение строк
vi очень строго относится к понятию строки. Обычно он не дает возможности переместить курсор в конец строки и удалить символ конца строки, чтобы объединить текущую строку со следующей за ней. По этой причине в vi была добавлена специальная команда J (не путайте с командой j, которая перемещает курсор на одну строку вниз) для объединения строк.
Если поместить курсор в третью строку и ввести команду J, получится следующее:
Съешь же ещё этих мягких французских булок, да выпей чаю. Это классно.
Строка 2
Строка 3 Строка 4
Строка 5
Поиск и замена
Редактор vi имеет возможность перемещать курсор, опираясь на результаты поиска. Он может это делать в пределах одной строки или всего файла. Он может также выполнять замену текста с подтверждением или без подтверждения пользователя.
Поиск в пределах строки
Команда f выполняет поиск в строке и перемещает курсор к следующему вхождению указанного символа. Например, команда fa переместит курсор к следующему вхождению символа a в текущей строке. После выполнения операции поиска символа в строке ее можно повторить, введя точку с запятой.
Поиск во всем файле
Для перемещения курсора к следующему вхождению слова или фразы используется команда /. Она действует точно так же, как в программе less, о которой рассказывалось в главе 3. После ввода команды / в нижней части экрана появится прямой слеш, вслед за которым нужно ввести искомое слово или фразу и нажать ENTER. После этого курсор переместится к следующему вхождению искомой строки. Поиск следующего вхождения той же строки можно повторить командой n. Например:
Съешь же ещё этих мягких французских булок, да выпей чаю. Это классно.
Строка 2
Строка 3
Строка 4
Строка 5
Поместите курсор в первую строку и введите
/Строка