Операционная система Linux

Перемещение по тексту


При редактировании в тексте всегда есть точка, в которой пользователь "находится" в данный момент: вводимые с клавиатуры символы появятся именно здесь, удаляться символы будут тоже отсюда, к этой точке будут применяться команды редактора и т. п. Обычно эта точка обозначается курсором, а в последней (информационной) строке экрана Vim указывает номера текущей строки и колонки (номер символа в строке), в которых находится курсор.

Для того чтобы выполнять редактирование текста, по нему необходимо перемещаться, т. е. перемещать курсор. Самый очевидный способ это делать – воспользоваться клавишами со стрелками. Нажатие на одну из этих клавиш обычно заставляет курсор перемещаться на один символ влево/вправо или на одну строку вверх/вниз. Трудно придумать более неэффективный и медленный способ перемещения, если нужно попасть на другой конец объемого текста, и даже простое перемещение к началу или концу строки может занять несколько секунд.

Заметим, что в процессе редактирования текста обычно возникает необходимость перемещаться не в произвольную точку, а в некоторые ключевые: Содержание и конец строки, слова, предложения, абзаца, выражения, заключенного в скобки, целого текста. Особенно это заметно, если требуется редактировать структурированный текст: программу (например, сценарий), конфигурационный файл и т. п. В Vi для каждого такого перемещения предусмотрены специальные команды, обычно состоящие в нажатии одной клавиши в командном режиме. Используя их, можно не только нажав одну кнопку переместиться на любое расстояние в тексте, но и двигаться по структурным элементам, переходя к предыдущему/следующему слову, предложению, абзацу, скобке и т. д.2)

Итак, передвинуть курсор на начало текущей строки можно командой "0", на первый непробельный символ в строке – "^", в конец строки – "$".3)

Абзацами Vi считает фрагменты текста, разделенные пустой строкой, к началу предыдущего/следующего абзаца можно попасть командами "{" и "}" соответственно. Очень распространенная задача – необходимость попасть в самый конец файла: для этого служит команда "G" ("Go"), в самое начало – "gg".

Передвинуть курсор вперед на начало следующего слова можно командой "w" (от "word", слово), на начало предыдущего – "b" (от "backward", назад). К началу предыдущего/следующего предложений можно переместиться командами "(" и ")" соответственно. Нужно учитывать, что границы слов и предложений Vi находит по формальным признакам (руководствуясь специально определенными регулярными выражениями), поэтому решение Vi может иногда не совпадать с представлениями пользователя о границах слов и предложений. Однако пользователь всегда властен изменить соответствующие регулярные выражения, подробности – в документации по Vim.

В Vim никогда не следует вручную повторять одну и ту же команду: если нужно перейти на три слова вперед, не следует трижды нажимать "w" – для повторения команды используется множитель . Множитель – это любое число, набранное перед командой Vi: команда будет повторена соответствующее число раз. Например, "3w" – означает "трижды переместить курсор на слово вперед", иначе говоря, переместить курсор на три слова вперед. Обратите внимание, что множители могут применяться не только с командами перемещения, но и с любыми


командами Vi. Аналогично можно переместить курсор на 10 абзацев вперед командой "10}".

Множитель. Число, предшествующее команде Vim и означающее, что данную команду следует выполнить указанное число раз.

Не сразу очевидно, что поиск шаблона в тексте (строки или регулярного выражения) – это тоже команда перемещения. Как и любое перемещение, поиск осуществляется в командном режиме: прежде всего, нужно нажать "/": в последней строке появится символ "/". Далее следует ввести шаблон для поиска – он будет отображаться в этой строке, его можно редактировать. Обычно Vi настроен таким образом, что шаблон для поиска интерпретируется как регулярное выражение, где ряд символов имеет специальное значение, эту настройку можно отключить (":set nomagic"). После того, как введен шаблон, следует нажать Enter – курсор переместится к ближайшему (далее по тексту) совпадению с шаблоном. Поиск в обратном направлении (к предыдущему совпадению) следует начинать с команды "?".

Совсем просто перейти к следующему употреблению в тексте того слова, на котором стоит курсор: для этого нужно просто нажать "*" в командном режиме. Аналогичная команда поиска слова в обратном направлении – "#". Можно специально отметить в тексте точку и затем в любой момент возвращаться к ней, как к закладке. Одну закладку определяет сам Vi – "``", место в тексте, где было сделано последнее изменение. Подробно об этих и других командах перемещения можно прочесть в руководстве по Vim по команде ":help usr_03.txt".


Содержание раздела