11 апреля, 2021

Введение в VIM — текстовый редактор Unix, который должен знать каждый хакер

Будучи пентестерами и хакерами, нам очень часто приходится работать с текстовыми файлами, такими как логи, вордлисты (общеупотребительные пароли, например), конфигурационные файлы. Многое мы будем делать на нашей собственной машине, где есть доступ к любому редактору, который нам нравится. Все остальное мы должны делать на удаленных машинах, где инструменты для редактирования будут сильно ограничены. Если установлен nano, то у нас есть простой в использовании текстовый редактор, правда не очень мощный.

К счастью, в большинстве систем установлен либо Vi, либо Vim. Vi означает visual (визуальный) и представляет собой очень мощный и быстрый модальный текстовый редактор, который работает или в режиме вставки (где вы печатаете внутри документа), или в обычном режиме (где вы вводите команды для управления редактором). Переключение между этими режимами (сеансами) делается по нажатию клавиши, так что повезло тем из вас, кто не любит убирать руки с клавиатуры.

Vim означает Vi Improved («Vi усовершенствованный») и обладает всеми функциями Vi, но у него есть отличные дополнения, которые помогают редактировать исходный код. У него также есть комплексная справочная система и множество опций настройки. Многие системы ставят символьные ссылки Vi на Vim, например, так делает macOS. Мы используем Vim для редактирования всех файлов на удаленных машинах.

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

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

Читать также:  Основы Linux. Часть 15 (Создание шифрованного туннеля к MySQL)

Настройка Vim

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

Шаг 1. Откройте терминал

Откройте эмулятор терминала, например, iTerm, и убедитесь, что вы находитесь в своей домашней директории, с помощью команды:

pwd

Терминал должен показать, что вы находитесь в /Users/$<ваше_имя_пользователя>. Если это не так, то введите команду:

cd

Эта команда переведет вас в домашнюю директорию.

Шаг 2. Редактирование файла

Файл .vimrc содержит вашу конфигурацию Vim. По мере того, как вы будете использовать Vim, у вас будет все больше и больше информации о настройках Vim в файле .vimrc. Мы храним копию нашего сложного .vimrc в специальном репозитории на GitHub. Когда вы используете Vim на удаленной машине в ситуации, когда вы не являетесь авторизованным пользователем, то у вас нет пользовательского .vimrc, поэтому важно быть знакомым с основным поведением Vim’а.

В терминале введите команду:

vim .vimrc

Эта команда укажет Vim’у открыть файл .vimrc. Этого файла может и не быть. Как это случилось в нашем случае.

Как вы можете видеть, это пустой документ. Символы «~» просто указывают пустые строки.

Vim запускается в командном режиме (command mode) или, как его еще называют, в обычном режиме (normal mode), а не в режиме вставки (insert mode). Это означает, что нажатые клавиши будут интерпретироваться как команды Vim’а, а не ввод данных. Чтобы выйти из режима команд, вам нужно нажать на клавиатуре клавишу ‘i’. Эта команда включает режим вставки (Insert). Если бы вы нажали вместо ‘i’ клавишу ‘a’, то Vim переместил бы курсор на один знак влево и начал бы режим вставки оттуда.

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

syntax on
 set wrapmargin=8
 set number

syntax on включает встроенную подсветку синтаксиса для многих языков программирования и файлов конфигурации.
set wrapmargin=8 дает нам 8-символьный буфер до конца терминала и делает экран более четким.
set number просто включает нумерацию строк.

Читать также:  Мошенники рассылают письма от имени популярного хостинг провайдера

Шаг 3. Сохраните ваши изменения и выйдите

Теперь нам нужно нажать клавишу Esc, чтобы изменить режим Vim обратно на командный. Когда вы находитесь в командном режиме, то подсказка-текст «INSERT» в левом нижнем углу экрана исчезает.

Чтобы записать (write, w) изменения на диск и выйти (quit, q), мы должны просто ввести следующую команду, включая символ двоеточия ‘:’

:wq

Теперь у нас есть файл .vimrc, и в следующий раз, когда мы что-то отредактируем в Vim, мы увидим те изменения, которые сейчас сделали.

Это выглядит намного лучше.

Перемещение в командном режиме

Когда мы находимся в командном режиме, мы можем быстро перемещаться по документу. Курсор перемещается при нажатии клавиш со стрелками, а также h, j, k, l — эти клавиши работают так же, как клавиши со стрелками. Если вы когда-нибудь играли в Crawl, то вам уже знакомо такое перемещение.

Некоторые дополнительные клавиши перемещения:

  • e переместит курсор вперед до конца слова
  • w переместит курсор вперед к началу слова
  • b переместит курсор назад в начало слова
  • $ переместит курсор в конец строки
  • (ноль) переместит курсор в начало строки
  • G переместит курсор в конец файла
  • gg переместит курсор в начало файла

Конечно, есть гораздо больше способов передвигаться по файлу, но эти клавиши охватывают большинство случаев использования.

Поиск по файлу

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

Для простого поиска мы используем /, а затем строку. Например, /password. Если мы в конце файла, то нужно использовать знак вопроса, например ?password, для поиска с конца к началу.
Команда n повторит последний поиск по направлению к концу файла (вперед), а команда N повторит последний поиск в обратном направлении (к началу).

Читать также:  Установка ПО Wi-Fi Jammer при помощи баш-скрипта Airgeddon

Для поиска и замены мы используем синтаксис :%s/что_ищем/на_что_меняем/. Не забудьте ввести двоеточие.

  • :%s/tcpdump/ls/ будет искать по всему файлу и заменять каждое вхождение слова tcpdump на ls.
  • :%s/myPrivEscalationScript/ls/c будет искать по всему файлу и заменять каждое вхождение слова myPrivEscalationScript на ls, только если вы подтвердите его замену.

Сохранение и выход

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

  • :w сохраняет файл
  • :wq сохранение файла и выход
  • :q! выйдет из редактора, не сохраняя изменения
  • :w someFileName сохранит изменения в файл с именем someFileName

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

:!command

Это выполнит любую команду, которую мы указываем после !. Это может быть шел :!bash, из которой нам нужно будет выйти, чтобы вернуться в Vim, или мы можем написать :!ls /etc чтобы просмотреть содержимое каталога /etc.

Эта статья должна помочь вам начать

Как мы сказали во введении, Vim — очень мощный инструмент, работе с которым посвящены уже целые книги. Однако с помощью этих основных команд вы сможете просматривать файлы, манипулировать ими и выходить из редактора. Мы настоятельно вам рекомендуем прорабатывать руководства по работе с Vim от издательства O’Reilly до тех пор, пока вы не начнете чувствовать себя в Vim уверенно. Используйте это:

  • «Редакторы Vi и Vim. Карманный справочник: поддержка каждой задачи редактирования текста»
  • «Изучение редакторов Vi и Vim: обработка текста с максимальной скоростью и мощностью»

Как только вы в полной мере овладеете Vim, вы сможете буквально летать по файлам, как если бы редактирование файлов работало от одних ваших мыслей.

Добавить комментарий