Перевод: Анна Давыдова
Источник: wonderhowto.com
Введение в Vim, Редактор текста Unix, с которым должен быть знаком каждый хакер
Как пентестерам и хакерам, нам часто предстоит работать с текстами – со списками, файлами настроек и т.д. Большинство из этого мы будем делать на наших машинах, где у нас есть доступ к любым возможным редакторам. Остальное нам предстоит сделать на удаленных машинах, где инструменты для редактирования будут ограничены. Если установлен nano, то нам доступен легкий в использовании терминал текстового редактора, но он не является достаточно мощным. К счастью, на большинстве систем будут установлены Vi или Vim. Vi означает визуальный, и это мощный, быстрый модальный текстовый редактор, который работает в любом режиме вставки (где вы печатаете внутри документа) или в нормальном режиме (где вы вводите команды для сессии). Переключиться между этими сессиями также просто, как нажать на клавишу, и это отлично подходит для тех из вас кто не любит убирать руки с клавиатуры.
Vim, что означает Vi IMproved, обладает всеми свойствами Vi с некоторыми замечательными дополнениями, которые помогают в редактировании исходного кода. Тут также есть всеобъемлющая система помощи и доступны множество опций настройки. Многие системы symlink Vi to Vim, включая macOS. Лично я использую Vim для всех операций редактирования на удаленных хостах.
Vim может показаться сложным и замысловатой для освоения, но не переживайте – с этим сталкиваются все, кто начинает использовать Vim. Хитрость в том, чтобы продолжать упорно осваивать его. Чем дольше вы используете Vim, тем лучше вы его освоите – вплоть до того момента, когда вам не нужно будет отрывать руки от клавиатуры.
Это руководство будет вступительным. Существует множество книг, посвященных Vi/Vim, но я хотел бы быть уверен, что вы знаете основы и сможете в дальнейшем использовать их в работе.
Настраиваем Vim
Для начала нам нужно настроить Vim. Т.к. мы в основном будем работать с кодом или конфигурациями, нам будет необходима нумерация строк и выделение синтаксических элементов. Vim может быть настроен с помощью редактирования файла .vimrc в вашей домашней директории.
Step 1 Откройте терминал
Откройте эмулятор терминала, такой как iTerm, и убедитесь, что вы находитесь в своей домашней директории, используя команду:
pwd
Терминал должен показать, что вы находитесь в /Users/$yourusername. Если этого не произойдет, то выполните команду:
cd
Это поменяет текущую директорию на вашу домашнюю.
Step 2 Отредактируйте файл
Ваш .vimrc файл является местом, где хранятся конфигурации Vim. По мере использования Vim, в .vimrc файле будет появляться все больше пользовательских настроек. Я храню копию своего .vimrc на GitHub, но в общем, пока вы используете Vim на удаленном хосте, и не являетесь авторизированным пользователем, у вас не будет пользовательского .vimrc, поэтому очень важно быть знакомым с базовыми конфигурациями.
В терминале введите команду:
vim .vimrc
Это скажет Vim открыть файл .vimrc . Этого файла может не существовать. В моем случае, я пока не нашел .vimrc .
Как вы можете видеть это пустой документ. Символ «~ » обозначает пустые строки.
Vim запускается в командном режиме (так называемый нормальный режим), не в режиме вставки. Это означает, что последующие нажатия клавиш будут интерпретироваться как команды для Vim, а не как ввод данных. Для того чтобы выйти из командного режима, вам необходимо нажать клавишу i. Это делает доступным режим вставки. Если вы нажмете a, то Vim переместит курсор на один пробел влево и запустит режим вставки там.
В левом нижнем углу, мы видим, что мы находимся в режиме вставки. Теперь мы можем печатать в нашей конфигурации. Вам понадобятся следующие строки в файле:
- syntax on
- set wrapmargin=8
- set number
Syntax on делает доступным встроенное выделение синтаксических элементов для многих языков программирования и файлов конфигурации. Set wrapmargin=8 дает нам 8-ми символьный буфер перед концом терминала и делает экран более четким.
Set number просто устанавливает нумерацию строчек.
Step 3 Сохраните ваши изменения и выйдите
Сейчас нам нужно будет нажать клавишу esc, чтобы изменить режим Vim обратно на командный. Когда вы находитесь в командном режиме, текст «INSERT» в левом нижнем углу экрана должен исчезнуть.
Для того чтобы написать (w) или выйти (q), мы просто используем соответствующие команды, включая символ «:»
:wq
Теперь у нас есть файл .vimrc, и в следующий раз, когда мы отредактируем что-либо в Vim, мы увидим изменения.
Так выглядит намного лучше.
Перемещение в командном режиме
Когда мы находимся в командном режиме, мы можем быстро перемещаться от документа к документу. Клавиши со стрелками будут помогать нам перемещаться по документу, также как и клавиши h, j, k, l, которые в данном случае имеют такие же функции. Если вы когда-нибудь играли в Crawl, вам будет легко освоиться.
Дополнительные клавиши передвижений:
- e переместит вас прямо в конец слова;
- w переместит вас прямо на начало слова;
- b переместит вас обратно в начало слова;
- $ переместит вас в конец строки;
- 0 (ноль) переместит вас в начало строки;
- G переместит вас в конец файла;
- gg переместит вас в начало файла.
Безусловно, есть много других способов перемещаться внутри файла, но приведенные здесь должны удовлетворять в большинстве случаях.
Поиск файла
Часто нам нужно будет искать строки в файле, чаще в конфигурации, но это также может помочь с историей файлов или с чем-либо еще, что мы редактируем. Для этого вам нужно находиться в командном режиме. Если вы не уверены в каком режиме находитесь, нажмите клавишу esc, которая переведет вас в командный режим, если вы еще не находитесь в нем.
- Для простого поиска мы используем / , а потом идет строка. Например, /password . Если бы мы были в конце файла, мы бы использовали ?, так используйте ?password для обратного поиска.
- Команда n повторит последний поиск вперед, а команда N повторит последний обратный поиск.
Для поиска и замены, мы используем :%s/search/replace/ . Вам нужно будет ввести.
- :%s/tcpdump/ls/ будет проводить поиск во всем файле, каждый элемент имеющий tcpdump на ls.
- :%s/myPrivEscalationScript/ls/ c будет проводить поиск во всем файле, каждый элемент только после вашего подтверждения.
Vim также поддерживает регулярные выражения таким же образом, как это делает grep.
Сохранение, Выход & Shell Escaping
Выход из Vim всегда является проблемой для людей, которые только начинают свою деятельность. Для того, чтобы выйти, используйте следующие команды:
- :w запишет файл;
- :wq запишет файл и выйдет из него;
- :q! выйдет из редактора и сбросит все изменения;
- :w someFileName сохранит изменения в файле под названием someFileName.
В некоторых случаях нам может понадобиться выйти в оболочку и просмотреть дерево директории или другие файлы. Для того, чтобы выполнить системную команду в Vim, используйте следующее:
:!command
Формулировка в данном формате выполнит любую команду, которую мы укажем после восклицательного знака. Это может быть оболочка :!bash , которая может быть использована для выхода и возврата в Vim, или :!ls /etc , которая используется, чтобы просмотреть содержание директории /etc.
Это должно помочь вам начать
Эта статья затрагивает очень поверхностную информацию. Как я сказал во вступлении, Vim представляет собой очень мощный инструмент, с огромным количеством посвященных ему книг. Однако, зная эти базовые команды, вы сможете просматривать файлы, управлять ими и выходить из редактора.