Консольный текстовый редактор Vi и его основные команды

6
77

Сегодня я хочу немного рассказать о моем любимом текстовом редакторе под *nix системы и перечислить основные Vi команды. Этот редактор наиболее популярен у программистов, работающих в операционной системе GNU/Linux, их привлекает не только подсветка программного кода и прочие возможности этого редактора. Предпочтения к таким редакторам как Vi/Vim/Gvim, Emacs и Midnight Commander Editor складывались в том числе и исторически.

Традиционно эти редакторы вызывали уважение у многих пользователей и эти положительные отзывы влияли на новичков в мире Linux при выборе программы для работы с текстовыми данными. Да, это консольный редактор, но при всем разнообразии современных IDE, часто чересчур перегруженных дополнительным функционалом программ для разработки приложений, популярность Vi не уменьшается.

Редакторы Vi, Vim, и Gvim — это родственная группа программ, но это не одно и то же. Текстовый редактор Vi, а также его улучшенный аналог Vim является консольным редактором, а для тех кто привык работать в графической среде существует Gvim. Есть версия Vim в исполнении и под Windows.

команды редактора vi

Вот пример открытия файла в этом редакторе с определенными параметрами:

vi [параметры] [имя_файла]
При вводе команды квадратные скобки [ ] — не нужны!

-d — просмотр различий между файлами (допускается до трех имен файлов)
-m — открыть файл в режиме «защита от записи» (запрет на внесение изменений)
-r — открыть файл в режиме «только для чтения» (запрет на внесение изменений, но при указании специальной команды файл сохранить все-таки можно)


resume penguin

Vi отличается от других редакторов своеобразным разделением на два режима работы: режим ввода команды (режим по-умолчанию) и режим набора текста (режим вставки). В режиме ввода команды можно, собственно, вводить и выполнять различные команды редактора Vi, перемещаться по тексту, удалять отдельные символы и целые строки текста. Со вторым режимом набора текста, думаю, все понятно уже из названия. Если запустить Vi без указания имени файла, то откроется режим по-умолчанию — режим ввода команды. Нажав на I — вы перейдете в режим набора текста. В этом режиме нельзя перемещаться по тексту и удалять символы или строки! Можно только набирать текст и переходить на новую строку нажатием ENTER. Символ тильды (~) в начале строки означает, что этой строки нет. Сплошные тильды — конец файла. А вот вернуться обратно в режим ввода команд, можно нажав ESC. И только в этом режиме мы получаем возможность навигации по тексту — H, J, K, L (когда писали Vi еще не было стандартного курсора со стрелочками). Активный в данный момент символ можно удалить, если нажать на X. Стандартные кнопки удаления — не работают. Если возникла необходимость изменить какой-то отрывок текста, то нужно нажать на I и режим редактирования предложит ввести новый текст с той позиции на которой вы нажимали на I.


Вспоминается старый глюк MS Word где изменения вносимые в текст не добавлялись к существующим, а заменяли собой (перезаписывали) последующие символы. Этот глюк снимался только после закрытия/открытия файла. А не артефакт ли это?) Вопрос о заимствовании программного кода — к знатокам, но многие текстовые редакторы использовали и используют программный код Vi, это общеизвестный факт.

Многим такой подход к редактированию текста кажется неудобным. С Vim — все проще. В командном режиме работает стандартный курсор и стандартные клавиши удаления DEL и BACKSPACE. Также Vim умеет менять режимы на лету, в зависимости от ваших действий. В настоящее время чаще используется Vim. Например, в моем дистрибутиве по-умолчанию создан alias, который при выполнении команды vi в консоли вызывает редактор vim. Иными словами, в современных дистрибутивах GNU/Linux почти всегда будет использоваться именно редактор Vim.

Рассмотрим наиболее важные для первого ознакомления с этими редакторами команды:

:w[!] [имя_файла] — это команда сохранения файла.
При вводе команды квадратные скобки [ ] — не нужны! Последнее предупреждение)

Команда сохранит изменения активного файла. Но если вы открыли текстовый редактор Vi или Vim без указания имени файла и набрали текст то для того, чтобы сохранить этот текст в файл, вам надо ввести его имя после команды :w. Команда вида :w! — записывает файл даже в том случае, если одноименный файл уже есть в файловой системе, команда запишет изменения в файл даже если при открытии был указан параметр «только для чтения» (-r).

:saveas[!] [имя_файла] — данная команда сохраняет файл под другим именем.

:q[!] — закрытие текущего файла, если их открыто несколько и выход из программы, если файл был один. C :q! файл закроется даже если он был изменен или вообще еще не создан (просто набранный текст). А вот команда :qa[!] закроет программу даже если в ней открыто несколько файлов, в которые были внесены изменения.

DD — команда, которая удаляет активную строку текста, при этом она копирует ее в память. Команда P — это вставка удаленного текста, который сохранился в памяти. Так и осуществляется в Vi/Vim перенос текста.

Если нужно выделить отдельный отрывок текста, то в командном режиме нужно переместить курсор на начало отрывка, потом нажать V и выделить фрагмент. Команда X или D — удалит этот выделенный текст, при этом текст сохранится в памяти и его можно будет вставить в другое место.

А как скопировать нужный фрагмент текста без удаления? Для этого после выделения текста нужно нажать команду Y (или YY, если нужно скопировать отдельную строку), после чего командой P можно вставить предварительно скопированный фрагмент текста.

Лично я часто пользуюсь еще одной командой :r [имя_файла]. Она позволяет вставить в конец активного (открытого) файла содержимое указанного в команде файла.

Надеюсь, вам пригодится моя шпаргалка по основным командам консольного текстового редактора Vi, но возможности этого редактора велики и, наверняка, вам понадобятся команды поиска строки, перемещения по «закладкам» (списку файлов открытых в Vi). Вот на этом ресурсе можно найти объемный список команд Vim, Emacs и Nano.

6 КОММЕНТАРИИ

  1. Когда запустил VI первый раз, я вообще не понял, что произошло, но чуть-чуть попользовавшись и почитав я понял, что это чудо программистской мысли, только к нему надо привыкнуть. Довольно удобно сделано с 2 режимами:вводи и командным режимом. Я не спорю, это сложный редактор, но если есть инструкция (или хотя бы данная статья) и желание, то можно им овладеть, и даже полюбить. Буду ждать ещё таких описаний.

  2. Помню, как впервые я решил попробовать поднять Apache на Linux. Всё установил, и пришло время изменить конфигурации Апача, вот тут и состоялось первое знакомство с редактором vi. Мне сразу стало ясно, что не всё так просто, я потратил какое-то время на то чтобы разобраться с редактором, никогда не думал, что могут возникнуть сложности. Кода же у меня всё получилось, я решил, что больше никогда не буду пользоваться этим редактором. Но получилось наоборот, я так привык к vi, что другие редакторы, мня уже не устраивали. Впоследствии я всё-таки перешёл на vim им и пользуюсь до сих пор.

  3. VI рaботает в кoмандном рeжиме и рeжиме ввoда. Срaзу пoсле зaпуска рeдактор нaходится в кoмандном рeжиме, в кoтором мoжно пeремещаться пo тeксту, выпoлнять кoпирование и встaвку тeкста из буфeра. Рeжим ввoда включaется пo кoмандам встaвки, дoполнения, замeны. Нaжатие [ESC] вoзвращает рeдактор в кoмандный рeжим. Большинcтво кoманд выпoлняется срaзу пoсле нaжатия клaвиши.

  4. Побольше бы таких описаний программ на Uniх-подобные системы. Хочется перейти совсем( хотя бы просто попробовать) линукс, но не знаю как пользоваться специфическими программами. Можно смело записать в актив, что знаю как пользоваться хоть чем-то на UNIХ-системах. Я вижу будущее в использовании свободных систем и у них огромнейшее будущее. Надо быть готовым к работе на таких системах

  5. Однозначно, что система Unix среди пользователей считается одной из сложных в освоении, исключением не стал и текстовый редактор Vi. На мой взгляд, все слишком закручено. Но если приложить самую малость усилий и терпения — то этот консольный редактор откроет массу полезных возможностей. Кстати, хорошо,что не обделили пользователей MS Windows и продублировали код под данную систему.

  6. При первом знакомстве с редактором vi, после запуска (# vi), появляется мысль: — «Чё, за фигня!?». Но если проявить немного выдержки, терпения и прилежания, обратиться к мануалу, внимательно прочитать основные приемы работы, то понимаешь для некоторых задач это очень удобный инструмент. (А лучше держать мануал под рукой в распечатанном виде, чтоб не переключать терминалы.) Так, например лучше сразу запускать редактор с именем создаваемого файла в текущей директории (# vi mytest.txt).

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь