Редактор VI имеет три режима:
1 2 3 |
1. Командный - в этом режиме можно перемещаться по файлу и выполнять редактирующие команды над текстом. Команды вызываются ОБЫЧНЫМИ ЛАТИНСКИМИ БУКВАМИ. 2. Ввода текста - в этом режиме обычные латинские буквы будут вставляться в текст. 3. Режим строчного редактора ED используется для управления файлами (типа сохранить файл, зачитать файл и т.д.) |
VI в КОМАНДНОМ РЕЖИМЕ:
1 2 3 4 5 6 |
ESC : q ! Enter - ЧТОБЫ ВЫЙТИ ИЗ ФАЙЛА БЕЗ СОХРАНЕНИЯ ESC : w ! Enter - сохранить изменения ESC : q Enter - выйти из файла ESC : wq Enterв - ыйти из файла с сохранением i - перевод в режим ввода вводите требуемый текст ESC - прекратить ввод, перейти в командный режим |
VI в РЕЖИМ ВВОДА:
1 2 3 4 5 6 7 8 9 |
"i" - вставлять здесь "A" - вставлять с конца строки "cw" - заменять текущее слово ESC - для ВОЗВРАТА В КОМАНДНЫЙ РЕЖИМ CTRL-[ - для возврата в командный режим для перехода В РЕЖИМ УПРАВЛЕНИЯ ФАЙЛАМИ нужно нажать ":" (перейти в режим редактора ED) h,j,k,l - влево, вниз, вверх, вправо Ctrl-F - На страницу вниз trl-B - На страницу вверх |
Минимальный набор команд:
1 2 3 4 5 6 7 8 9 10 |
i - перейти в режим вставки a - перейти в режим вставки со следующего символа h,j,k,l влево, вниз, вверх, вправо dd - удалить строку 5dd - удалить 5 строк <esc>:x - выход с сохранением <esc>:q! - выход без сохранения изменений <esc> - выход из режима редактирования <shift> + v + стрелки - выделение y - копирование (yank) |
Набор команд:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
hjkl - перемещение в разные стороны i - режим вставки I - добавление в начало строки a - режим добавления A - добавление в конец строки o - добавить строку сразу за текущей O - добавить строку перед текущей R - писать поверх имеющегося текста u, :u[ndo] - отмена предыдущего действия (undo) CTR-R, :red[o] - отмена отмены предыдущего действия (redo) dd - вырезать (удалить) строку cc - удалить и начать редактирование yy - копировать строку p - вставить из буфера обмена d - удалить n+1 строку y - скопировать n+1 строку ESC - перейти в режим просмотра DEL - удалить следующий символ : - перейти на строку #n % - перейти к парной скобке :e - редактировать файл :w - [fname] записать изменения :wa - сохранить изменения во всех файлах :q - выйти из редактора :q! - выйти из редактора, не сохраняя изменения :color - выбор цветовой схемы. цветные схемы: /usr/local/share/vim/vim72/colors/*.vim :pwd - текущий каталог :cd [path] - перейти в другой каталог :! - выполнить команду CTR+p или CTR+n - автоматическое дополнение текста (в режиме редактирования) CTR+r,=, - вставить выражение, например 5*2 - 3 (в режиме редактирования) CTR+u, CTR+d - Page Up / Page Down CTR+y, CTR+e Перемотка вверх/вниз без движения курсора |
Поиск:
1 2 3 4 5 6 7 8 9 10 11 |
/word Искать слово “word” сверху вниз ?word Искать слово “word” снизу вверх /jo[ha]n> Искать “john” или “joan” /\< the Искать слова, начинающееся на “the” /the\> Искать слова, заканчивающиеся на “the” /\< the\> Искать “the” (точное соответствие) /\< …. \> Искать слова из четырех символов /fred\|joe Искать “fred” или “joe” /\<\d\d\d\d\> Искать 4 цифры подряд /^\n\{3} Искать 3 пустые строки :bufdo /searchstr/ Искать во всех открытых файлах |
Удаление:
1 2 3 4 |
d^ Удалить все символы от текущей позиции до начала строки d$ Удалить все символы от текущей позиции до конца строки d/word Удалить всё от текущей позиции до слова "word" dfx Удалить всё от текущей позиции до символа "x" |
Замена:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
:%s/old/new/g Заменить все вхождения “old” на “new” :%s/old/new/gw Заменить все вхождения “old” на “new” с запросом подтверждения :2,35s/old/new/g Заменить все вхождения “old” на “new” между 2 и 35 строками :5,$s/old/new/g Заменить все вхождения “old” на “new” начиная с 5 строки и до конца файла :%s/^/hello/g Добавить “hello” в начало каждой строки :%s/$/Harry/g Добавить “Harry” в конец каждой строки :%s/onward/forward/gi Заменить “onward” на “forward” с учетом регистра :%s/ *$//g Убрать все пробелы :g/string/d Удалить все строки, содержащие “string” :v/string/d Удалить все строки, не содержащие “string” :s/Bill/Steve/ Заменить первое вхождение “Bill” на “Steve” в текущей строке :s/Bill/Steve/g Заменить все вхождения “Bill” на “Steve” в текущей строке :%s/\r//g Убрать символ возврата каретки (Такие тексты обычно приходят от windows-пользователей) :%s#>[^<]\+>##g Очистить текст от HTML-тегов :%s/^\(.*\)\n\1$/\1/ Удалить строки, повторяющиеся дважды Ctrl+a Увеличить число под курсором на единицу Ctrl+x Уменьшить число под курсором на единицу ggVGg? Преобразовать текст в Rot13 Abs[ 'выражение' ] -> | 'выражение' | :%s/Abs\[\([^\]]*\)\]/|\1|/g 'Заглавная латинская буква''цифра' -> 'Заглавная латинская буква'_'цифра' :%s/\(\u\)\(\d\)/\1_\2/g Здесь стоит отметить, что для буквального совпадения квадратные скобки предваряются слешами, поскольку являются спецсимволами. Вообще любой спецсимвол, если должен участвовать в поиске, обозначая свое непосредственное значение, предваряется слешем: \^; \* и т.д. Сам слеш предваряется также слешем. Выглядит это так: для поиска последовательности '\cos' надо ввести '\\cos'. |
Регистр:
1 2 3 4 5 6 7 8 9 10 11 12 |
Vu Перевести строку в нижний регистр VU Перевести строку в верхний регистр g~~ Инвертировать регистр vEU Перевести слово под курсором в верхний регистр vE~ Инвертировать регистр слова ggguG Перевести весь текст в нижний регистр :set ignorecase Регистронезависимый поиск :set smartcase Игнорировать регистр при поиске, если в искомом выражении нет символов верхнего регистра :%s/\<./\u&/g Перевести первую букву каждого слова в верхний регистр :%s/\<./\l&/g Перевести первую букву каждого слова в нижний регистр :%s/.*/\u& Перевести первую букву первого слова в каждой строке в верхний регистр :%s/.*/\l& Перевести первую букву первого слова в каждой строке в нижний регистр |
Чтение/запись файлов
1 2 3 4 |
:1,10 w outfile Записать в outfile с первой по десятую строки :1,10 w >> outfile Добавить в outfile с первой по десятую строки :r infile Вставить содержимое файла infile :23r infile Вставить содержимое файла infile после 23 строки |
Навигация по ФС:
1 2 3 4 5 6 7 8 9 |
:e . Открыть встроенный файл-менеджер :Sex Разбить окно и открыть встроенный файл менеджер :browse e Графический файл-менеджер :ls Список буферов :cd .. Перейти в родительскую директорию :args Список открытых файлов :args *.php Открыть все файлы с расширением *.php :grep expression *.php Показать список файлов с расширением php, содержащих в имени expression gf Открыть файл с именем, равным слову, находящемуся под курсором |
Взаимодействие с ОС:
1 2 3 4 |
:!pwd Выполнить команду pwd и вернуться !!pwd Выполнить команду pwd и вставить результат в редактор :sh Открыть шелл $exit Вернуться в редактор из шелла |
Выравнивание:
1 2 3 |
:%!fmt Выровнять все строки !}fmt Выровнять все строки в текущей позиции 5!!fmt Выровнять следующие 5 строк |
Вкладки:
1 2 3 4 5 6 7 |
:tabnew Создать новую вкладку gt Перейти на следующую вкладку :tabfirst Перейти на первую вкладку :tablast Перейти на последнюю вкладку :tabm n(position) Изменить порядок вкладок :tabdo %s/foo/bar/g Выполнить команду во всех вкладках :tab ball Поместить все открытые файлы во вкладки |
Разделение окна:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
:e filename Редактировать filename в текущем окне :split filename Разделить окно и открыть filename ctrl-w + стрелка ВВЕРХ Переместить курсор в верхнее окно ctrl-w ctrl-w Переместить курсор в следующее окно ctrl-w ctrl-p Переместить курсор в предыдущее окно(вернуться назад) ctrl-w ctrl-x Поменять окна местами ctrl-w_ Максимизировать текущее окно ctrl-w= Подогнать окна по размеру 10 ctrl-w+ Увеличить текущее окно на 10 строк :vsplit file Вертикально разделить окно :sview file Разделить окно и открыть file только для чтения :hide Закрыть текущее окно :only Закрыть все окна, кроме текущего :b 2 Открыть #2 в текущем окне |
Автодополнение:
1 2 3 4 |
Ctrl+n Ctrl+p (в режиме вставки) Дополнить слово Ctrl+x Ctrl+l Дополнить строку :set dictionary=dict Установить словарь Ctrl+x Ctrl+k Дополнение из словаря |
Метки:
1 2 3 4 |
mk Пометить текущую позиция как k ‘k Перейти к метке k d’k Удалить все до метки k d’a,’k Удалить все от метки a до метки k |
Сокращения
1 |
:ab mail mail@provider.org Определить mail как сокращение от mail@provider.org |
Отступы:
1 2 3 4 5 6 |
:set autoindent Включить автоматическую расстановку отступов :set smartindent Включить “умную” расстановку отступов :set shiftwidth=4 Установить отступ равный 4 пробелам ctrl-t, ctrl-d Убрать/добавить отступ в режиме вставки << Добавить отступ >> Убрать отступ |
Подсветка синтаксиса:
1 2 3 |
:syntax on Включить подсветку :syntax off Выключить подсветку :set syntax=perl Установить режим подсветки |