Краткий справочник по по 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” – переместить окно в самый низ