Краткий справочник по по vi
Delete all lines containing a pattern Edit vi
The ex command g is very useful for acting on lines that match a pattern. You can use it with the d command, to delete all lines that contain a particular pattern, or all lines that do not contain a pattern.
For example, to delete all lines containing «profile» (remove the /d to show the lines that the command will delete):
:g/profile/d
More complex patterns can be used, such as deleting all lines that are empty or that contain only whitespace:
:g/^\s*$/d
To delete all lines that do not contain a pattern, use g!, like this command to delete all lines that are not comment lines in a Vim script:
:g!/^\s*»/d
Note that g! is equivalent to v, so you could also do the above with:
:v/^\s*»/d
The next example shows use of \| («or») to delete all lines except those that contain «error» or «warn» or «fail» (:help pattern):
:v/error\|warn\|fail/d
——
Поиск
/vim Искать “vim” начиная сверху
?vim Искать “vim” начиная снизу
/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/ Искать во всех открытых файлах
Замена
:%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
Навигация по ФС
:e . Открыть встроенный файл-менеджер
:Sex Разбить окно и открыть встроенный файл менеджер
:browse e Графический файл-менеджер
:ls Список буферов
:cd .. Перейти в родительскую директорию
:args Список открытых файлов
:args *.php Открыть все файлы с расширением *.php
:grep expression *.php Показать список файлов с расширением php, содержащих в имени expression
gf Открыть файл с именем, равным слову, находящемуся под курсором
Открытие двух или трех файлов в разных окнах vim. С горизонтальной разбивкой окон на экране:
vim -o /etc/passwd /etc/hosts
vim -o /etc/passwdo /etc/group /etc/hosts
С вертикальной разбивкой окон на экране:
vim -O /etc/passwd /etc/hosts
vim -O /etc/passwd -O /etc/group /etc/hosts
Наглядный просмотр отличий нескольких файлов
vim -d файл1 файл2 vim -d файл1 -d файл2 файл3
Команды переключения между окнами:
“CTRL-w w” – быстрое переключение на следующее окно
“CTRL-w влево” – активация левого окна
“CTRL-w вправо” – активация правого окна
“CTRL-w вверх” – активация верхнего окна
“CTRL-w вниз” – активация нижнего окна
“CTRL-w n” – создать новое окно (“:new файл” – открыть заданный файл)
“CTRL-w q” – закрыть текущее окно (“:qall” – закрыть все окна разом, “:qall!” – без сохранения,
“:write” – записать данные во всех окнах)
“CTRL-w s” – разбить текущее окно на 2 части для синхронного редактирования разных частей (в каждом окне будет содержимое одного и того же файла).
“CTRL-w +“, “CTRL-w -” – увеличение или уменьшение текущего размера окна
“ESC 5 CTRL-w -“, “ESC 5 CTRL-w +” – изменение размера сразу на 5 строк/столбцов
“CTRL-w H” – переместить окно влево
“CTRL-w h” – переместить курсор в левое окно
“CTRL-w J” – переместить окно ниже
“CTRL-w j” – переместить курсор в нижнее окно
“CTRL-w K” – переместить окно выше
“CTRL-w k” – переместить курсор в верхние окно
“CTRL-w L” – переместить окно вправо
“CTRL-w l” – переместить курсор в левое окно
“CTRL-w t” – переместить окно на самый верх
“CTRL-w b” – переместить окно в самый низ