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

8 интересных советов и подсказок по редактору Vi/Vim для каждого администратора Linux. Часть 2


В предыдущей статье этой серии мы рассмотрели 7 советов и приемов, которые можно добавить к вашему набору навыков vi/m. Помимо причин, указанных ранее, умение эффективно использовать текстовый редактор в Linux является важной способностью для системного администратора или инженера и является необходимой компетенцией для прохождения любой крупной программы сертификации Linux (например, LFCS, LFCE, RHCSA и RHCE). .

Тем не менее, давайте начнем.

СОВЕТ № 8: Создайте горизонтальные или вертикальные окна

Этим советом поделился один из наших читателей, Yoander, в части 1. Вы можете запустить vi/m с несколькими горизонтальными или вертикальными делениями для редактирования отдельных файлов в одном главном окне:

Запустите vi/m с двумя горизонтальными окнами: test1 вверху и test2 внизу.

vim -o test1 test2 

Запустите vi/m с двумя вертикальными окнами: test3 слева и test4 справа:

vim -O test3 test4 

Вы можете переключать курсор из одного окна в другое с помощью обычной процедуры перемещения vi/m (h: вправо, l: влево, j: внизу, k: вверху):

  1. Ctrl+w k – вверху
  2. Ctrl+w j – внизу
  3. Ctrl+w l – влево
  4. Ctrl+w h – вправо

СОВЕТ № 9: Меняйте буквы, слова или целые строки на ПРОПИСНЫЕ или строчные.

Обратите внимание, что этот совет работает только в vim. В следующих примерах X — целое число.

  1. Чтобы изменить последовательность букв на прописные, поместите курсор на первую букву, затем введите gUX в режиме ex и, наконец, нажмите стрелку вправо на клавиатуре.
  2. Чтобы изменить количество слов X, поместите курсор в начало слова и введите gUXw в режиме ex.
  3. Чтобы перевести всю строку в верхний регистр, поместите курсор в любое место строки и введите gUU в режиме ex.

Например, чтобы преобразовать всю строку строчного в прописную, вам следует поместить курсор в любое место строки и ввести gUU:

Например, чтобы преобразовать 2 заглавных слова в строчные, необходимо поместить курсор в начало первого слова и ввести gu2w:

СОВЕТ № 10. Удаляйте символы, слова или начало строки в режиме ВСТАВКА.

Хотя вы можете удалять символы или несколько слов одновременно в режиме ex (т. е. dw для удаления слова), вы также можете сделать это в режиме вставки следующим образом:

  1. Ctrl + h: удалить предыдущий символ в том месте, где в данный момент находится курсор.
  2. Ctrl + w: удалить предыдущее слово в том месте, где в данный момент находится курсор. Чтобы это работало корректно, курсор необходимо поставить в пустое место после слова, которое нужно удалить.
  3. Ctrl + u: удалить текущую строку, начинающуюся с символа сразу слева от места, где находится курсор.

СОВЕТ № 11: Переместите или скопируйте существующие строки в другую строку документа.

Хотя это правда, что вы можете использовать известные команды dd, yy и p в режиме ex для удаления, копирования (скопирования) и вставки строк соответственно, но это работает только тогда, когда курсор находится там, где вы хотите выполнить эти операции. . Хорошей новостью является то, что с помощью команд копировать и переместить вы можете делать то же самое независимо от того, где в данный момент находится курсор.

В следующем примере мы будем использовать короткое стихотворение «Навсегда» автора Терри Николь Таррингтон. Для начала мы заставим vim отображать номера строк (:set nu в командном режиме — считайте это дополнительным советом). Мы будем использовать :3copy5 (также в командном режиме), чтобы скопировать строку 3 ниже строки 5:

Теперь отмените последнее изменение (Esc + u – еще один бонусный совет!) и введите :1move7, чтобы заменить строку 7 на строку 1. Обратите внимание, как сдвинуты строки со 2 по 7. вверх, а бывшая строка 1 теперь занимает строку 7:

СОВЕТ № 12. Подсчитайте совпадения, полученные в результате поиска по шаблону, и переходите от одного вхождения к другому.

Этот совет основан на команде замены (совет #7 в Части 1 этой серии), за исключением того, что она ничего не удаляет, поскольку поведение замены переопределяется командой параметр n, позволяющий получить количество вхождений указанного шаблона:

Убедитесь, что вы не пропустили ни одну косую черту!

:%s/pattern//gn 

Например,

:%s/libero//gn

Чтобы перейти от одного вхождения шаблона к другому в режиме ex, нажмите n (строчная N). Чтобы перейти к предыдущему экземпляру, нажмите N.

СОВЕТ № 13: Откройте vi/m напрямую в указанной строке.

По умолчанию, когда вы запускаете vi/m, курсор изначально помещается в последнюю редактируемую строку. Если вы хотите открыть программу и поместить курсор непосредственно в указанную строку, вы можете использовать следующий трюк:

vim filename +line_number

Например, откройте forever.txt и поместите курсор в строку 6:

vim forever.txt +6

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

vim filename +$(grep -in pattern filename | sed -n 3p | cut -d: -f1)

Давайте подробнее рассмотрим, что делает приведенная выше команда:

  1. grep -in имя файла шаблона — отображает все строки из имени файла, в которых встречается шаблон, с номером строки в начале каждой выходной строки.
  2. sed -n 3p — отображает третью строку выходных данных предыдущего конвейера.

Окончательно,

  1. cut -d: -f1 возвращает первое поле предыдущего конвейера с двоеточием (:) — разделителем полей.
grep -in forever forever.txt
grep -in forever forever.txt | sed -n 3p
grep -in forever forever.txt | sed -n 3p | cut -d: -f1

Результат предыдущей команды затем передается в vi/m, чтобы открыть программу в указанной строке.

СОВЕТ № 14: Настройка среды vi/m

Если вы используете vi/m для редактирования файлов конфигурации или написания кода, вам понадобится возможность отображать номера строк при первом открытии программы и устанавливать автоматические отступы, чтобы при нажатии Enter , курсор автоматически установится в нужное положение. Кроме того, вы можете настроить количество пробелов, занимаемых вкладкой.

Хотя вы можете делать это каждый раз при запуске vi/m, проще установить эти параметры в ~/.vimrc, чтобы они применялись автоматически:

set number
set autoindent
set shiftwidth=4
set softtabstop=4
set expandtab

Дополнительные возможности настройки среды vi/m можно найти в онлайн-документации vim.

СОВЕТ № 15: Получите общую справку/опции Vim с помощью vimtutor

Если в любой момент вам понадобится освежить свои общие навыки работы с vi/m, вы можете запустить vimtutor из командной строки, где отобразится полная справка по vi/m, к которой вы сможете обращаться так часто, как захотите. без необходимости запускать веб-браузер для поиска способов выполнения определенной задачи в vi/m.

vimtutor

Обратите внимание, что вы можете перемещаться или выполнять поиск по содержимому vimtutor, как если бы вы просматривали обычный файл в vi/m.

Краткое содержание

В этой серии из двух статей я поделился несколькими советами и приемами vi/m, которые помогут вам более эффективно редактировать текст с помощью инструментов командной строки. Я уверен, что у вас наверняка есть и другие — поэтому не стесняйтесь поделиться ими с остальным сообществом, используя форму ниже. Как всегда, вопросы и комментарии также приветствуются.