Начало работы с Vim для Linux

Представьте, что вы по колено в своей системе Linux и отчаянно пытаетесь отредактировать файл, и каждая попытка кажется расшифровкой древнего кода. Если чем больше вы кликаете, тем больше теряетесь, почему бы не обратиться к Vim для Linux?

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

Возьмите свой метафорический меч (или клавиатуру) и отправляйтесь в мир Vim!

Предварительные требования

Ниже приведены несколько предварительных требований, чтобы подготовить почву для овладения Vim на вашей системе Linux:

  • A Linux OS – This tutorial uses an Ubuntu 22.04 LTS.

Создание и редактирование файлов с помощью Vim для Linux

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

Для создания и редактирования файла в Vim следуйте этим шагам:

1. Откройте терминал и выполните следующую команду vim, чтобы создать файл под названием sshd_config (произвольное) с помощью Vim. Эта команда автоматически создает файл, если его не существует. В противном случае открывается существующий файл в Vim.

Интерфейс Vim выглядит примерно так, если вы создали новый файл, что означает, что Vim в настоящее время находится в режиме команд. Режим команд является одним из основных режимов, в которых вы взаимодействуете с текстом в редакторе Vim.

Creating a new file via Vim for Linux

2. Затем скопируйте текст ниже в буфер обмена, который содержит образцы настроек SSH-сервера исключительно для демонстрации и не отражает фактические конфигурации сервера.

3. В Vim нажмите клавишу i, чтобы войти в режим вставки. Режим вставки также является одним из основных режимов в Vim, который позволяет вводить и изменять содержимое вашего документа.

Как только вы войдете в режим вставки, строка состояния отобразит — ВСТАВКА —, как на следующем изображении.

Entering the insert mode on Vim

4. Теперь нажмите Ctrl+Shift+V или Shift+Insert, чтобы вставить текст, скопированный на шаге два, в редактор Vim, и нажмите Esc, чтобы выйти из режима вставки (переключится в режим команд).

Обратите внимание, что статус — ВСТАВКА — исчезает, что означает, что вы снова находитесь в режиме команд.

Inserting the copied text into Vim

5. Наконец, введите команду :w и нажмите Enter, чтобы сохранить изменения в файле без закрытия редактора.

При необходимости вы можете выполнить другие команды ниже:

Command Details
:q! Quit the editor without saving the changes.
:w! Write the current file changes forcefully.
:wq Save the changes and quit the editor (or :wq! to save and quit forcefully).
e! Revert to the last saved version of the file.
Saving the changes

Строка состояния отображает размер данных, записанных в файл, который в данном случае составляет 23 строки (23L) и 624 байта (624B).

Verifying the changes are saved

Навигация по текстам в Vim

После освоения искусства создания и редактирования файлов с помощью Vim вы погрузитесь в важное умение, которое повысит ваше мастерство редактирования текста — навигацию в Vim. Эффективная навигация является ключом к разблокировке потенциала Vim, подобно исследованию обширного ландшафта.

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

1. Теперь введите команду :set nu и нажмите Enter, чтобы включить нумерацию строк в Vim. Нумерация строк является важной функцией редактора при работе с кодом или большими документами.

Если успешно, вы увидите номера строк в редакторе, как показано ниже.

Setting the line numbering

2. Затем переключитесь в режим команд (Esc) и нажмите команду gg, чтобы перейти в начало файла.

Jumping to the beginning of the file

3. Затем нажмите одну из следующих команд, пока не достигнете начала параметра MaxSessions, и нажмите $, чтобы переместить курсор в конец строки.

Command Details
h Move the cursor to the left or the previous character.
j Move the cursor one line down.
k Move the cursor one line up.
l Move the cursor to the right or the next character.
Placing the cursor at the end of the MaxSessions line

4. Теперь замените текст следующим образом:

  • Нажмите i, чтобы перейти в режим вставки.
  • Удалите значение (Backspace или Delete), которое составляет 10, и замените его на 25.
  • Переключитесь в режим команд (Esc) и сохраните изменения (:w).
Editing a text in Vim

Вставка текстов в определенные места

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

Чтобы увидеть, как работает вставка текстов в определенные точки, выполните следующее:

1. Нажмите I (Shift+I), когда курсор находится в конце строки, чтобы войти в режим вставки и одновременно переместить курсор в начало строки.

Inserting at the beginning of the line

2. Перейдите в режим команд (Esc), переместите курсор на любой другой символ в текущей строке текста (т.е. в начало), и нажмите команду a.

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

Inserting at the current cursor point

3. Введите ‘y’ для того чтобы исправить ключ MaxSession на MyaxSession, как показано ниже, и вернитесь в режим команд (Esc).

Вы заметите, что новый символ ‘y’ появляется сразу после первого.

Inserting a character within a line of text

4. Теперь измените строку текста следующим образом:

  • Нажмите Shift+A, чтобы выполнить команду A, которая позволяет Vim войти в режим вставки и переместить курсор в конец строки. Это удобно для быстрого добавления содержимого, такого как точка с запятой или завершение предложения.
  • Добавьте 0 в конец строки, что изменит значение на 250.
  • Вернитесь в режим команд (Esc) и сохраните изменения (:w).
Appending text to the end of the line

Открытие новых строк

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

Чтобы открыть новые строки сверху или снизу, выполните следующие шаги:

1. Находясь в режиме команд, нажмите o, чтобы открыть новую строку под текущей строкой текста и добавьте следующий комментарий о MyaxSessions.

# Примечание: Настройте maxSessions в соответствии с нагрузкой сервера
Adding a new line below the current line of text

2. Переключитесь в режим команд (Esc), переместите курсор на другую строку текста и нажмите O (Shift+O), чтобы добавить новую строку над текущей строкой текста.

Adding a new line above the current line of text

3. Теперь добавьте следующую команду в файл и сохраните изменения (:w).

# Будьте осторожны с уровнями журнала, чтобы избежать проблем с производительностью
Populating the new line of text

Удаление слов и строк текста

Vim предоставляет эффективные команды для удаления и замены текста за пределами основных клавиш Delete или Backspace. Эти команды доступны из режима команд, что позволяет вам быстро вносить изменения и коррекции, позволяя удалять или заменять символы, слова или целые строки.

Чтобы удалить и заменить тексты в Vim для Linux, выполните следующее:

1. Переместите курсор к параметру MyaxSessions, точнее к символу ‘y‘.

Placing the cursor at a specific character

2. Затем нажмите x, чтобы мгновенно удалить символ под курсором, который в данном случае – ‘y‘.

Параметр вернется к исходному тексту как MaxSessions, как показано ниже.

Deleting a character under the cursor

3. Переместите курсор к строке PermitRootLogin no:.

Positioning the cursor

4. Теперь нажмите "_dd, чтобы удалить всю строку текста, независимо от положения курсора.

Часть "_ в команде указывает на регистр “черной дыры”, который отбрасывает удаленный текст (он не будет сохранен в каком-либо регистре).

Vim имеет свой набор регистров, где можно хранить тексты, и не указание регистра “черной дыры” делает команду вырезанием текста вместо его удаления.

При успешном выполнении вы заметите, что строка PermitRootLogin no: исчезла.

Deleting an entire line of text

5. Находясь в режиме команд, поместите курсор в начало слова Specifies в строке # Specifies whether root can log in using ssh.

Placing the cursor at the beginning of a word

6. Наконец, выполните команду "_dw, которая удалит слово Specifies, как показано ниже:

Deleting a word

По желанию, вы можете воспользоваться следующими командами для дополнительных операций удаления:

Command Details
"_d$ Delete texts from the cursor position to the end of the line.
"_D Deletes from the cursor position to the end of the line.
"_d^ Deletes from the cursor position to the first non-whitespace character of the line
"_dgg Deletes from the cursor position to the beginning of the file.
"_dG Deletes from the cursor position to the end of the file.

Замена символов и строк текста

От стратегических удалений в Vim перейдите к другой стороне медали — замене символов и строк текста. Замена — это мазок кисти, который позволяет точно дорабатывать и переопределять ваш текст. Хорошая новость в том, что Vim позволяет заменять отдельные символы или целые строки текста.

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

1. Поместите курсор на строке AuthorizedKeysFile .ssh/authorized_keys, конкретно на символе ‘z‘ в слове ‘authorized‘, как показано ниже:

Positioning the cursor

2. Как только курсор будет на месте, нажмите r, что скажет Vim, что вы собираетесь заменить символ под курсором, и введите символ ‘s‘. Команда r позволяет вам заменить символ без входа в режим вставки (i) сначала.

Обратите внимание, что символ ‘z‘ в слове ‘authorized‘ был заменен на символ ‘s‘, изменив слово на authorised.

Replacing a character within a line of text

3. Затем поместите курсор на символ ‘z‘ в слове ‘AuthorizeKeysFile‘.

Placing the cursor on another character

4. Нажмите R (Shift+R), чтобы войти в режим замены, наберите ‘s’, чтобы заменить символ, но пока не выходите из режима замены.

В отличие от команды r, которая позволяет заменить только один символ, команда R позволяет вам перезаписывать существующий текст по мере ввода.

Entering replace mode

5. В конечном итоге скопируйте следующий текст в буфер обмена, переместите курсор в начало файла и вставьте скопированный текст (Ctrl+Shift+V или Shift+Insert).

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

Overwriting an entire line of text via the replace mode

Поиск текстов в файле

Участие в повторении или отмене действий, умение искать тексты в файле пригодится. Vim позволяет искать определенные слова, фразы или шаблоны в вашем файле.

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

Чтобы найти тексты в файле, выполните следующие шаги:

1. Переместите курсор в начало файла (команда gg), нажмите / (прямой слеш), чтобы начать режим поиска, введите искомый термин log и нажмите Enter.

Эта команда ищет указанный вами термин (log), перемещая курсор вперед к следующему вхождению термина.

Searching for the term “log”

2. Затем нажмите n, чтобы перейти к следующему вхождению термина.

Moving to the next occurrence of the term “log”

3. Теперь нажмите N (Shift+N), чтобы вернуться к предыдущему вхождению.

Moving back to the previous occurrence of the term “log”

Кроме того, Vim предлагает другие быстрые клавиши поиска, например, следующие для большей гибкости поиска:

Command Details
? Initiates a reverse search of a term.
* Performs a forward search for the word under the cursor. Continue pressing * to cycle through further occurrences of the word until it loops back to the first instance.
# Performs a backward search for the word under the cursor. Continuously pressing # works similarly to the * command but cycles until it loops back to the last instance.

Комбинирование поиска с другими командами в Vim

Пока вы исследуете сложные ландшафты Vim, почему бы не добавить еще один слой к вашему мастерству редактирования текста – комбинировать поиск с другими командами?

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

Чтобы увидеть синергию между поиском и действиями в Vim, выполните следующее:

1. Находясь в режиме команд, поместите курсор в начальную точку, откуда вы хотите начать удаление (т.е. первое вхождение искомого термина log).

Positioning the cursor at the first occurrence of the term “log”

2. Затем введите d/log и нажмите Enter, чтобы удалить все от текущей позиции курсора до следующего вхождения термина log, как показано ниже.

Deleting everything from the cursor up to the next occurrence of “log”

3. Отмените предыдущее действие (команда u) и поместите курсор на первое вхождение термина поиска log.

Placing the cursor at the first instance of the search term “log”

4. Теперь выполните следующую команду для поиска и замены текста в определенном диапазоне, где:

  • :. – Вводит режим команд (:) на текущей строке (.).
  • ,$ – Указывает диапазон для замены.
  • s/log/logs/g – Substitute all occurrences of the old word (log) with new (logs) globally (g) within the specified range.
Replacing all occurrences of the term “log” with “logs” within a specified rage

Выбор текста в режиме Visual в Vim

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

Чтобы выбирать и редактировать текст, вы можете выбирать и редактировать отдельные символы или выделять и редактировать блоки текста, как показано ниже:

1. Переместите курсор в начало файла (команда gg) и нажмите v, чтобы активировать визуальный режим, как показано ниже.

Entering visual mode

2. Нажмите $, чтобы переместить курсор в конец строки. Поскольку вы находитесь в визуальном режиме, команда выделит строку текста.

Highlighting a line of text

3. Теперь выполните действие копирования и вставки следующим образом:

  • Нажмите y, чтобы скопировать выделенный текст в регистр Vim.
  • Нажмите G$, чтобы переместить курсор в конец последней строки в файле.
  • Нажмите p, чтобы вставить скопированный текст (конкретно после курсора).
    Обратите внимание, что команда p отличается от комбинаций клавиш для вставки текста (Ctrl+Shift+V или Shift+Insert). Поскольку вы копируете текст с помощью команды y, текст сохраняется в регистре Vim, и команда p вставляет текст из регистра.
Copying and pasting a line of text after the cursor
Copying and pasting a line of text at the cursor’s position

4. Отмените предыдущее действие (u), переместите курсор в начало файла (gg) и нажмите V (Ctrl+V), чтобы войти в режим визуальных строк.

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

Entering visual line mode

5. Используйте клавишу вниз, чтобы выбрать символы с начала файла до строки Протокол 2.

Selecting multiple lines of text via visual line mode

6. Нажмите d, чтобы вырезать выбранные несколько строк текста.

Cutting multiple lines of text

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

  • Перейдите на последнюю строку в файле (G) и создайте новую строку ниже (o).
  • Возвращайтесь в режим команд (Esc) и вставьте текст (p).
Pasting multiple lines of text

Заключение

Поздравляем! Вы успешно освоили сложные просторы Vim для Linux, открыв сокровищницу мудрости редактирования текста на пути. От создания и редактирования файлов до овладения искусством визуального режима, вы стали настоящим виртуозом Vim.

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

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

Source:
https://adamtheautomator.com/vim-for-linux/