В предыдущей статье этой серии мы рассмотрели 7 советов и хитростей для добавления в ваш набор навыков vi/m, помимо ранее указанных причин, изучение того, как эффективно использовать текстовый редактор в Linux, является необходимым навыком для системного администратора или инженера и обязательной компетенцией для прохождения любой крупной программы сертификации Linux (такой как LFCS, LFCE, RHCSA и RHCE).
Сказано это, давайте начнем.
8. Создание горизонтальных или вертикальных окон Vim
Этот совет был поделен Йоандером, одним из наших читателей, в Части 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: вверх):
- Ctrl+w k – вверх
- Ctrl+w j – вниз
- Ctrl+w l – влево
- Ctrl+w h – вправо
9. Изменение регистра букв в Vim
Обратите внимание, что этот совет работает только в vim. В следующих примерах X – целое число.
- Чтобы изменить серию букв на заглавные, установите курсор на первую букву, затем введите gUX в ex режиме, и, наконец, нажмите клавишу стрелка вправо на клавиатуре.
- Чтобы изменить X количество слов, установите курсор в начало слова и введите gUXw в ex режиме.
- Чтобы изменить всю строку на заглавные буквы, установите курсор в любом месте строки и введите gUU в ex режиме.
Например, чтобы преобразовать всю строчную строку в заглавные буквы, вы должны установить курсор в любом месте строки и ввести gUU:

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

10. Удаление текста в режиме вставки Vim
В то время как вы можете удалить символы или несколько слов за раз в ex режиме (т.е. dw для удаления слова), вы также можете сделать это в режиме вставки следующим образом:
- Ctrl + h: удалить предыдущий символ в месте, где в данный момент находится курсор.
- Ctrl + w: удалить предыдущее слово в месте, где в данный момент находится курсор. Для правильной работы курсор должен быть помещен в пустое пространство после слова, которое вам нужно удалить.
- Ctrl + u: удалить текущую строку, начиная с символа сразу слева от места, где находится курсор.
11. Перемещение или копирование существующих строк в Vim
Хотя действительно можно использовать хорошо известные команды dd
, yy
и p
в режиме ex для удаления, копирования (yank) и вставки строк соответственно, это работает только тогда, когда курсор помещен в место, где вы хотите выполнить эти операции.
Хорошая новость заключается в том, что с помощью команд копировать и переместить вы можете сделать то же самое независимо от того, где в данный момент находится курсор.
Для следующего примера мы будем использовать короткую поэму под названием “Вечность” автора Терри Николь Таррингтон. Для начала мы заставим Vim отображать номера строк (:set nu в режиме команд – рассмотрите это как дополнительный совет). Мы будем использовать :3copy5 (также в режиме команд) для копирования строки 3 под строку 5:

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

12. Навигация и подсчет совпадений шаблонов в Vim
Этот совет основан на команде замены (совет #7 в Часть 1 этой серии), за исключением того, что она не удаляет ничего, поскольку поведение замены переопределяется параметром n, что приводит к подсчету вхождений указанного шаблона:
Убедитесь, что вы не пропустили ни одного из прямых слешей!
:%s/pattern//gn
Например,
:%s/libero//gn

Чтобы перейти от одного вхождения шаблона к следующему в 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

Результат предыдущей команды затем передается в 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

Обратите внимание, что вы можете перемещаться или искать содержимое 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/