Опытные пользователи Linux часто используют терминал, потому что так можно намного быстрее выполнить необходимые действия. Во время настройки системы нам довольно часто приходится редактировать различные файлы. Это могут быть настройки программ, какие-нибудь данные или обычные текстовые файлы.
В операционной системе Linux есть несколько текстовых редакторов, которые работают в терминале. Чаще всего новички используют редактор nano, но если вы заметили на нашем сайте во всех статьях используется текстовый редактор vi. Nano неудобный, и недостаточно функционален. Я сознательно не пишу в своих статьях о nano. Есть намного лучший текстовый редактор, это редактор vi. Здесь поддерживается быстрое перемещение по тексту, удобное редактирование, команды для изменения настроек работы, выполнение команд терминала из редактора, а также плагины для расширения функциональности. Но он немного сложный для новичков и очень непривычный.
В этой статье мы рассмотрим как пользоваться vim, рассмотрим основы работы с этим редактором, а также его основные команды.
Содержание статьи:
Минимальные основы
На данный момент существует две версии редактора - vi и vim. Vim расшифровывается как Vi Improved, улучшенный vi. Это новая версия, которая принесла очень много улучшений. В большинстве современных дистрибутивов используется именно она. Поэтому если я буду писать vi, это значит, что я предполагаю использование vim.
Текстовый редактор Vim может работать в двух режимах. Это и есть его главная особенность. Первый режим, который используется по умолчанию при открытии редактора - это командный. В этом режиме вы можете вводить команды vi, а также использовать символьные клавиши для управления редактором. Второй режим - обычное редактирование текста, он работает так же как и редактирование текста в nano. Для переключения в командный режим используется клавиша Esc. Для переключения в режим редактирования - клавиша i. Если вас интересует только как в редакторе vi сохранить и выйти, листайте вниз, но если вы хотите узнать как пользоваться текстовым редактором vim, эта статья для вас.
Перед тем как идти дальше я бы посоветовал вам пройти курс обучения встроенный в редакторе. Выполнение всех обучающих заданий займет 25-30 минут. Но после того как вы освоите все что там написано, эта статья поможет вам закрепить материал. Дело в том, что команд и сочетаний клавиш у vim очень много и запомнить их все без практики невозможно. Для запуска обучения наберите:
vimtutor
Но делать это сейчас необязательно, в этой статье есть вся необходимая базовая информация и после ее прочтения вы уже сможете уверенно пользоваться vim, а обучение пройти чуть позже.
Как использовать редактор Vim
Начнем мы, как обычно с запуска программы, а также опций, которые ей можно передать. Синтаксис Vim очень прост:
$ vim опции имя_файла
Или:
$ vi опции имя_файла
Простой запуск vim без указания имени файла приведет к созданию пустого файла. А теперь давайте рассмотрим основные опции запуска:
- +номер - переместить курсор к указной строке после запуска.
- +/шаблон - выполнить поиск по шаблону и переместить курсор к первому вхождению
- "+команда" - выполнить команду после запуска программы
- -b - двоичный режим, для редактирования исполняемых файлов.
- -d - режим поиска различий в файлах, нужно указать несколько файлов для открытия.
- -g - графический режим.
- -n - не использовать автосохранение для восстановления файла при сбое.
- -R - режим только для чтения.
- -w - сохранить все действия в файл.
- -x - шифровать файл при записи.
- -C - режим совместимости с Vi.
Круто, правда? Но это только начало. Опции ничего по сравнению с командами редактора.
Командный режим Vim
В командном режиме вы можете перемещаться по редактируемому тексту и выполнять действия над ним с помощью буквенных клавиш. Именно этот режим открывается по умолчанию при старте редактора. Здесь вы будете использовать краткие команды, перед которыми может устанавливаться номер, чтобы повторить команду несколько раз. Для начинающих может быть поначалу очень запутанно то, что в командном режиме символы интерпретируются как команды.
Для перемещения используются такие команды:
- h - на один символ влево;
- l - на один символ вправо;
- j - на одну строку вниз;
- k - на одну строку вверх;
- w - на слово вправо;
- b - на слово влево;
- H - перейти в низ экрана;
- G - перейти в конец файла;
Можете запустить редактор и поэкспериментировать, чтобы было легче понять как это работает. Если перед тем как нажать кнопку буквы нажать цифру, то эта команда будет повторена несколько раз. Например, 3j переведет курсор на три строки вверх.
Для переключения в режим редактирования используются такие команды:
- i - вставить текст с позиции курсора, символ под курсором будет заменен;
- I - вставить текст в начало строки;
- a - добавить текст начиная от позиции курсора;
- o - вставить новую строку после этой и начать редактирование;
- O - вставить новую строку перед этой и начать редактирование;
- r - заменить текущий символ;
- R - заменить несколько символов.
К этим командам тоже применимы символы повторения. Поэкспериментируйте, можно получить интересный и не совсем ожиданный результат.
Более сложные команды редактирования текста. Вы можете править текст не только в обычном режиме, но и в командном с помощью команд. Для этого применяются такие команды:
- d - удалить символ;
- dd - удалить всю строку;
- D - удалить символы начиная от курсора и до конца строки;
- y - копировать символ;
- yy или Y - скопировать всю строку;
- v - выделить текст;
Эти команды редактора vim работают немного по-другому после нажатия одной из них ничего не произойдет. Мы еще можем задать количество символов, к которым будет применена команда и направление, с помощью кнопок перемещения курсора. Например, чтобы удалить два символа справа от курсора нажмите d3l, а чтобы удалить три строки вниз - d3j. Команды yy, dd, Y - не что иное, как сокращения.
Кроме этих команд, есть еще несколько полезных, которые мы не можем не рассмотреть:
- p - вставить после позиции курсора;
P - вставить перед позицией курсора; - u - отменить последнее действие;
- . - повторить еще раз последнее действие;
- U - отменить последнее действие в текущей строке;
- /шаблон - искать вхождение;
- %s/шаблон/заменить - заменить первое слово на второе;
- n - продолжить поиск вперед;
- N - продолжить поиск назад;
С основными командами разобрались. Но у нас есть еще командная строка Vim, которая сама по себе тоже представляет огромный интерес.
Командная строка Vim
Командная строка Vim запускается в командном режиме нажатием двоеточия - ":". Здесь доступны команды для сохранения файла и выхода из редактора, настройки внешнего вида и взаимодействия с внешней оболочкой. Рассмотрим наиболее часто используемые команды редактора vim:
- :w - сохранить файл;
- :q - закрыть редактор;
- :q! - закрыть редактор без сохранения;
- :e файл - прочитать содержимое файла в позицию курсора;
- :r файл - вставить в содержимое файла в следующую строку;
- :r! - выполнить команду оболочки и вставить ответ в редактор;
- :set переменная=значение - установить значение переменной, например, tabstop=4, или set number, с помощью этой команды можно управлять многими аспектами работы vim.
- :buffers - посмотреть открытые файлы.
Со всеми основами разобрались, и вы теперь использование vim не будет казаться вам таким сложным. Но это еще далеко не все, этот мощный редактор может еще очень многое. Дальше мы рассмотрим несколько примеров использования vim, чтобы вам было легче справиться с новой программой.
Редактирование файла в Vim
Несмотря на то, что из всего вышесказанного можно понять как это делается рассмотрим еще раз. Чтобы открыть файл выполните:
vim имя_файла
Затем, если вы не хотите пока использовать возможности командного режима просто нажмите i, чтобы перейти в режим редактирования. Здесь вы можете редактировать файл так же, как и в nano. После того как завершите нажмите Esc, чтобы перейти в командный режим и наберите :wq. Записать и выйти. Все, готово.
Поиск и замена в Vim
Довольно часто нам нужно найти определенную последовательность в тексте. Текстовый редактор Vim умеет это делать.
Во-первых, если нужно найти символ в строке, нажмите f и наберите нужный символ, курсор будет перемещен к его позиции.
Для поиска по всему файлу используйте команду /. После нее нужно ввести слово, которое нужно найти. Для поиска следующего вхождения используйте n, для предыдущего - N.
Для замены будет использоваться немного другая конструкция:
Двоеточие запускает командную оболочку с командой s для замены. Символ % означает что обрабатывать нужно весь файл, а g значит, что нужно обработать все найденные строки, а не только первую. Чтобы программа спрашивала перед каждой заменой можно добавить в конец строки опцию c.
Одновременное редактирование нескольких файлов
Чтобы открыть несколько файлов, просто передайте их в параметры при запуске программы:
vim файл1 файл2 файл3
Редактор vim linux откроет первый файл, для переключения ко второму используйте команду :n, чтобы вернутся назад :N.
С помощью команды :buffers вы можете посмотреть все открытые файлы, а командой :buffer 3 переключится на третий файл.
Буфер обмена Vim
Текстовый редактор Vim имеет свой буфер обмена. Например, вам нужно скопировать в четыре строки и вставить их в другое место программы, для этого выполните такую последовательность действий:
- Нажмите Esc, чтобы перейти в командный режим;
- Наберите 4yy чтобы скопировать четыре строки;
- Переместите курсор в место где нужно вставить эти строки;
- Нажмите p для вставки.
Также можно использовать выделение vim, чтобы скопировать строки. Выделите текст с помощью v, а затем нажмите y, чтобы скопировать.
Кириллица в Vim
Кириллица в Vim работает превосходно. Но есть одно но, когда включена кириллица в системе, все команды vim не работают, им и не нужно работать, они же не приспособлены для кириллицы.
Но переключать каждый раз раскладку, когда работаете в командном режиме тоже не очень удобно, поэтому открываем файл ~/.vimrc и добавляем туда такие строки:
Теперь раскладка клавиатуры в командном режиме переключается по Ctrl+^ и все команды работают.
Выводы
В этой статье мы рассмотрели как пользоваться текстовым редактором vim. Это еще далеко не все его возможности, но теперь вы можете уверенно обращаться с редактором и забыть о nano. Более подробно о настройке Vim читайте тут. А вы уже пользуетесь Vim? Или другим редактором? Напишите в комментариях!
Еще немного информации по использованию Vim можно почерпнуть из видео:
Как набрать сочетание: " Ctrl+^ " ?
Ctrl+6 или Ctrl+Shift+6, в режиме редактирования.
Благодарю!
С уважением, Роман.
🙂
Тогда это не имеет смысла если на CTRL+SHIFT стоит смена языка
О существовании VIM узнал давно, после перехода на линукс, но начитавшись всяких страшилок про сложность и что этот редактор только для профи, долго не решался попробовать. Но частое упоминание VIM на сайтах и форумах заставило меня разобраться что это за зверь. Да, это не notepad, nano или gedit, это лучший редактор из того что я видел и чем пользовался как в Windows, так и в Linux. Время потраченое на освоения явно стоит результата.
> это лучший редактор из того что я видел и чем пользовался как в Windows, так и в Linux.
Это очень хорошо, что Вы так высоко оценили этот редактор.
Вы знаете, сейчас в гос.структурах идет гонение на продукты фирмы Микрософт.
Как Вы считаете, с высоты Вашего понимания, можно рекомендовать этот, как Вы пишите, лучший редактор в Windows, как замену Ворду?
Этот редактор можно рекомендовать на замену блокноту, Notepad++ или SublimeText. А на замену Word надо рекомендовать текстовый процессор, например, LaTeX, LibreOffice или WPS Office. Это разные задачи.
Вы просто не пользуетесь notepad++ с кучей плагинов, подстроенных под себя. Особенно - не пользуетесь настроенными макросами в нём. В vim их нет и называть ЭТО "лучшим"... Явный субъектив, психологическая компенсация жалости на потраченное время ))
Вы просто не пользуетесь vim с кучей плагинов, подстроенных под себя. Особенно - не пользуетесь настраенными макросами в нём. В vim они есть.
Впредь не пишите на тех. сайтах о вещах в которых не разбираетесь. Явный субъектив.
Возникли проблемы с vim, не могу понять как набирать :wq , просто набирается текст, когда пытался понять зависла вся система.Я устанавливал Arch Linux, поэтому у меня из-за зависания сбилась вся установка, можете объяснить?
esc сначала нажми
Используйте пожалуйста 'source code pro' или другой подобный шрифт для команд и кода. I (i big) и l (L small) похожи и практически не различимы в используемом вами шрифте.
Меня интересует вопрос: что мешает поставить редактор Nano, и избавиться от VIM ?
просто вот кардинальное удобное решение.
Это кардинально неправильное решение.
Nano удобнее тем, что в нём для сохранения и выхода есть сочетания клавиш, нажимать которые куда быстрее, чем вводить команды. Почему нельзя было реализовать это в Vim?
А чем так принципиально отличается нажатие ctr+Q/S, от нажатия shift+: и затем q/w/wq (и еще кучи вариантов только для сохранения и выхода?). Сдаётся мне, только силой привычки. При этом командный режим куда гибче и позволяет использовать сложные комбинации команд, что в варианте использования сочетаний клавиш занимает больше времени. Например можно указать удаление нескольких конкретных строк, сохранить документ и закрыть его одновременно, что в случае с сочетаниями клавиш несколько более длительный процесс. И это ещё очень простой пример.
Сохранение в вим сочетанием клавиш: ZZ. Просто, правда?
Это кардинально неправильное решение. И объясню почему. Любой другой редактор резко уменьшает расстояние между указательным пальцем и мизинцем в всем известной фигуре "Пальцы веером".
Самый простой ответ - vi есть в любом дистрибутиве linux, даже в роутерах. И не везде есть возможность поставить ту же няньку
ну так это го-на кусок нужно выдирать из любого дистриба и заменять на вменямые редакторы. а поставить что- другое всегда есть возможность так же как мс. и просто выкинуть то устройство где этого нельзя сделать.
самый отстойный редактор всех времен и народов это vi и его клон vim!
Вам здесь не место. Вернитесь на поделие мелкомягких пожалуйста.
А потом после ваших йо-йо(ее) и няней (nano) отлавливаешь тараканов. На собственном опыте: редактировал непойми чем конфигурационный файл. Редактор оставил вместо пустых строк - знак '~' (тильда). Догадайтесь чем закончилось. В итоге час потраченного времени с нервами, чуть не остановил работу офиса.
Это невнимательность человека, а не проблема редактора. Лично я предпочту удобное решение, чем "а мы легких путей не ищем", или "а все остальные недоумки и ламеры". И в итоге после работы пройду пить пиво, или поеду на отдых, а не сидеть и красноглазить за ПК, и мнить себя офигенным атмином.
Поддерживаю такой подход на 100%!!! Немного не согласен по вопросу пива, принципиально не употребляю этот "напиток", но можно считать это аллегорией :-))
Я вимом пользуюсь довольно давно. Тем не менее, для меня всё ещё загадкой остаётся одна тонкость.
Предположим, я нахожусь в режиме V и при помощи $ я ухожу в конец строки, перехожу в режим вставки при помощи I и если я начинаю вводить текст, то он вводится не с последней позиции в строке, а с предпоследней.
Внимание, вопрос знатокам: как в ввиме в режиме вставки перейти на символ вправо, влево и т.п
В таких случаях надо переходить в режим вставки клавишей a, а не i.
не используя курсорные клавиши, пользуясь hjkl? Через Ctrl+O очень неудобно.
В статье неточность:
> d - удалить символ;
> y - копировать символ;
> v - выделить текст;
Все эти команды требуют указание диапазона (или перемещения), например
vw - выделить до начала следующего слова; y2} - копировать до конца абзаца и последующий абзац тоже; - dG - выделить до последней строки документа
Выделил ы помощью буквы v первый знак, с него и начинается выделение. А потом стрелкой продолжаешь выделение столько, сколько тебе надо выделить. Просто.
я не долго пользуюсь вимом, но по-моему там нет никаких ошибок:
> d - удалить символ;
> y - копировать символ;
> v - выделить текст;
при нажатии y без указания диапазона копируется только 1 символ, d же удаляет 1 символ.
При необходимости же произвести это со словом/словами и абзацами нам придется добавлять w, 2, G и тд.
Видео не соответствует статье!
Здравствуйте. А, поподробнее с файлом ~/.vimrc?
Создаёте файл в домашнем каталоге ~/ с именем .vimrc и туда записываете свои настройки (в данном посте для работы с кириллицей)
"Например, 3j переведет курсор на три строки вверх." - только не вверх, а вниз 🙂
Касаемо видео с MyPhoneExplorer, не надо Wine, лучше эмуляцию Винды (ХР).
Гoвнище полное! Пришлось им пользоваться в рековеримод
Да. Редактор vim хорош! Это лучшее, что придумало человечество в области редактирования текстов.
Однако без навыка «слепой» печати этот редактор бесполезен. Странно и забавно читать лишенные всяких практических оснований нападки на отличный инструмент от пробегающих мимо, излишне эмоционирующих личностей.
Самое мощное преимущество для меня в редакторе — это его «жесты» — последовательности-команды, набираемые как слова vim-языка. С практикой многие команды начинают «прилипать» к пальцам и набираются автоматически, повышая скорость манипуляции текстом.
И да, vim — не старая дряхлая рухлядь, он постоянно развивается. Недавно состоялся очень успешный его перезапуск — Neovim.
А тем, кто всерьёз хочет освоить редактор vim, стоит обратить внимание на книги Дрю Нейла про использование Vim.
Выскажу свой "пятачек". Этот редактор сравнивабт с Emaks а не с упомянутыми тулзами.
К примеру опция -b редакция бинарника. В свое премя замучался искать редактор для правки одного
екзешника в винде. Поменял за 3 минуты а искал и пробовал разные пол дня(надо редко и надо бфло без установки).
Буквально седня правил конфиг для i3wm на стареньком нетбуке. Попробовал через редактор mc ( F4)
скопировал значек в юникоде из одного места и вставил в другое - резалт вмето значка Unknoun.
Открыл в vim и все скопировалось нормально.
При написание ридми в маркдауне комптлю в пдф нажатием ",+c" (leader+c) так сделал в конфиге...
т.е по мне vim это хороший тнструмент к которому можно пришпандорить кучу пимпочек и получить IDE - для примера как отдельная приблуда у меня для Golang вызывается катоиная конфигкрация vim -u ~/.vimrc.go - причем основная не трогается(т.е. можно для разных языков делать отдельные конфиги и не загружать море ненужного типа как в Atom or VS Code ... при таком подходе скорость в выше в разы.
рук0ж0-й только догадается править в текстовом редакторе exe... ради прикола по f4 (в мс) отредактировал exe и чудо все получилось ... даже запустился поэтому прями руки и не путай божий дар с яичницей - для редактирования бинарников нужен hex редактор
Вкрай незручна річ
привет всем. достаточно неплохая статья, спасибо автору. есть несколько вопросиков. в дебиан бастер из коробки доступен vim.tiny понятно что это какая-то модификация, а в чём различия? и ещё бы хорошо бы хоть кратенький обзор к плагинам. интересует - если такая возможность чтобы в програмном коде можно было бы перепрыгивать по функциям и различным кускам программ? тоесть навигация по кускам програмного кода? всем всего хорошего.
есть нужно дать команду sudo apt-get remove vim* и поставить нормальный редактор
А это когда Nano стал неудобным? Простой и понятный редактор.
Ничего более бредового в жизни не встречал. Выход без сохранения только ребутом железки? Вы серьезно? :q!a никакого результата не приносит, только ребут.
Nano рулит
Никогда Vim'ом не пользовался, но всё-таки.
Пробовали нажать C-c (ctrl+c) и набирать exit, пока терминал не закроется?
C-c закрывает процесс, exit выполняет выход из оболочки
Не знаю, меня нано устраивает
Мелкий хак : o .
Пригодится тем, кому надо увидеть файлы, выбрать другой и продолжить работу. 🙂
Я долго и довольно глубоко изучал vim, делал из него ide, боготворил его, пытался сделать универсальный инструмент, в итоге по прошествии многих лет использую его только как консольный редактор, без плагинов с минимумом настроек или вовсе без них, удобная вещь не спорю, но есть среды разработки которые лучше подходят для определенных вещей.
Автор просил указать, как давно я пользуюсь vim. Впервые я запустил vi в 1986 году. Просто хотел попробовать, что это за зверь такой. Случился конфуз. Я не только не смог что-либо отредактировать, но даже и закрыть его никак не удавалось, пока добрый человек не подсказал, как это сделать. А ведь терминал у меня был один - физическое устройство - его нельзя закрыть и запустить новый.
Потом быстренько изучил основные команды vi, повесил листок с подсказкой перед носом, попрактиковался. С тех пор пользуюсь и время от времени изучаю. Но до сих пор, похоже, не знаю и половины его возможностей.
С теми, кто пользуется nano, никогда не спорю - это дело вкуса. Но сам до такой убогости не опускаюсь. Я лучше потрачу время и установлю vim, чем буду мучиться с nano.
Читайе документацию!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Nano круче vim самый неудобный
Как из вима скопировать текст в браузер ?))
Зажмите shift и копируйте мышкой. Там есть ещё буфер специальный для копирования средствами Вима в системный буфер, но у меня не получалось им удобно пользоваться.
Есть такая команда dw, которая удаляет слово, однако с русскими словами это не проходит.
можно это как-то исправить?
Раньше использовал nano? потом попробовал использовать vim? а мне надо-то посмотреть файл или тупо вставить туда текст или отредактировать и vim мне больше нравится, чем nano.
Например, если у тебя стоит русская раскладка, то комбинация клавиш в nano не будет работать.
В vim тоже легко выйти без сохранения и запустить режим редактирования, комбинация из 2-3 клавиш.
Плюс в vim мне нравится, что когда открываешь какой-нибудь конфиг, синтаксис подствечивается разными цветами. Короче, vim легче и удобнее, после первого его использования nano вообще не запускал, большой конфиг в nano нечитабельный.
В статье надо первым делом писать как выйти из VIM после или вместо редактирования.
Всякая статья о vim должна начинаться абзацем:
Для выхода из редактора vim нажимаем "ESC" (переход в командный режим), вводим ":" (двоеточие), вводим "wq" (write-quit) - для сохранения изменений и выхода; "q!" - для выхода без сохранения; и нажимаем "Enter".
Да! Первое впечатление от vim - не смог выйти из него.
Потом наловчился с ним работать, а после некоторой паузы забыл все команды.
Надо опять изучать.