Поиск по сайту:

Как использовать маркеры и выполнять выделение текста в Vim


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

But before we start doing that, it's worth mentioning that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 16.04, and the Vim version we've used is 7.4.

Предполагая, что у вас есть базовые знания о редакторе Vim (нет? нет проблем, просто идите сюда), вы должны знать, что команда d позволяет вам вырезать/удалить строку. Но что, если вы хотите вырезать, скажем, 3 строки? Ваш ответ может быть таким: повторите команду трижды. Хорошо, но что, если нужно вырезать целый абзац (или, скажем, пару)? Является ли практичным решением сначала подсчет количества строк вручную, а затем запуск команды d (даже если вы используете [n]dd)?

Нет, это не так. Лучшим решением в этом случае было бы выбрать строки, которые вы хотите вырезать/удалить, а затем запустить команду d только один раз. Вот пример:

Предположим, я хочу вырезать/удалить полный первый абзац раздела ВВЕДЕНИЕ, показанного на снимке экрана ниже:

Итак, что я сделаю, так это переведу курсор в начало первой строки и (убедившись, что я не в режиме вставки) наберу команду V (Shift+v). В результате будет выбрана первая строка, и Vim активирует режим Visual Line.

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

Так это то, что мы хотели, верно? Теперь просто нажмите d, и выбранный абзац будет вырезан/удален. Излишне говорить, что помимо вырезания/удаления, вы можете выполнять любые другие действия с выделенным текстом.

Это подводит нас к другому важному аспекту: не каждый раз нам нужно удалять всю строку или строки целиком; что делать в таких случаях? Это означает, что решение, которое мы только что обсуждали, работает только тогда, когда вы хотите выполнить операцию со всей строкой (строками). Что делать, если требуется удалить первые три предложения в абзаце?

Что ж, для этого тоже есть команда - просто используйте v вместо V (конечно, без одинарных кавычек). Ниже приведен пример, в котором я использовал v, а затем выделил первые три предложения в абзаце:

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

Предположим, требование состоит в том, чтобы выбрать только название стран, которые означают вторую колонку текста. Итак, что вы можете сделать в этом случае, подведите курсор к первому элементу рассматриваемого столбца и нажмите Ctrl+v один раз. Теперь, используя клавишу со стрелкой вниз, выберите первую букву названия каждой страны:

Затем с помощью клавиши со стрелкой вправо выберите весь столбец или все имена.

Совет. Если вы по какой-то причине отменили выделение блока текста и теперь хотите снова выделить его, просто нажмите gv в командном режиме.

Иногда при работе с большим файлом (скажем, файлом исходного кода или сценарием оболочки) вам может понадобиться переключиться на определенное место, а затем вернуться к строке, на которой вы были изначально. Это не проблема, если рассматриваемые линии находятся не далеко, или вам приходится делать это время от времени.

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

Чтобы пометить строку в vim, используйте команду m, за которой следует буква алфавита, представляющая название метки (доступные параметры: az в нижнем регистре). Например, ма. Теперь, чтобы вернуться к отметке a, используйте команду a (включая одинарную кавычку).

Совет. Вы можете использовать апостроф () или обратную кавычку (\\) в зависимости от того, хотите ли вы перейти к началу отмеченной строки или конкретно к строка и столбец знака.

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

d'[mark-name]

чтобы удалить все, что находится между вашим текущим положением и отмеченной линией.

Двигаемся дальше, вот важная заявка из официальной документации Vims:

Each file has a set of marks identified by lowercase letters (a-z). In addition there is a global set of marks identified by uppercase letters (A-Z) that identify a position within a particular file. For example, you may be editing ten files. Each file could have mark a, but only one file can have mark A

Итак, пока мы обсудили основное использование строчных букв в качестве меток Vim, как и где могут быть полезны прописные буквы. Что ж, следующий отрывок проясняет ситуацию:

Because of their limitations, uppercase marks may at first glance seem less versatile than their lowercase counterpart, but this feature allows them to be used as a quick sort of "file bookmark." For example, open your .vimrc, press mV, and close Vim. The next time you want to edit your .vimrc, just press 'V to open it. 

И, наконец, чтобы удалить метку, используйте команду delmarks. Например:

:delmarks a

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

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

Полный обзор статей о Vim на HowtoForge можно найти здесь.