Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Назад Просто о Vim Вперед

Vim : Перемещение

Введение

После того как вы написали исходный текст, редактирование и переписывание требует большого объема перемещения между различными частями документа. Например, вы пишете рассказ и вдруг у вас появилась идея для нового поворота сюжета, но, чтобы развить этот сюжет, вам нужно вернуться в ту часть, где главный герой попадает в новый город (или нечто подобное) … Как быстро переместиться по тексту так, чтобы вы не потеряли ход мысли?

Давайте посмотрим несколько примеров того, как это быстро сделать в Vim.

Примечание: Все перемещения работают из текущей позиции курсора.

Нужно переместить курсор на следующее слово? Нажмите w.

Нужно переместить курсор на следующий параграф ? Нажмите }.

Нужно переместить курсор на 3-й по счету символ 'h'? Нажмите 3fh.

Нужно переместить курсор на 35 строк вниз? Нажмите 35j.

После одного из выше перечисленных перемещений, хотите перейти обратно на прежнее место? Нажмите ctrl-o.

Хотите узнать, как все это работает? Давайте разберем подробнее.

Сперва, откроем файл с именем chandrayaan.txt и наберем следующий текст (взят из Wikipedia):

Chandrayaan-1 is India's first mission to the moon. Launched by India's national space agency the Indian Space Research Organisation (ISRO). The unmanned lunar exploration mission includes a lunar orbiter and an impactor. The spacecraft was launched by a modified version of the PSLV XL on 22 October 2008 from Satish Dhawan Space Centre, Sriharikota, Andhra Pradesh at 06:23 IST (00:52 UTC). The vehicle was successfully inserted into lunar orbit on 8 November 2008. The Moon Impact Probe was successfully impacted at the lunar south pole at 20:31 hours on 14 November 2008.

The remote sensing satellite had a mass of 1,380 kilograms (3,042 lb) at launch and 675 kilograms (1,488 lb) at lunar orbit and carries high resolution remote sensing equipment for visible, near infrared, and soft and hard X-ray frequencies. Over a two-year period, it is intended to survey the lunar surface to produce a complete map of its chemical characteristics and 3-dimensional topography. The polar regions are of special interest, as they might contain ice. The lunar mission carries five ISRO payloads and six payloads from other international space agencies including NASA, ESA, and the Bulgarian Aerospace Agency, which were carried free of cost.

Перемещение курсора, способ Vim

Основные клавиши, которые вы должны использовать, это клавиши "hjkl". Эти 4 кнопки соответствуют: влево, вниз, вверх и вправо соответственно. Обратите внимание, эти клавиши расположены прямо под правой рукой, когда руки размещены на домашней строке.

Но почему бы не использовать клавиши со стрелками? Проблема в том, что они расположены в отдельном месте на клавиатуре, и это требует столько же движений руки, как и использование мыши.

Запомните, пальцы правой руки должны всегда быть на клавишах jkl (и большой палец на пробеле). Теперь давайте посмотрим, как использовать эти 4 клавиши:

Использование h,j,k,l, вместо клавиш со стрелками

h

Вы должны переместить ваш указательный палец (который находится на 'j'), влево чтобы нажать на 'h'. Это самая левая клавиша и означает идти налево.

j

Клавиша 'j' перемещает в низ.

k

Направленная вверх клавиша 'k' перемещает вверх.

l

Клавиша 'l' перемещает в право.

Обратите внимание, что мы можем повторять операцию, используя в префиксе количество. Например, 2j повторит операцию j 2 раза.

Откройте текстовый файл chandrayaan.txt и начните тренироваться с этими клавишами:

Установите ваш курсор на первом символе 'C' в документе.

Нажмите 2j и курсор должен пропустить текущую строку, еще строку и перейти на вторую строку т.е. на второй абзац.

Нажмите 2k, чтобы вернуться назад, где мы были. Или, как альтернатива, нажмите ctrl-o для перехода назад.

Нажмите 5l для движения на 5 символов в право.

Нажмите 5h для движения влево на 5 символов. Или, как альтернатива, нажмите ctrl-o для возврата назад.

Сделайте привычкой использование клавиш "hjkl" вместо клавиш со стрелками. После нескольких попыток вы заметите, насколько быстрее вы можете использовать эти клавиши.

Аналогично, есть более простые клавиши, которые заменяют следующие специальные движения. Обратите внимание, что это опять-таки имеет целью снизить количество движений рук. В этих конкретных случаях люди склонны к поиску и использованию таких специальных клавиш, так что мы тоже хотим избежать лишних движений рук.

Обычно

Vim

'home' клавиша перемещает в начало строки

^ клавиша (переход в начало строки)

'end' клавиша перемещает в конец строки

$ клавиша (переход в конец строки)

'pgup' клавиша перемещает выше на один экран

ctrl-b перемещение на один экран назад ('b'ackward)

'pgdn' клавиша перемещает ниже на один экран

ctrl-f перемещение на один экран вперед ('f'orward)

Если вы знаете абсолютный номер строки, на которую вы хотите перейти, скажем 50, нажмите 50G и Vim перейдет на строку 50. Если номер не определен, G переместит вас на последнюю строку в файле. Как теперь перейти в начало файла? Просто, нажмите 1G. Обратите внимание как одна клавиша может делать так много.

Переместить курсор в первую строку — нажмите 1G.

Переместить на 20 символов в право — нажмите 20l.

Переместить назад, на первый символ в строке — нажмите ^.

Перейти на последний символ в строке — нажмите $.

Нажмите G для перехода на последнюю строку файла.

Что делать, если вы хотите перемещаться по тексту, который в данный момент отображается в окне?

Нажмите H для перехода в верхнюю ('h'igh) позицию (первая строка в окне)

Нажмите M для перехода в среднюю ('m'iddle) строку в окне

Нажмите L для перехода в нижнюю ('l'ow) позицию (последняя строка, показанная на экране)

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

Слова, предложения, абзацы

Мы рассмотрели, как переходить к символам и строкам. Но мы намерены рассматривать текст как набор слов и способ их компоновки в предложения, абзацы, разделы, и так далее. Так почему бы не организовать перемещение по таким частям текста, т. е. по "текстовым объектам"?

Давайте возьмем несколько первых слов из нашего текста:

The polar regions are of special interest, as they might contain ice.

Сперва, давайте поместим курсор на первый символ нажав ^.

[T]he polar regions are of special interest, as they might contain ice.

Примечание: мы использовали квадратные скобки чтобы отметить позицию курсора.

Нужно перейти на следующее слово ('w'ord)? Нажмите w. Курсор переместится на 'p' в 'polar'.

The [p]olar regions are of special interest, as they might contain ice.

Как перейти на 2 слова вперед? Нужно добавить количество префиксом к 'w': 2w.

The polar regions [a]re of special interest, as they might contain ice.

Аналогично, для движения к концу ('e'nd) следующего слова, нажмите e.

The polar regions ar[e] of special interest, as they might contain ice.

Для перехода на слово назад ('b'ackward), нажмите b. Цифра 2 в префиксе, 2b переместит назад на 2 слова.

The polar [r]egions are of special interest, as they might contain ice.

Смотри :help word-motions для получения детальной информации.

Мы рассмотрели перемещение по символам и по словам, давайте перейдем к предложениям.

[C]handrayaan-1 is India's first mission to the moon. Launched by India's national space agency the Indian Space Research Organisation (ISRO). The unmanned lunar exploration mission includes a lunar orbiter and an impactor. The spacecraft was launched by a modified version of the PSLV XL on 22 October 2008 from Satish Dhawan Space Centre, Sriharikota, Andhra Pradesh at 06:23 IST (00:52 UTC). The vehicle was successfully inserted into lunar orbit on 8 November 2008. The Moon Impact Probe was successfully impacted at the lunar south pole at 20:31 hours on 14 November 2008.

Установите курсор на первом символе (^).

Для перемещения на следующее предложение, нажмите ).

Chandrayaan-1 is India's first mission to the moon. [L]aunched by India's national space agency the Indian Space Research Organisation (ISRO). The unmanned lunar exploration mission includes a lunar orbiter and an impactor. The spacecraft was launched by a modified version of the PSLV XL on 22 October 2008 from Satish Dhawan Space Centre, Sriharikota, Andhra Pradesh at 06:23 IST (00:52 UTC). The vehicle was successfully inserted into lunar orbit on 8 November 2008. The Moon Impact Probe was successfully impacted at the lunar south pole at 20:31 hours on 14 November 2008.

Разве это не круто ?

Для перемещения на предыдущее предложение, нажмите (.

Продолжайте, пробуйте и посмотрите, как быстро вы можете перемещаться. Опять же, вы можете использовать префикс, так 3) переместит вперед на 3 предложения.

Теперь используйте весь текст и попробуйте перемещаться по абзацам. Нажмите }, чтобы перейти к следующему абзацу и {, чтобы переместиться к предыдущему абзацу.

Обратите внимание, что большие ('bigger') скобки для больших текстовых объектов. Если вы уже заметили это, то я вас поздравляю, вы уже начали думать, как победитель, то есть "думать как пользователь Vim (Vimmer)".

И снова повторюсь, не пытайтесь запомнить все клавиши, постарайтесь ввести это в привычку, сделать так, чтобы ваши пальцы естественно использовали эти клавиши.

Смотри :help cursor-motions для получения детальной информации.

Создание ваших закладок

Вы пишете какой-то текст и вдруг вспоминаете, что вам необходимо обновить связанный раздел в том же документе, но вы хотите запомнить, где вы находитесь в данный момент, чтобы вернуться к этому месту позже. Что вы сделаете?

Можно будет прокрутить текст до нужного раздела, обновить его, а затем прокрутить туда, где вы были. Как много лишних движений, и мы, возможно, забудем, где мы в последний раз были.

Мы можем сделать это в Vim намного умнее. Переместим курсор на 5-ю строку в следующем тексте (слова Джона Леннона). Используем для создания закладки с именем 'a'. Переместим курсор туда, куда нам нужно, например 4j.

I am eagerly awaiting my next disappointment. —Ashleigh Brilliant

Every man’s memory is his private literature. —Aldous Huxley

Life is what happens to you while you’re busy making other plans. —John Lennon

Life is really simple, but we insist on making it complicated. —Confucius

Do not dwell in the past, do not dream of the future, concentrate the mind on the present moment. —Buddha

The more decisions that you are forced to make alone, the more you are aware of your freedom to choose. —Thornton Wilder

Нажмите 'a (то есть после одной кавычки следует название отметки) и, вуаля, Vim переходит (назад) к строке, в которой была создана закладка.

Вы можете использовать любой символ алфавита (A-Za-z), чтобы назвать закладку, что означает, что вы можете иметь до 52 именованных меток для каждого файла.

Переходы назад и вперед

В различных перемещениях, изученных нами, мы часто хотели бы после перемещения возвратиться обратно на прежнее место или к следующей закладке. Для этого достаточно просто нажать ctrl-o для перехода на прежнее место и ctrl-i, чтобы перейти к следующему месту.

Части текста

Существует много способов, которыми вы можете выделить часть текста в Vim и затем выполнить над ним команду. Например, если вы хотите визуально выделить часть текста, а затем конвертировать регистр (из верхнего в нижний или из нижнего в верхний регистр), используйте клавишу ~.

Откройте файл dapping.txt, который мы создали в предыдущих главах. Используя различные клавиши переместитесь на первый символ слова 'dapper' во втором абзаце. Подсказка: используйте }, j, w.

Dapping means being determined about being determined and being passionate about being passionate.

Be a dapper.

Нажмите v для начала визуального режима, и нажмите ap для выбора, 'a' и 'p'aragraph. Нажмите ~ для переключения регистра текста. Если вы хотите отменить выделение, просто нажмите <Esc>.

Dapping means being determined about being determined and being passionate about being passionate.

bE A DAPPER.

Другая мнемоника для операции над текстовыми объектами: aw - означает 'a' и 'w'ord; a '' означает строку в кавычках (например, "это строка в кавычках"); ab - это 'a' и 'b'lock, что означает что-либо внутри пары скобок, и так далее.

Смотри :help object-motions и :help text-objects для подробной информации.

Итоги

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

Смотри :help various-motions а также :help motion для изучения интересных возможностей перемещений.

Внешние ссылки

http:/ / en. wikipedia. org/ wiki/ Chandrayaan-1



Предыдущий раздел: Следующий раздел:
Умение печатать Оглавление Помощь (Help)