решение нестандартных проблем и не только

Блог нашего Дата-центра

делимся информацией и опытом в решении нерядовых задач

Редактор VIM - Как выйти и другие полезные команды.

Редактор VIM - Как выйти и другие полезные команды.

Статья о всемирно известном редакторе VIM. В данной статье, мы научимся правильно выходить из этого редактора, а также познакомимся с основным набором его команд. Многие новички, открыв файл этим редактором, в ужасе и панике не могут сориентироваться где и что находится. У многих пользователей, вызывает затруднение даже такая простая задача как банальный выход из этого редактора. Мы поможем разобраться с этим и другими проблемами, которые возникают у новичков.

Учимся выходить из VIM

На сайте stackoverflow.com вопрос «How to exit the vim editor» набрал уже почти 2 000 000 просмотров, и вопрос с каждым годом всё набирает популярность. Не откладывая вопрос в долгий ящик, расскажу сразу, как выйти из vim:

Нажимаем Esc -> затем shift+: (двоеточие) -> q -> ! (восклицательный знак) -> Enter

Ура, vim закрылся!

Полезные команды VIM

Теперь рассмотрим наши действия более подробно. Начать стоит с того, что в vim есть 3 режима работы:

  • Режим команд
  • Режим редактирования
  • Визуальный режим

Режим команд

В этом режиме нельзя в окне редактора вводить текст, а все кнопки клавиатуры vim воспринимает как команды управления. Некоторые команды отображаются в левом нижнем углу редактора, и их можно редактировать. Выполнение команды - Enter. Как пример команды можно привести :q - выход, :wq - выход с сохранением, :q! - выход без сохранения. Также есть множество других полезных команд, о которых ниже.

Переход в этот режим всегда осуществляется кнопкой Esc на клавиатуре

Режим редактирования

Для перехода к вводу текста из командного режима (переход в режим редактирования) мы можем сделать клавишей Insert или просто i. При этом в нижнем левом углу у нас появится -- ВСТАВКА -- или -- INSERT --, в зависимости от настроек языка редактора vim. После этого мы можем писать или править текст.

В этом режиме есть дополнительный режим: если мы еще раз нажмем Insert, текст в левом нижнем углу изменится на -- ЗАМЕНА -- (или -- REPLACE --), и набираемый текст будет замещать старый.

Визуальный режим

Для перехода в этот режим нужно нажать Esc (переходим в режим команд) и v (или Ctrl+v), внизу появится сообщение -- ВИЗУАЛЬНЫЙ РЕЖИМ -- (-- VISUAL --). Этот режим служит для выделения, копирования, вырезания, вставки текста и другими удобными инструментами. Причем v - посимвольное выделение, V (Shift+V) - построчное выделение, Ctrl+Shift+v - блочное выделение

Рассмотрим более подробно, в чем сила редактора vim и его удобство

В качестве примера вспомним творчество великого поэта Александра Сергеевича Пушкина:

vim command cmd 1
Редактирование

Тут мы видим окно vim, сейчас открыто в командном режиме (указания режимов в левом нижнем углу нет), в правом нижнем углу мы видим текст: 22,21-12 60%

  • 22 - текущая строка;
  • 21 - текущий байт в строке (т.к. у нас UTF-8 и русские буквы, то каждый символ занимает 2 байта);
  • 12 - текущая позиция символа под курсором;
  • 60% - какая часть текста отображается в окне. Если мы промотаем текст вверх - у нас будет там надпись "Наверху", если промотаем вниз и дальше проматывать будет некуда - будет отображено "Внизу";

Что мы можем сделать в данный момент с текстом?

  • Перейти на конткретную строку :20 - переход на 20ю строку текста. :1 - переход на первую строку текста. :$ - переход на последнюю строку;
  • Поиск по regexp: /regexp, дальше можно перемещаться по найденным элементам, n - вперед, N (Shift+n) - назад.
vim command cmd 2

На скриншоте видно, что мы искали слово "Там" в начале строки (^)

  • Поиск по шаблону: мы можем подвести курсор к любому слову, и нажать * (Shift+8), будут найдены все аналогичные слова. По ним можно перемещаться с помощью n и N.
  • Замена текста. Шаблон команды для замены: :%s/Шаблон поиска/Шаблон замены/Модификаторы. Например, мы хотим по всему тексту поменять "Там" на "Тут". Команда будет: :%s/Там/Тут/. Результат на картинке:
vim command cmd 3

Модификаторы аналогичны модификаторам команды sed, например i - поиск без учета регистра, g - глобальный поиск по строке (без этого модификатора действия будут завершены на первом найденном совпадении). Также в замене можно указать номера строк, в пределах которых эту замену нужно произвести. :1,10s/Там/Тут.

vim command cmd 4

Тут мы сделали замену только с 1 по 10 строку в тексте, остальные строки незатронуты. Также вместо одной из строк можно указать ., в этом случае вместо точки будет подставлена строка, на которой в данный момент находится курсор

  • Отмена наших изменений. u - отменить последнее действие, можно выполнять несколько раз.
  • Если сделали лишнюю отмену, есть замечательная команда :redo, которая повторит последнее отмененное действие.
  • Удалить строку: dd - будет удалена одна строка под курсором. 5dd - удалить 5 строк от курсора и ниже (и так далее).
  • Скопировать строку в буфер для дальнейшей вставки yy или Y (Shift+y).
  • Вставить строку из буфера: p - под курсором, P (Shift+p) - над курсором.
  • Убрать перенос строки между строками: J (Shift+j). Очень полезно, когда в длинной строке нужно убрать перенос и очень не хочется перемещаться курсором к переносу строки.

Навигация

Оригинальный редактор vi в старых версиях также имел одну особенность: перемещение по тексту курсора возможно было только в режиме команд, и осуществлялось клавишами:

  • h - влево
  • j - вниз
  • k - вверх
  • l - вправо

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

  • w - перейти к следующему слову
  • W - перейти к следующему слову, игнорируя любую пунктуацию
  • e - перейти к концу следующего слова
  • E - перейти к концу следующего слова, игнорируя любую пунктуацию
  • b - к предыдущему слову
  • B - к предыдущему слову, игнорируя пунктуацию
  • H - к первой строке экрана
  • L - к последней строке экрана
  • M - к середине экрана

Сохранение, выход и отмена

Самое интересное оставим на конец первой части нашей статьи. Кроме написанного в начале статьи способа есть и другие способы выйти из редактора (все выполняются из командного режима):

  • ZZ (Shift + z + z) - записать и выйти;
  • ZQ (Shift + z + q) - выйти без сохранения;
  • :w - сохранить текущий редактируемый файл;
  • :w! - сохранить во что бы то ни стало (например, когда вы открыли vim без sudo, команда :w! позволит всё равно сохранить файл. Если, конечно, у вас есть права на sudo);
  • :q - выйти из редактора. Если есть несохраненные изменения, редактор не позволит сделать выход;
  • :q! - выйти из редактора во что бы то ни стало (все несохраненные изменения будут утеряны);
  • :wq - сохранить и выйти;
  • :w filename - сохранить файл под именем filename.

Это далеко не полный список возможностей редактора vim, тут мы не затронули визуальный режим и многие (МНОГИЕ) команды, которые есть в нем. При должном знании команд редактора vim им можно пользоваться практически как полноценным IDE, особенно с учетом того, что в современных версиях редактора есть и подсветка синтаксиса, и автоотступы, и многое другое.

Эта статья полностью, от и до, была написана в редакторе vim версии 2:8.0.1842-1.

   20.11.2018 |
Рейтинг:
(0)
Автор статьи:
Гончаров Владимир Сергеевич ©