Продолжение владения Vim: еще 8 мощных советов для администраторов Linux (Часть 2)

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

Сказано это, давайте начнем.

8. Создание горизонтальных или вертикальных окон Vim

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

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

vim -o test1 test2 
Launch Vim Editor in Horizontal Windows

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

vim -O test3 test4 
Launch Vim Editor in Vertical Windows

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

  • Ctrl+w k – вверх
  • Ctrl+w j – вниз
  • Ctrl+w l – влево
  • Ctrl+w h – вправо

9. Изменение регистра букв в Vim

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

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

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

Change String to Uppercase in Vim Editor

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

Convert String to Lowercase in Vim Editor

10. Удаление текста в режиме вставки Vim

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

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

11. Перемещение или копирование существующих строк в Vim

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

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

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

Move Copy Existing Lines in Vim

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

Move Lines in Vim Editor

12. Навигация и подсчет совпадений шаблонов в Vim

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

Убедитесь, что вы не пропустили ни одного из прямых слешей!

:%s/pattern//gn 

Например,

:%s/libero//gn
Count Matches by Search Pattern in Vim

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

13. Открыть файл в Vim на определенной строке

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

# vim filename +line_number

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

# vim forever.txt +6

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

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

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

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

Наконец,

  • 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
Open Vim Editor in Specified Line

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

14. Настройка окружения Vim

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

  • Vim for Linux Admins: 8 Powerful Tips and Tricks (Part 2)

при первом открытии программы и установить автоматическую отступление, так что при нажатии клавиши 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
Vim Editor Help and Options

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

Итог

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

I’m sure you must have other ones – so feel free to share them with the rest of the community in the comment form below. As always, questions and comments are also welcome.

Source:
https://www.tecmint.com/how-to-use-vi-and-vim-editor-in-linux/