Режимы работы редактора Ввод текста Команды Перемещение курсора Редактирование Командная строка Блоки, буферы, окна редактирования. Повторители Открыть/создать файл Дополнительные опции Улучшенный редактор VIM
Редактор vi - универсальный полноэкранный текстовый редактор в среде UNIX. Универсальность означает, что, во-первых, этот редактор есть во всех UNIX-подобных ОС и, во-вторых, этот редактор работает с практически любым видом терминала (ANSI, VT100, VT220, VT320, DEC и т. д.). Эта универсальность выражается непривычным (для пользователей DOS) пользовательским интерфейсом: для управления редактором используются лишь «обычные» кнопки клавиатуры (алфавитно-цифровые символы и знаки препинания).
Имеющиеся на многих типах терминалов функциональные клавиши практически не используются. Если клавиатура терминала имеет стрелочные клавиши, то они используются, но в ограниченном контексте.
Вы можете подробнее ознакомиться с информацией по работе с редактором vim, просмотрев наши обучающие видео:
на RuTube — Текстовый редактор vim;
в Яндекс.Дзен — Текстовый редактор vim;
в VK Видео — Текстовый редактор vim.
На наших каналах вы также сможете найти много другой полезной информации.
В этом режиме все, что набирается на клавиатуре, отображается на экране терминала и запоминается в буфере редактора.
В данном режиме нет возможности осуществлять операции редактирования текста, за исключением стирания последнего набранного символа (с помощью комбинации клавиш «Ctrl+H»).
Ctrl+H
В этом режиме символы клавиатуры выполняют специальные функции (перемещение курсора, стирание частей текста, и т. д.), то есть функции редактирования.
В данном режиме набираемые команды не отображаются на экране.
Режим командной строки позволяет производить более глобальные операции с текстом: записывать отредактированный текст в файл, считывать новый файл, выходить из vi, производить настройку редактора, поиск по шаблону, а также осуществлять некоторые функции редактирования. Команды отображаются в нижней части экрана (в командной строке редактора).
«Return» - создает пустую строку и переводит курсор в ее начало;
Return»
«Ctrl+H» - уничтожает последний введенный символ (это действие не отображается на экране до выхода в командный режим);
«Ctrl+[» или клавиша «Esc» - переводят редактор в командный режим.
Ctrl+[
Esc
В режиме ввода текста стрелочная клавиатура не работает.
i - переход в режим набора методом вставки перед текущим символом; a - переход в режим набора методом вставки за текущим символом; R - переход в режим набора текста методом набивки.
h, j, k, l - на один символ (одну строку), как показано стрелками; ^ или 0 - в начало текущей строки; $ - в конец текущей строки; w - на слово вправо; b - на слово влево; } - на параграф вперед (параграф - это блок текста, отделенный пустой строкой); { - на параграф назад; [[ - в начало текста; ]] - в конец текста. Кнопки стрелочной клавиатуры также позволяют перемещаться по тексту.
Предположим, в нашем файле записан текст, который необходимо отредактировать. Для этого необходимо перейти в режим ввода. Самый простой способ - из командного режима нажатие клавиши "i". После чего можно приступать к вводу текста. <ESC> вернет нас к командному режиму.
ESC
Другие важные команды:
Команда
Описание команды
R,i
переход в режим ввода - замена текста под курсором
I
переход в режим ввода с начала текущей строки
o
переход в режим ввода с новой строки под курсором
O
переход в режим ввода с новой строки над курсором
a
переход в режим ввода после курсора
x
стирание символа под курсором
X
стирание символа перед курсором
dd
стирание текущей строки
d<число>d
стирание числа строк, начиная с текущей
yy
копирование текущей строки в неименованный буфер
y<число>у
копирование числа строк начиная с текущей в неименованный буфер
p
вставка строки из неименованного буфера под курсор
P
вставка строки из неименованного буфера над курсором
J
слияние текущей строки со следующей
u
отмена последней команды
.
повтор последней команды
:
переход в режим командной строки
:q или :q! - выход из редактора без сохранения изменений;
:x - выход из редактора с записью, если файл был модифицирован;
:w или w <имя_файла> или w! <имя_файла> - запись файла и возвращение в командный режим;
:e <имя_файла> или :e! <имя_файла> - загрузка указанного файла;
:r <имя_файла> - добавить содержимое указанного файла к редактируемому сразу за текущей строкой;
:set nu - включить нумерацию строк;
:set nonu - отключить нумерацию строк;
:!command - выполнить команду UNIX, не покидая редактора;
:/word - выполнить поиск слова word в тексте;
:/ - повторить поиск слова word далее по тексту.
Командам и движениям курсора можно давать повторители (числа), например: 2w - передвинуть курсор на два слова вперед; 10l - передвинуть курсор на десять символов вправо; d10l - стереть десять символов справа от курсора; 2d10l - стереть двадцать символов справа от курсора; 5J - слить пять последующих строк в одну; 4. - повторить последнюю введенную команду четыре раза.
Редактор имеет три типа буферов: буфер стирания (0-9), неименованный буфер и именованные буферы (a-z).
В буферы стирания автоматически заносятся стираемые элементы. В буфере 0 хранится последний стертый элемент, в буфере 1 - предпоследний и т. д.
Занести в буфер:
yy - занести текущую строку в неименованный буфер;
y<движение_курсора> - занести указанный движением курсора блок текста в неименованный буфер;
"ayy - занести текущую строку в именованный буфер «a»;
"Ayy - добавить текущую строку к содержимому именованного буфера «a»;
"by10j - занести последующие 10 строк в именованный буфер «b».
Вставить из буфера:
p - вставить в текущую позицию содержимое неименованного буфера;
"ap - вставить в текущую позицию содержимое именованного буфера «a»;
"1p - вставить в текущую позицию содержимое буфера стирания «1».
Редактировать сразу несколько файлов можно либо пользуясь командной редактора :e <имя_файла>, либо указав все необходимые файлы в командной строке при вызове редактора (например: vi <файл_1> <файл_2> <файл_3>). В последнем случае вы двигаетесь по списку файлов с помощью команд: :n - переходим к следующему файлу в списке; :rew - возвращаемся к редактированию первого файла в списке. Именованные буферы сохраняют свое содержимое при переходе к редактированию другого файла.
vi <файл_1> <файл_2> <файл_3>
vi test1.txt - открыть один файл.
vi test1.txt
vi test1.txt test2.txt - открыть файл test1.txt, после выхода из него открыть файл test2.txt.
vi test1.txt test2.txt
Файл открывается в командном режиме с помощью команды vi. Здесь мы можем просмотреть файл, переместиться по его содержимому, стереть текст, но внести изменения или ввести текст в этом режиме нельзя.
Создание файла происходит при помощи той же команды. Создание файла происходит в момент сохранения.
Для открытия или создания нового файла в командном режиме необходимо выполнить команду:
:e <имя_файла>
Перед этим нужно сохранить предыдущий файл:
:w - сохраняет файл с существующим именем; :sav <имя_файла> - «Сохранить как».
Дополнительные возможности редактора:
Vim расшифровывается как Vi Improved, улучшенный vi. В сравнении с классическим vi Vim отличается следующими улучшениями:
В ViM существуют 3 режима работы:
Основной - предназначен для просмотра файла, ввода команд и перехода из него в другие режимы. Из любого режима в командный можно попасть по нажатии «ESC». При нажатии клавиши «:» становится доступна командная строка ViM, в которой можно вводить команды. Основные команды - команда выхода quit (ViM понимает сокращения, поэтому можно давать команду одной буквой «q»), команда сохранения write (или «w»), параметром которой может быть имя файла и вызов справки по, очевидно, help (или «h»). На остальные клавиши (и их последовательности) можно присвоить любое действие, либо использовать значения по умолчанию.
Визуальный – предназначен, в первую очередь, для выделения блоков текста. Для запоминания предлагаются 3 варианта перехода в этот режим – клавишей «v» для посимвольного выбора, «Shift+v» для построчного и «Ctrl+v» для блочного. В нормальном режиме (при переходе по «v») можно оперировать следующими сущностями: слово («w»), предложение («s»), параграф («p») и блок («b»). Выделение при этом начинать с позиции курсора («a»), или же с начала блока («i»). Например, выделение текущего блока (участка, ограниченного парными элементами) можно произвести следующим образом «Esc+vib». Копирование в буфер выделенного текста осуществляется по «y», вырезание по «d», а вставка соответственно «p».
Режим редактирования - переход в режим редактирования осуществляется нажатием клавиши «Ins».
Все возможности и команды редактора ViM перечислить весьма затруднительно (HTML-документация по нему занимает около пяти мегабайт), но на группе наиболее полезных остановиться необходимо. Перечисленные ниже команды вводятся в основном режиме (если нет специального уточнения). Все они имеют команднострочные аналоги и могут быть легко переопределены пользователями.
Для перехода на строку с номером n воспользуйтесь командой G. Так, для перехода к началу текста наберите 0G, для сотой строки 100G, а для конца документа - $G. Для перехода на n символов в нужную вам сторону можете использовать клавиши со стрелками. То есть для перехода на 1000 символов вниз наберите 1000 и нажмите стрелку вниз.
Для перемещения по тексту используйте следующие команды: «(», «)» для перемещения по предложениям, «{», «}» для параграфов, «[[», «]]» для функций, «%» - переход к парной скобке, «' '» - к предыдущему положению, а «CTRL+O», «CTRL+I» - соответственно назад и вперед по истории переходов.
CTRL+O
CTRL+I
Используются для отметки позиции ^<метка>, где <меткой> является любая буква для быстрого к ней перехода. Метки нижнего регистра действительны в пределах данного файла, метки верхнего регистра действуют во всех открытых файлах. Список всех меток можно получить командой marks. Для того чтобы установить метку на текущей строке используйте клавиши М Х. Для того чтобы перейти на метку X введите команду: ' X.
М
Х
' X
В редакторе доступно множество именованных регистров (хранилищ данных, буферов). Регистр отмечается «' 'буква». К нему применимы все стандартные действия - копирование в него ("меткаy), вырезание ("метка^), и вставка из него (''меткаp), можете вместо p использовать [p,]p для вставки соответственно перед, или после курсора). В режиме редактирования вставка из регистра осуществляется по «Ctrl+R метка». Для добавления данных в регистр используйте заглавную метку.
Ctrl+R метка
Также вы можете писать в регистр, воспользовавшись командой «^метка» и завершая запись по «q». Таким образом, вы сохраняете макрос, выполнить который можно по «@метка».
Регистры с метками «*» и «+» совпадают с X-Window clipboards, «%» - соответствует редактируемому файлу. Для просмотра содержимого всех регистров воспользуйтесь командой :registers, либо :reg <метка_1><метка_2>... для просмотра некоторых.
Предназначены для сокрытия не нужных в данный момент данных, чтобы те не отвлекали внимания. Например, кода подпрограммы, с которой вы в данный момент не работаете. По умолчанию фолды активированы в режиме их ручной расстановки. Если вы хотите их автоактивации по отношению к табуляции, то добавьте в конфигурационный файл строку:
set foldmethod=indent
Все команды для работы с фолдами начинаются с z. Открытие фолда производится, например, по zo (или стрелке вправо) на нем, закрытие кода в фолд - по zc.
При ведении группы проектов нередко желательно сохранить текущее состояние и настройки редактора, чтобы в дальнейшем продолжить работу с того же места. Для этого и предназначены сессии, что создаются командой :mksession /path/to/Session.vim, а читаются простой командой :so /path/to/Session.vim. Гораздо чаще, впрочем, возникает нужда в сохранении не всей сессии, но только текущего контекста (вo что входит, например, положение курсора в коде, текущая расстановка фолдов и многоe другое, о чем читайте в документации). Это действие выполняет команда :mkview, чтение - :loadview. Очень удобно сделать сохранение и чтение контекста автоматическим при начале и окончании редактирования файла. В ViM команда au используется для создания автоматических команд. Это может быть реализовано следующим кодом (применяется для всех файлов, имеющих точку в имени). Нажмите клавишу «:» и введите следующие команды по одной (нажимая Enter после каждой):
Enter
au BufWinLeave *.* mkview
au BufWinEnter *.* silent loadview
Поиск осуществляется командами «/» для поиска (по регулярному выражению) вперед, а «?» в обратном направлении. Для продолжения поиска используйте «n», а для прошлого варианта «N». Для поиска слова под курсором используются соответственно «#» и «*».
Для поиска с заменой используйте ^s^TO/m что/gic, где «%» означает работу со всем текстом (а не с текущей строкой), «g» - глобальная замена (а не первое совпадение), «i» - игнорирование регистра, а «c» - подтверждение каждого действия.
Производится по содержимому данного файла, а также указанных в переменной dictionary по нажатию клавиш ' '.
«u» для отмены и ' ' смена регистра.
«~» для выделенного участка (или буквы под курсором). «U» - принудительно установить верхний регистр, а «u» - нижний регистр.
«.»
Основным конфигурационным файлом является ~/.vimrc. Активация русского шрифта в GUI-режиме плюс выбор темы для обоих режимов осуществляется, например, следующим кодом:
if has("gui_running") colorscheme candy set guifont=-cronyx-courier-medium-r-normal-*-*-120-*-*-m-*-koi8-r endif if !has("gui_running") colorscheme elflord endif
Перечень наиболее используемых «горячих» клавиш:
Выход по F10:
nmap <F10> :q<CR> imap <F10> <ESC>:q<CR>
Сохранение по F2:
nmap <F2> :w<CR> imap <F2> <ESC>:w<CR>i<Right>
Компиляция по F9:
nmap <F9> :make<CR> imap <F9> <ESC>:make<CR>
Дата последнего изменения: 17.10.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.