vim
Содержание
Vim
Отличия от Vi
В сравнении с классическим vi Vim отличается следующими улучшениями:
- Работа со многими файлами одновременно. Разбиение окон редактирования может производиться многократно как по горизонтали, так и по вертикали.
- Поддержка Unicode.
- Поддержка визуального режима, который позволяет, например, выполнять операции над блоками текста.
- Неограниченная глубина отмены (undo) и возврата (redo) действий.
- Режим сравнения двух файлов, перенос отдельных изменений из одного файла в другой.
- Широкая файловая поддержка (файл со справкой и более 200 файлов с описанием синтаксиса).
- Подсветка синтаксиса, автоматическое определение величины отступа для каждой строки в зависимости от языка программирования (изначально поддерживает более 200 языков программирования и форматов конфигурационных файлов).
- Интеграция с операционной системой, дающая возможности, близкие к интегрированным средам разработки, такие как поиск ошибки по сообщению компилятора, автодополнение идентификаторов и др.
- Поддержка языка сценариев; возможность написания модулей расширения — плагинов.
- Автоматическое продолжение команд, слов, строк целиком и имён файлов.
- Автоматический вызов внешних команд (например, автоматическая распаковка файла перед редактированием).
- Распознавание и преобразование файлов различных форматов.
- Удобный механизм истории команд, поисковых слов и т. д.
- Запись и исполнение макросов.
- Возможность сохранения настроек и сеанса.
- Возможна интеграция с языками программирования Perl, Tcl, Python и Ruby.
- Поддержка языков с письмом справа налево (арабских и других).
- Сворачивание (folding) текста для лучшего обзора.
- Возможно использование графического интерфейса в специальных версиях (GTK, Motif, …).
- Хорошо конфигурируется и настраивается под нужды пользователя.
- Для программистов: поддержка цикла разработки «редактирование — компиляция — исправление» программ. Автоматическое выполнение сборки/компиляции, обнаружение и распознавание ошибок, переход к строкам ошибок в тексте программы.
- Для поклонников vi: практически стопроцентная совместимость с vi.
Горячие клавиши
Помощь | |
---|---|
:help | Вывести краткую справку и завершить работу. То же, что и «-h». |
:help j | Вывести справку по команде 'j'. |
:help :split | Вывести справку по команде ':split'. |
:help z* | Вывести справку по всем командам, начинающимся с 'z'. |
<C-]> | Перейти к тэгу под курсором. |
<C-o> | Перейти на предыдущую страницу справки. |
<C-i> | Перейти на следующую страницу справки. |
Отмена и повтор операции | |
u | Отменить действие. |
<C-r> | Восстановить отменённое действие / повторить последнюю команду редактирования. |
:redo | Восстановить отменённое действие / повторить последнюю команду редактирования. |
Перемещение между строками | |
0 | Перейти в начало текущей строки. |
^ | Перейти к первому непробульному символу в текущей строке. |
$ | Перейти в конец текущей строки. |
gg | Перейти на первую строку в файле. |
G | Перейти на последнюю строку в файле. |
47G | Перейти на строку 47. |
:47 | Перейти на строку 47 (альтернативный способ). |
Перемещение между символами | |
f [char] | Поиск вперёд в строке символа [char] и установка курсора на него. |
3f [char] | Поиск вперёд в строке третий символ [char] и установка курсора на него. |
F [char] | Поиск назад в строке символа [char] и установка курсора на него. |
t [char] | Поиск вперёд в строке символа [char] и установка курсора после него. |
T [char | Поиск назад в строке символа [char] и установка курсора после него. |
; | Повтор поиска вперёд символа, найденного при помощи f/t/F/T. |
, | Повтор поиска назад символа, найденного при помощи f/t/F/T. |
Перемещение между словами и навигация в тексте | |
w | Перейти к началу следующего слова. |
W | Перейти к началу следующего слова, отделённого пробельными символами с двух сторон. |
e | Перейти к концу ближайшего слова. |
E | Перейти к концу ближайшего слова, отделённого пробельными символами с двух сторон. |
b | Перейти к началу предыдущего слова. |
B | Перейти к началу предыдущего слова, отделённого пробельными символами с двух сторон. |
( | Перейти на первую точку слева от курсора (если она есть, в противном случае на начало абзаца). |
) | Перейти на первую точку справа от курсора (если она есть, в противном случае на конец абзаца). |
{ | Перейти на абзац назад до пустой строки. |
} | Перейти на абзац вперёд до пустой строки. |
Перемещение по программному коду | |
% | Перемещение между открытием / закрытием парных скобками: (),[] или {}. |
[[ | Перейти к предыдущей функции. |
]] | Перейти к следующей функции. |
[{ | Перейти к началу текущего блока кода. |
]} | Перейти в конец текущего блока кода. |
Поиск | |
/ | Поиск. |
? | Поиск в обратном направлении. |
n | Перейти к следующему совпадению. |
N | Повторить поиск назад. |
* | Перейти к следующему вхождению слова под курсором. |
# | Перейти к предыдущему вхождению слова под курсором. |
Повторения | |
. | Повторить последнюю команду. |
23dd | Удалить (вырезать) 23 строки. |
5j | Перейти на 5 строк вверх. |
qa | Начать запись комбинации клавиш, которая будет назначена за клавишей 'a'. |
q | Закончить запись. |
@a | Выполнить макрос записанный под именем 'a'. |
4@a | Выполнить макрос записанный под именем 'a' 4 раза. |
Замена текста | |
:%s/search/replace/g | Заменить все вхождения 'search' на 'replace. |
:%s/old/new/gw | Заменить все вхождения “old” на “new” с запросом подтверждения. |
:5,10s/search/replace/g | Заменить все вхождения 'search' на 'replace' с 5 по 10 строку. |
:5,$s/search/replace/g | Заменить все вхождения 'search' на 'replace' начиная с 5 строки и до конца файла. |
:%s/\(\d\+\)-\(\d\+\)\+/\1\–\2/g | Find all [number]-[number] text and replace with [number]–[number] |
:%s/\v(\d+)-(\d+)+/\1\–\2/g | Same as last, but using magic regex. |
:g/foo/ s/bar/BAR/g | On lines that match the regex /foo/, replace 'bar' with 'BAR'. |
:vimgrep /^<h5/ *.html | Find lines that start with '<h5' in all HTML files in the current directory. Matches show up in the quickfix list. |
:%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. |
:cn | Move to next entry in the quickfix list. |
:cp | Move to previous entry in the quickfix list. |
Вставка | |
i | Перейти в режим вставки в текущем положении курсора. |
I | Переместить курсор в начало строки и перейти в режим вставки. |
a | Переместить курсор вправо на один символ и включить режим вставки. |
A | Переместить курсор в конец строки и включить режим вставки. |
o | Добавить пустую строку после текущей. |
O | Добавить строку перед текущей. |
Удаление текста | |
x | Удалить (вырезать) символ после курсора. |
dw | Удалить (вырезать) текущее слово. |
dd | Удалить (вырезать) текущую строку. |
d^ | Удалить все символы от текущей позиции до начала строки |
D | Удалить (вырезать) начиная с положения курсора и до конца строки. |
d$ | |
dt [char] | Удалить (вырезать) начиная с положения курсора и до первого вхождения символа [char]. |
df[char] | |
d) | Удалить (вырезать) начиная с положения курсора и до конца предложения. |
d} | Удалить (вырезать) начиная с положения курсора и до конца адзаца. |
di( | Удалить (вырезать) текст внутри скобок. |
da< | Удалить (вырезать) скобки <> вокруг. |
dit | Удалить (вырезать) текст между открывающим и закрывающим тегами. |
Не завершено!
Источники
vim.txt · Последнее изменение: 2015/12/24 00:00 (внешнее изменение)