1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chloneda-vim-cheatsheet

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 88 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 23:11 4591d67

Vim 命令速查表

Введение: Vim 命令速查, закомментированный файл конфигурации vimrc, классическая схема клавиатуры Vim, практическое руководство по Vim, инструмент для систематического изучения, обучения и настройки, быстрый старт. ✨

Содержание

  • Повторение.
  • Перемещение курсора.
  • Режим вставки.
  • Команды режима вставки.
  • Автодополнение.
  • Редактирование текста.
  • Текстовый объект.
  • Перенос текста.
  • Форматирование текста.
  • Копирование и вставка.
  • Отмена и восстановление.
  • Поиск и замена.
  • Визуальный режим.
  • Комментарии к командам.
  • Открытие файла.
  • Сохранение и выход.
  • Сравнение файлов.
  • Операции с файлами.
  • Буфер.
  • Разделение экрана.
  • Таблицы.
  • Закладки Vim.
  • Файловый браузер.
  • Проверка орфографии.
  • Складывание кода.
  • Шифрование и дешифрование документов.
  • Запись макросов.
  • Другие команды.
  • История команд.
  • Регистры.
  • Конфигурационные файлы.
  • Популярные плагины.
  • Режимы Vim.
  • Внешние команды.
  • GUI-команды.
  • Автоматические команды.
  • Окно быстрого исправления.
  • Кодировка файлов.
  • Справочная информация.
  • Это интересно.
  • Соглашения и стандарты.
  • Описание клавиш.
  • Ресурсы сети.
  • Рекомендации по использованию.
  • Рекомендуемая литература.
  • Схема клавиатуры Vim.
  • Дополнительная информация. Вверх прокрутите один экран (Move back one full screen)

Программирование вспомогательное перемещение

% — не только соответствует переходу к соответствующему {}, (), [], но и может перескакивать между if, else, elseif.

gd — переход к определению локальной переменной, то есть к слову под курсором.

gD — переход к глобальной переменной определения, то есть к слову под курсором.

gf — открытие файла с именем, совпадающим с именем под курсором.

[[ — переход к предыдущей функции верхнего уровня, например, в C языке разделён скобками. ]] — переход к следующей функции верхнего уровня.

[m — переход к началу предыдущего метода, ]m — переход к началу следующего метода.

]M — переход к концу следующего метода. [M — переход к концу предыдущего метода.

[{ — переход к предыдущему несоответствующему {. ]} — переход к следующему несоответствующему }.

[( — переход к предыдущему несоответствующему (. ]) — переход к следующему несоответствующему ).

[c — переход к предыдущему различию (diff). ]c — переход к следующему различию.

]] — переход к следующей первой колонке {. ][ — переход к следующей первой колонке }.

[[ — переход к предыдущей первой колонке {. [] — переход к предыдущей первой колонке }.

[/ — переход к началу текущего блока комментариев. ]/ — переход к концу текущего блока комментариев.

]# — переход к предыдущему if или else. [# — переход к последующему else или endif.

Режим вставки

i — вход в режим вставки (i: insert) под курсором. I — вход в режиме вставки в начале строки. a — вход в режим вставки после курсора (a: append). A — вход в режим вставки в конце строки. o — вставка новой строки ниже и вход в режим вставки. O — вставка новой строки выше и вход в режим вставки. s — удаление символа под курсором и вход в режим вставки. S — удаление всей строки и вставка текста. gi — возврат к позиции последнего входа в режим вставки. gI — ввод в текущую строку в первом столбце. — выход из режима вставки. Ctrl+[ — выход из режима вставки, эквивалентен .

Команды режима вставки

— перемещение курсора вверх. — перемещение курсора вниз. — перемещение курсора влево. — перемещение курсора вправо. <S+Up> — нажатие Shift и Up для перемещения на страницу вверх. <S+Down> — нажатие Shift и Down для перемещения на страницу вниз. <S+Left> — нажатие Shift и Left для перемещения влево на слово. <S+Right> — нажатие Shift и Right для перемещения вправо на слово. — перемещение на страницу вверх. — перемещение на страницу вниз. — удаление символа под курсором. — удаление символа слева от курсора. — перемещение курсора в начало строки. — перемещение курсора в конец строки. Ctrl+d — уменьшение отступа. Ctrl+f — уменьшение отступа. Ctrl+t — увеличение отступа. Ctrl+h — удаление предыдущего символа, эквивалентно . Ctrl+o — временный выход из режима вставки для выполнения одной команды и возврат в режим вставки. Ctrl+u — удаление всех символов от начала строки до курсора. Ctrl+w — удаление слова перед курсором. Ctrl+\ Ctrl+O — временный выход из режима вставки (курсор сохраняется), выполнение одной команды и возвращение в режим вставки. Ctrl+R 0 — вставка содержимого регистра (внутренний регистр 0). Ctrl+R " — вставка содержимого анонимного регистра. Ctrl+R = — вставка результата выражения, знак равенства следует за выражением. Ctrl+R : — вставка предыдущей командной строки. Ctrl+R / — вставка последнего ключевого слова поиска. Ctrl+v {char} — вставка литерала, отличного от числа. Ctrl+v {code} — вставка ASCII/Unicode символа по трёхзначному коду, например, Ctrl+v 065 для вставки символа A. Ctrl+v x41 — вставка шестнадцатеричного ASCII символа (три цифры) x41 для символа A. Ctrl+v o101 — вставка восьмеричного ASCII символа (три цифры) o101 для символа A. Ctrl+v u1234 — вставка шестнадцатеричного Unicode символа (четыре цифры). Ctrl+v U12345678 — вставка шестнадцатеричного Unicode символа (восемь цифр). Ctrl+K {ch1} {ch2} — вставка digraph (см.: h digraph) для быстрого ввода японских символов или символов.

Автоматическое завершение

Ctrl+n — автоматическое завершение текста в режиме вставки. Ctrl+P — автоматическое завершение текста в режиме вставки. Ctrl+e — завершение текущего завершения и продолжение ввода.

Ctrl+X — начало режима завершения, обратите внимание: все команды автоматического завершения начинаются с комбинации клавиш Ctrl+X. Ctrl+X Ctrl+L — завершение целой строки. Ctrl+X Ctrl+N — завершение на основе текущего буфера в режиме вставки. Ctrl+X Ctrl+K — завершение на основе словаря. Ctrl+X Ctrl+T — завершение на основе синонимов. Ctrl+X Ctrl+F — завершение имени файла в режиме вставки. Ctrl+X Ctrl+I — завершение на основе заголовочных файлов. Ctrl+X Ctrl+] — завершение тегов файла. Ctrl+X Ctrl+D — завершение макроопределения. Ctrl+X Ctrl+V — завершение команд Vim. Ctrl+X Ctrl+U — пользовательское завершение. Ctrl+X Ctrl+S — предложение написания, например, одного английского слова. Ctrl+X Ctrl+O — Omnifunc завершение в режиме вставки.

Редактирование текста

r — замена текущего символа. R — переход в режим замены до выхода с помощью . [N]s — замена N символов, удаление N символов справа от курсора и переход в режим вставки. [N]S — замена N строк, удаление N строк и переход в режим вставки. [N]x — вырезание и удаление N символов справа от курсора, аналогично d[N]l. [n]X — вырезание и удаление n символов слева от курсора. Вот перевод текста на русский язык:

个字符,相当于d[n]h

cc                  # 改写当前行,即删除当前行并进入插入模式,эквивалентно S
cw                  # 修改光标开始处的单词
ciw                 # 修改光标所处的单词
caw                 # 修改光标所处的单词,包括前后空格
c0                  # 修改到行首
c^                  # 修改到行首非空字符
c$                  # 修改到行末
C                   # 修改到行尾,эквивалентен c$
ci"                 # 修改双引号中的内容,i 的含义下同(i: inner)
ci'                 # 修改单引号中的内容
cib                 # 修改小括号中的内容
cab                 # 修改小括号中的内容,包含小括号本身
ci)                 # 修改小括号中的内容
ci]                 # 修改中括号中内容
ciB                 # 修改大括号中内容
caB                 # 修改大括号中的内容,包含大括号本身
ci}                 # 修改大括бок中内容
cit                 # 修改 XML 中 tag 的内容
cis                 # 修改当前句子
c[N]w               # 修改光标后 N 个单词
c[N]l               # 修改光标后 N 个字母
c[N]h               # 修改光标前 N 个字母
[N]cc               # 修改当前 N 行
ct(                 # 修改到小括号前

dd                  # 删除(剪切)当前行,当前行会存到寄存器里(d: delete = cut)
dd[N]p              # 删除(剪切)当前行并加入 N-1 个当前行,复制空行时很有用
d0                  # 删除(剪切)到行首
d^                  # 删除(剪切)到行首非零字符
d$                  # 删除(剪切)到行末
D                   # 删除(剪切)到行末,等价于 d$
dw                  # 删除(剪切)当前单词
diw                 # 删除(剪切)光标所处的单词(iw: inner word)
daw                 # 删除(剪切)光标所处的单词,并包含前后空格
d2w                 # 删除(剪切)下 2 个单词
d[N]w               # 删除(剪切)N 个单词,并包含前后空格
d[N]l               # 删除(剪切)光标右边 N 个字符
d[N]h               # 删除(剪切)光标左边 N 个字符
[N]dd               # 删除(剪切)从当前行开始的 N 行
:Nd                 # 删除(剪切)第 N 行
:N,Md<CR>           # 删除(剪切) N ~ M 行,其中 <CR> 为 <Enter> 回车键
di"                 # 删除(剪切)双引号中的内容
di'                 # 删除(剪切)单引号中的内容
dib                 # 删除(剪切)小括号中的内容
di)                 # 删除(剪切)小括号中的内容
dab                 # 删除(剪切)小括号内的内容,包含小括号本身
di]                 # 删除(剪切)中括号中内容
diB                 # 删除(剪切)大括号中内容
di}                 # 删除(剪切)大括号中内容
daB                 # 删除(剪切)大括号内的内容,包含大括号本身
dit                 # 删除(剪切) XML 中 tag 的内容
dis                 # 删除(剪切)当前句子
dt(                 # 删除(剪切)到小括号前
dgg                 # 删除(剪切)到文件头部
d1G                 # 删除(剪切)到文件头部,同上
dG                  # 删除(剪切)到文件尾部
d}                  # 删除(剪切)下一个段落
d{                  # 删除(剪切)上一个段落
d/f<CR>             # 比较高级的组合命令,它将删除 当前位置 到下一个字母 f 之间的内容,其中 <CR> 为 <Enter> 回车键

~                   # 转换大小写
g~iw                # 替换当前单词的大小写
gUiw                # 将单词转成大写
guiw                # 将当前单词转成小写
guu                 # 全行转为小写
gUU                 # 全行转为大写
Ctrl+A              # 增加数字
Ctrl+X              # 减少数字

Текст объект

Примечание: Только для визуального режима или после операции, например: операция включает выбор v, удаление d, копирование y, изменение c и т. д.

aw                  # Операция целого слова, не включая разделители (aw: a word)
aW                  # Операция всего слова, включая разделители (aW: a Word)
iw                  # Операция целого слова, не включая разделители (iw: inner word)
iW                  # Операция всего слова, включая разделители (iW: inner Word)
is                  # Операция всей фразы, не включая разделители (s: sentence)
ib                  # Операция внутреннего блока, от [( до ]) (b: block)
iB                  # Операция большого блока, от [{ до ]} (B: Block)
ab                  # Операция одного блока, от [( до ]) (b: блок)
aB                  # Операция большого блока, от [{ до ]} (B: Блок)
ap                  # Операция абзаца (p: paragraph)
ip                  # Операция внутренней фразы
i)                  # Операция маленькой скобки
a)                  # Операция маленькой скобки, включая маленькую скобку
i]                  # Операция средней скобки
a]                  # Операция средней скобки, включая среднюю скобку
i}                  # Операция большой скобки
a}                  # Операция большой скобки, включая большую скобку
i'                  # Операция одинарной кавычки
a'                  # Операция одинарной кавычки, включая одинарную кавычку
i"                  # Операция двойной кавычки
a"                  # Операция двойных кавычек, включая двойные кавычки
a`                  # Операция одной обратной кавычки
i`                  # Операция внутренней обратной кавычки
a>                  # Операция одного <> блока
i>                  # Операция внутреннего <> блока
at                  # Операция тега, например, от <aaa> до </aaa> (t: tag)
it                  # Операция внутри тега, например от <aaa> до </aaa>
2i)                 # Операция двух уровней внутренних скобок
2a)                 # Операция двухуровневых внутренних скобок, включая маленькие скобки
[N]f)               # Перемещение к N-й скобке
[N]t)               # Перемещается перед N-й скобкой

Операция над текстовыми объектами, такими как пары скобок, знаки препинания и содержимое внутри пар знаков препинания, очень полезна для программирования и может быть кратко изложена следующим образом:

ci'、ci"、ci(、ci[、ci{、ci<                # Изменить содержимое этих пар знаков препинания
ca'、ca"、ca(、ca[、ca{、ca<                # Измените содержимое этих пар знаков препинания, включая сами знаки препинания
di'、di"、di(、dib、di[、di{、diB、di<       # Удалить содержимое этих пар знаков препинания
da'、da"、da(、dab、da[、da{、daB、da<       # Удалите содержимое этих пар знаков препинания, включая знаки препинания **По умолчанию курсор находится в строке:**

| .          | Курсор находится в текущей строке                                           |
| N          | Строка № N                                               |
| $          | Последняя строка                                              |
| 'a         | Строка, помеченная как a (перед этим была использована команда ma для маркировки)                    |
| $-1        | Вторая с конца строка. Можно прибавлять или вычитать определённое значение к/из строки для получения определённой строки             |
| 1,10       | Строки с 1 по 10                                             |
| 1,$        | От первой до последней строки                                         |
| 1,.        | От первой строки до текущей                                           |
| .,$        | От текущей строки до последней                                         |
| 'a,'b      | Строка a до строки b (перед этим были использованы команды ma и mb для маркировки) |
| %          | Все строки (эквивалентно 1 и $)                                    |
| ?str?      | Поиск от текущей позиции вверх по тексту до первого вхождения строки str (str может быть регулярным выражением)      |
| /str/      | Поиск от текущей позиции вниз по тексту до первого вхождения строки str (str может быть регулярным выражением)      |

**Примечание**: все методы, используемые для обозначения диапазона, могут быть изменены с помощью операций + и - для установки относительного смещения.

- [flags] имеет следующие значения:


| [flags] значение | Значение                                     |
| :---------: | --------------------------------------- |
| g           | Заменить все совпадения в указанном диапазоне (g: global) |
| c           | Запрос подтверждения перед заменой (c: confirm)       |
| e           | Игнорировать ошибки во время выполнения (e: error)            |
| i           | Не различать регистр (i: ignore)                  |
| Нет          | Заменить только первое совпадение в диапазоне          |

Пример:
```bash
g&                        # Повторить предыдущую команду substitute
:s/old/new/               # Заменить old на new в текущей строке
:s/old/new/g              # Заменить все old на new в текущей строке
:s/old/\U&/               # Заменить old на OLD в верхнем регистре в текущей строке
:N,Ms/old/new/g           # Заменить все old на new в строках от N до M
:%s/old/new/g             # Заменить все old на new во всём файле
:%s/old/new/gc            # Заменить все old на new во всём файле и запросить подтверждение перед каждой заменой
:%s/^/xxx/g               # Вставить xxx в начало каждой строки, ^ обозначает начало строки, полезно при комментировании
:%s/./# &                 # Добавить комментарий в начале непустой строки, & представляет собой символ, который был сопоставлен
:%s/$/xxx/g               # Вставить xxx в конец каждой строки, $ обозначает конец строки
:%s/hello/&, world/       # Заменит hello на hello, world
:%s/.*/(&)/               # Заключить каждую строку в скобки
:%s/\s\+$//e              # Удалить пробелы в конце каждой строки
:%s/1\\2\/3/123/g         # Заменить "1\2/3" на "123", специальные символы экранируются обратной косой чертой
:%s/\r//g                 # Удалить символы DOS новой строки ^M
:%s///gn                  # Подсчитать количество совпадений шаблона
:%s/^\n$//gc/             # Объединить несколько пустых строк в одну
:%s/\n/\r\r/              # Добавить пустую строку после каждой существующей строки
:%s/^\s*$\n//g            # Удалить все пустые строки
:%s/^M$//g                # Удалить явные символы ^M в файле, то есть проблемы с символами новой строки операционной системы
:%s/_\(\w\)/\u\1/g        # Преобразовать символы нижнего подчеркивания в символы верхнего регистра
:%s/^\(\w\)/\L\1/g        # Перевести первую букву в нижний регистр
:h[elp] s[ubstitute]      # Получить справку по команде substitute

Команда global для замены

Существует более гибкий способ замены, чем простая замена, он позволяет выполнять указанную команду Ex после сопоставления с определённым шаблоном, это команда Vim global, которая очень эффективна для повторяющихся задач. Формат команды следующий:

:[range]g[lobal][!]/{pattern}/[cmd]

Параметры:

  • [range]: указывает диапазон действия команды, по умолчанию диапазон действия команды global — весь файл (обозначается %). Диапазон действия такой же, как и в разделе «Диапазон».
  • [!]: указывает на инвертирование поведения команды global, выполнение cmd на строках, которые не соответствуют указанному шаблону.
  • {pattern}: указывает шаблон, который должна искать команда global, если оставить поле пустым, Vim будет использовать последний использованный шаблон поиска.
  • [cmd]: любая команда Ex, кроме команды global, по умолчанию используется команда :print, сокращённо :p.

Например:

:g/pattern                  # Найти и отобразить все строки в файле, содержащие шаблон pattern, и перейти к последнему совпадению
:g/pattern/p                # Найти и отобразить все строки, соответствующие шаблону pattern
:g/\<pattern\>/p            # Найти и отобразить все точные совпадения со словом pattern
:g!/pattern/nu              # Найти и отобразить все строки без шаблона pattern и показать номера этих строк
:v/pattern/d                # Удалить все строки, не соответствующие шаблону pattern
:g/.*/m0                    # Переупорядочить все строки в обратном порядке. Здесь :t или :copy перемещает каждую строку после следующей строки
:g/^/t.                     # Копировать каждую строку
:g/^/+1 d                   # Удалить чётные строки
:g/^/d|m.                   # Удалить нечётные строки
:g/^$/d                     # Удалить все пустые строки
:g/^\s*$/d                  # Удалить все пустые строки
:v/./d                      # Удалить все непустые строки, где . соответствует любому символу, кроме символа новой строки \n
:g/pattern/d_               # Удалить большое количество совпадающих строк, чтобы избежать ненужного времени копирования совпадающих строк в чёрный ящик _
:N,Mg/pattern/p             # Найти и отобразить строки между N и M, соответствующие шаблону pattern
:%g/^ xyz/normal dd         # Означает, что для строк, начинающихся с пробела и xyz, выполняется команда Normal dd
:g/.\n\n\@!/norm o          # Для непустых строк добавить новую строку после каждой строки, объединить несколько новых строк в одну, \n соответствует символу новой строки, \n\@! означает, что за \n не следует \n, иначе совпадение не удастся
:h[elp] :g[lobal]           # Получить помощь по команде global

Особое внимание:

  • Команды substitute и global похожи тем, что обе выполняют поиск и сопоставление, но substitute выполняет замену, а global выполняет другие команды.
  • Команда global фактически состоит из двух этапов: сначала она сканирует указанный диапазон [range] и помечает строки, соответствующие {pattern}; затем последовательно выполняет команду [cmd] для отмеченных строк. Если помеченная строка удаляется, перемещается или объединяется в результате предыдущей команды в процессе выполнения команды [cmd], её метка автоматически удаляется и команда [cmd] не выполняется для этой строки. Пример можно увидеть в командах удаления нечётных и чётных строк! Добавление комментариев в начало строк:

:N,M s/^ 注释符 //g — в строках с N по M удалить комментарий в начале;
:3,5 s/^/#/g — добавить решётку # в начало строк с 3 по 5;
:3,5 s/^#//g — удалить решётку # из начала строк с 3 по 5.

Комментарии для всего документа:

:1,$ s/^/#/g — добавить комментарий решёткой # для всего документа;
:1,$ s/^#//g — убрать комментарии решёткой # для всего документа.

:s — команда для замены:

:%s/^/#/g и %:s/^#//g — соответственно добавить и убрать решётку # для всего документа (второй вариант работает быстрее).

Открыть файл

vim [options]             # запустить Vim и открыть пустой буфер
vim [options] {file} ..   # запустить и отредактировать один или несколько файлов
vim [options] -           # прочитать файл со стандартного ввода
vim [options] -t {tag}    # отредактировать файл, связанный с тегом tag
vim [options] -q [fname]  # начать редактирование с быстрым исправлением и отобразить первую ошибку. Для опций см. ниже

vim .                     # открыть файловый менеджер, отобразить каталог файлов, выбрать файл для редактирования
vim {file}                # открыть или создать файл и поместить курсор в первую строку
vim + {file}              # открыть файл и поместить курсор в последнюю строку
vim +[N] {file}           # открыть файл и поместить курсор на строку N
vim -b {file}             # открыть файл в двоичном режиме, чтобы можно было видеть специальные символы, такие как символ новой строки ^M
vim -v {file}             # режим Vi, запуск Ex в обычном режиме
vim -e {file}             # режим Ex, запуск Vim в режиме Ex
vim -r {file}             # восстановить файл после предыдущего аварийного завершения
vim -R {file}             # открыть файл только для чтения, но можно использовать :wq! для записи
vim -x {file}             # открыть зашифрованный файл
vim -p {files}            # открыть несколько файлов, каждый файл занимает отдельную вкладку
vim -o {files}            # редактировать несколько файлов в горизонтальных разделенных окнах
vim -O {files}            # редактировать несколько файлов в вертикальных разделенных окнах
vim -c cmd {file}         # перед открытием файла file выполнить команду cmd; например, vim file.txt -c "e ++enc=UTF-8" для открытия файла file.txt с указанной кодировкой
vim +{cmd} {file}         # после открытия файла file выполнить команду cmd
vim +/string {file}       # открыть файл file и разместить курсор на первом совпадении string
vim -d {file1} {file2}    # одновременно открыть файлы file1 и file2 и сравнить их

Сохранить и выйти

:w                  # сохранить файл и обновить время последнего изменения
:w[rite] {file}     # сохранить файл с именем file
:w !sudo tee %      # сохранить файл с правами суперпользователя, также можно сделать так: :w !sudo tee % > /dev/null
:wa                 # сохранить все файлы
:wa[ll]             # сохранить все файлы
:wqa[ll]            # сохранить все файлы и выйти
:[N]wn[ext]         # сохранить текущий файл и перейти к редактированию следующих N файлов
:[N]wp[revious]     # сохранить текущий файл и перейти к редактированию предыдущих N файлов
:q                  # закрыть текущее окно и выйти
:q[uit]             # закрыть текущее окно и выйти
:q!                 # не сохранять файл и принудительно выйти
:qa[ll]             # отказаться от всех операций с файлами и выйти
:qa[ll]!            # отказаться от всех операций с файлами и принудительно выйти
:x                  # сохранить файл и выйти, не обновляя время последнего изменения файла
ZZ                  # сохранить измененный файл, закрыть окно выхода, эквивалентно :x
ZQ                  # не сохранять файл, закрыть окно выхода, эквивалентно :q!

Сравнить файлы

Режим сравнения Vim зависит от команды diff, поэтому сначала убедитесь, что команда diff доступна в вашей системе.

vimdiff lfile rfile       # сравнить файлы в вертикальном разделении окон
vim -d lfile  rfile       # сравнить файлы в вертикальном разделении окон
vim -d -o lfile rfile     # сравнить файлы в горизонтальном разделении окон

:diffs[plit] {file}       # разделить текущий буфер и загрузить другой файл file для сравнения
:vert diffs {file}        # использовать вертикальное разделение при загрузке файла
:difft[his]               # добавить текущий файл к diff
:diffp[atch] {patchfile}  # загрузить содержимое буфера в текущее окно для сравнения

:diffu[pdate]             # обновить diff после внесения изменений
:diffu[pdate]!            # обновить diff для всех файлов

:[range]diffpu[t]         # объединить указанный диапазон и скопировать содержимое в другой файл
:[range]diffg[et]         # объединить указанный диапазон и вставить содержимое из другого файла

]c                        # перейти к следующему различию в diff
[c                        # перейти к предыдущему различию в diff

:diffo[ff]                # выйти из режима diff текущего файла
:diffo[ff]!               # выйти из режима diff всех окон
:qa[ll]                   # не сохранять изменения и выйти
:wa[ll]                   # сохранить все изменения
:wqa[ll]                  # сохранить изменения после слияния и выйти

Операции с файлами

:e[dit] {file}      # открыть файл для редактирования, используя абсолютный или относительный путь к файлу, Tab для автозаполнения пути
:e[dit] .           # открыть файловый менеджер и просмотреть файлы в текущем каталоге, выбрать и отредактировать
:e[dit]             # повторно загрузить текущий файл
:e[dit]!            # отменить изменения и вернуться к состоянию файла при открытии
:E[xplore]          # открыть файловый менеджер и показать активный буферный каталог
:sav[eas] {file}    # сохранить как указанный файл file
:o {file}           # открыть другой файл в текущем окне (o: open)
:r {file}           # прочитать содержимое файла и вставить его после курсора
:r !dir             # захватить вывод команды dir и вставить после курсора
:on[ly]             # закрыть все окна, кроме текущего, эквивалент Ctrl+W o
:clo[se]            # закрыть текущее окно файла, эквивалент Ctrl+W c
:cd {path}          # изменить текущий путь Vim на path
:cd -               # вернуться к предыдущему текущему пути
:pwd                # показать текущий путь Vim
:n[ew] {file}       # открыть новое окно и создать новый файл file
:[N]new             # открыть N новых окон и создать новые файлы, где N — любое положительное целое число
:ene[w]             # создать новый файл в текущем окне
:[N]vne[w]          # создать N новых окон для редактирования новых файлов, где N — любое положительное целое число
:tabnew             # создать новую вкладку для редактирования нового файла
:fin[d] {file}      # найти файл file в пути и отредактировать
:f[ile]             # показать имя текущего файла и позицию курсора
:f[ile] {name}      # установить имя файла как name
:files              # просмотреть список буферов

Буфер

Примечание: в запросе есть опечатки, которые были исправлены при переводе. Отображение всех вкладок:

  • :tabnew {file} — открыть новый файл file во вкладке;
  • :tabe[dit] {file} — открыть и отредактировать файл file во вкладке;
  • :tabf[ind] {file} — найти файл file в текущей папке и открыть его во вкладке;
  • :tab split — открыть файл из текущего окна во вкладке;
  • :tab ball — открыть все файлы из буфера обмена во вкладках;
  • :tab drop {file} — если файл file открыт в другой вкладке или окне, пропустить его, иначе открыть во вкладке;
  • :tabc[lose] — закрыть текущую вкладку;
  • :tabo[nly] — закрыть все вкладки, кроме текущей;
  • :tabn N — перейти к N-ой вкладке, например: :tabn 3 — перейти к третьей вкладке;
  • :tabm[ove] N — переместить текущую вкладку на N-ую позицию;
  • :tabm[ove] +N — переместить вкладку вправо на N позиций;
  • :tabm[ove] -N — переместить вкладку влево на N позиций;
  • :tabr[ewind] — перейти к первой вкладке (эквивалентно :tabfirst);
  • :tabfir[st] — перейти к первой вкладке;
  • :tabl[ast] — перейти к последней вкладке;
  • :tabn[ext] — перейти к следующей вкладке (эквивалентно gt);
  • :tabp[revious] — перейти к предыдущей вкладке (эквивалентно gT);
  • gt — перейти к следующей вкладке;
  • gT — перейти к предыдущей вкладке;
  • [N]gt — перейти к N-ой вкладке;
  • :tabd[o] {cmd} — выполнить команду cmd во всех открытых вкладках одновременно;
  • :tab help — открыть справку по работе с вкладками;
  • :h tabpage — открыть подробную справку по работе с вкладками.

Vim-закладки:

  • m{mark-name} — создать закладку с именем mark-name;
  • :marks — вывести список всех закладок;
  • :marks {mark-name} — показать информацию о закладке с именем mark-name;
  • `{mark-name} — перейти к месту закладки mark-name;
  • '{mark-name} — перейти в начало строки закладки mark-name;
  • :delm[arks] {mark-name} — удалить закладку mark-name, можно удалить несколько закладок сразу;
  • :delm[arks]! — удалить все закладки из текущей сессии, но не включая закладки A-Z и 0-9;
  • :h marks — открыть справку о закладках.

Например:

  • :marks — показать все закладки;
  • m{a-zA-Z} — создать закладки, используя буквы a-z для файлов и A-Z для глобальных закладок;
  • ma — сохранить текущее местоположение как закладку a;
  • :marks a — показать подробную информацию о закладке a;
  • 'a — перейти к закладке a;
  • `a — перейти точно в место закладки a;
  • `` — вернуться к предыдущему местоположению;
  • '' — вернуться к предыдущему местоположению;
  • '. — вернуться к последнему отредактированному местоположению;
  • .' — вернуться к последнему местоположению перед редактированием;
  • 'A — перейти к глобальной закладке A;
  • [' — перейти к предыдущей закладке;
  • ]' — перейти к следующей закладке;
  • '< — перейти к началу последнего визуального выделения;
  • ' — перейти к концу последнего визуального выделения.

Файл-браузер:

Vim 7.0 и выше включает плагин Netrw, который предоставляет функции файлового браузера. Он быстрее и легче, чем сторонние плагины, такие как NERDTree.

*:[N]E[xplore][!] [dir] — открыть файловый браузер в текущем окне; *[N]Hex[plore][!] [dir] — разделить окно горизонтально и открыть файловый браузер; *[N]Lex[plore][!] [dir] — открыть файловый браузер слева от текущего окна; *[N]Sex[plore][!] [dir] — разделить окно по горизонтали и открыть файловый браузер; *[N]Vex[plore][!] [dir] — разделить окно вертикально и открыть файловый браузер; *:Tex[plore] [dir] — открыть файловый браузер на новой вкладке; *:Rex[plore] — вернуться к файловому браузеру; *:Nexplore — перейти к следующему подходящему файлу; *:Pexplore — перейти к предыдущему подходящему файлу.

:h[elp] netrw — открыть дополнительную справку по Netrw.

Проверка орфографии:

  • :set spell — включить проверку орфографии;
  • :set nospell — отключить проверку орфографии.

Чтобы перейти к следующему слову с ошибкой: *]s — перейти к следующему слову с ошибкой; *[s — перейти к предыдущему слову с ошибкой.

Добавьте слово в словарь правописания: zg — добавить слово в словарь; zug — удалить слово из словаря.

Получите предложение по исправлению: z= — получить предложение по исправлению.

Сворачивание кода:

  • :h[elp] z — открыть справку по сворачиванию кода;
  • zf{motion} — вручную определить сворачивание (f: fold); *{range}fold — свернуть диапазон строк {range}; *z= — предложить исправление; *zf — создать сворачивание кода; *zF — создать сворачивание для N строк; *za — развернуть или свернуть текущее сворачивание; *zA — рекурсивно переключать сворачивания; *zi — инвертировать состояние сворачивания (i: invert); *zc — закрыть сворачивание под курсором (c: close); *zC — рекурсивно закрыть сворачивания (C: Close); *zj — перейти к следующему сворачиванию; *zk — перейти к предыдущему сворачиванию; *zd — удалить сворачивание под курсором (d: delete); *zD — рекурсивно удалить сворачивания (D: Delete); *zE — удалить все сворачивания; *zm — уменьшить уровень вложенности сворачиваний (m: more); *zM — закрыть все сворачивания, установить уровень сворачивания равным 0, установить foldenable; *zn — не сворачивать, сбросить foldenable и развернуть все коды (n: none); *zN — нормально свернуть, сбросить foldenable и восстановить все сворачивания (N: Normal); *zr — увеличить уровень вложенности сворачиваний (r: reduce); *zR — развернуть все сворачивания, установить максимальный уровень вложенности (R: Reduce); *zo — развернуть сворачивание под курсором (o: open); *zO — рекурсивно развернуть сворачивания (O: Open).

Шифрование и дешифрование документов:

vim -x {file} — зашифровать документ, ввести пароль шифрования и подтвердить его. Обратите внимание, что даже без изменения содержимого необходимо сохранить файл, чтобы настройки пароля вступили в силу; *:X — зашифровать документ в командном режиме, ввести пароль и подтвердить его; *:set key={password} — зашифровать документ в командном режиме, указав пароль. В запросе текст технической направленности из области разработки и тестирования программного обеспечения.

Основной язык текста запроса — английский.

Команда режима Vim, выводящая местоположение конфигурационного файла:

:edit $MYVIMRC — открывает конфигурационный файл Vim в режиме команды.

Использование команды для загрузки новых параметров конфигурации после изменения конфигурационного файла Vim:

:so $MYVIRC или :so % — загружает новые параметры конфигурации.

Вывод глобального местоположения конфигурационного файла vimrc, который находится в каталоге установки Vim:

:echo $VIM.

Вывод местоположения пользовательского конфигурационного файла vimrc, находящегося в домашнем каталоге пользователя:

:echo $HOME.

В командном режиме можно установить отдельные параметры настройки, которые будут действовать только в текущем окне (перед командой необходимо добавить «:»).

Для отображения всех параметров с их значениями по умолчанию используется команда:

:se[t][!] — отображает все параметры с их значениями. Если используется [!], каждый параметр отображается на отдельной строке.

Чтобы отобразить список всех параметров, используется команда:

:set[!] all — отображает весь список параметров. Если используется [!], то каждый параметр отображается на отдельной строке.

Чтобы сбросить все параметры до значений по умолчанию, используется команда:

:set all& — сбрасывает все параметры до значений по умолчанию.

Чтобы изменить значение параметра, используется команда вида:

:set {option}? — проверяет текущее значение параметра. В нижней части экрана отображается его возвращаемое значение.

:set {option} — изменяет значение параметра. Параметры могут быть трёх видов: булевы, числовые и строковые.

:set no{option} — отключает параметр.

:set {option}! — инвертирует значение параметра.

:set inv{option} — инвертирует значение параметра (аналогично предыдущей команде).

:set {option}{value} или :set {option}=value — устанавливает значение параметра.

:setlocal — эквивалент команды :set, но устанавливает локальное значение параметра.

:setglobal — эквивалент команды :set, но устанавливает глобальное значение параметра.

:help set — просмотр информации о команде.

:map — просмотр текущих сопоставлений клавиш в конфигурации Vim.

:inoremap — просмотр текущего сопоставления клавиш в режиме вставки.

:nnoremap — просмотр текущего сопоставления клавиш в нормальном режиме.

:unmap {lhs} — отменяет сопоставление клавиш {lhs}. Например, :unmap отменяет сопоставление клавиши F10.

:mapclear — удаляет все сопоставления клавиш; следует использовать с осторожностью, так как эта команда также удаляет все пользовательские и системные сопоставления.

:mapclear! — удаляет сопоставления клавиш из режима вставки и командного режима.

:imapclear — удаляет сопоставления клавиш из режима вставки.

:vmapclear — удаляет сопоставления клавиш из визуального режима.

:omapclear — удаляет сопоставления клавиш из режима ожидания оператора.

:nmapclear — удаляет сопоставления клавиш из нормального режима.

:cmapclear — удаляет сопоставления клавиш из командного режима.

:scriptnames — просмотр плагинов и скриптов, загружаемых при запуске Vim.

Формат команды для сопоставления клавиш:

[prefix]map {lhs} {rhs} — сопоставляет клавишу {lhs} с {rhs}, где {rhs} может быть сканировано или рекурсивно сопоставлено.

Параметры команды:

{lhs} — левая часть сопоставления, представляющая клавишу.

{rhs} — правая часть сопоставления, представляющая действие, которое будет выполнено при нажатии клавиши.

[prefix] — префикс режима, имеющий следующие значения:

Префикс Режим Формат команды Сокращение
<Space> Обычный, визуальный, выбор и ожидание оператора :map {lhs} {rhs} Нет
n Нормальный режим :nmap {lhs} {rhs} :nm {lhs} {rhs}
v Визуальный и выборный режимы :vmap {lhs} {rhs} :vm {lhs} {rhs}
s Выборный режим :smap {lhs} {rhs} Нет
x Визуальный режим :xmap {lhs} {rhs} :xm {lhs} {rhs}
o Режим ожидания оператора :omap {lhs} {rhs} :om {lhs} {rhs}
! Вставка и командный режим :map! {lhs} {rhs} Нет
i Режим вставки :imap {lhs} {rhs} :im {lhs} {rhs}
I Режимы вставки, командного и Lang-Arg :lmap {lhs} {rhs} :lm {lhs} {rhs}
c Командный режим :cmap {lhs} {rhs} :cm {lhs} {rhs}
nore Не рекурсивное сопоставление, может использоваться с любым префиксом :noremap {lhs} {rhs} :nor {lhs} {rhs}
un Отмена сопоставления {lhs} :unmap {lhs} Нет

Перед {rhs} могут отображаться специальные символы:

Специальный символ Значение
* Не может быть повторно сопоставлено
& Может быть повторно сопоставлено только в локальных скриптах
@ Сопоставление с буфером

Специальные параметры (должны быть указаны после {lhs}):

| Параметр | Описание | | --- | --- --- | | | Ограничивает сопоставление текущим буфером (редактируемым файлом) | | | Скрывает команду сопоставления от вывода в командной строке | | | Используется для определения специальных клавиш | | <script> | Сопоставляет {rhs} только с символами, определёнными в скрипте с помощью | | expr | Вычисляет выражение перед использованием в качестве {rhs} | | unique | Проверяет наличие сопоставления перед созданием нового | | Ключ | Описание ключа | Комбинация клавиш | | -------------------- | ----------------------- | ------------------------------------------------------------------ | | <F1> ~ <F12> | Функциональные клавиши F1 — F12 | | | <K0> ~ <K9> | Цифры от 0 до 9 | | | <Shift> | Клавиша Shift | <S-...> <s-...> <Shift-...> | | <Ctrl> | Клавиша Ctrl | <C-...> <c-...> <Ctrl-...> | | <Alt> | Клавиша Alt | <A-...> <a-...> <Alt-...> | | <Up>/<Down>/<Right>/<Left> | Направленные клавиши | | | <Esc> | Клавиша Esc | | | <Leader> | Префиксный ключ | | | <Tab> | Табуляция | | | <CR> | Ввод (Enter) | |

В файле конфигурации vimrc можно массово настроить параметры, например:

syntax              # Вывести список уже определённых синтаксических элементов.
syntax clear        # Очистить уже определённые правила синтаксиса.
syntax on           # Включить подсветку синтаксиса.
syntax off          # Отключить подсветку синтаксиса.
set nu              # Включить отображение номеров строк. Чтобы отключить, используйте :set nonu.
set number          # Включить отображение номеров строк. Чтобы отключить, используйте :set nonumber.
set list            # Включить отображение символов табуляции и переноса строки.
set history=200     # Записать 200 команд в историю.
set bs=?            # Установить режим обратного пробела. В современных редакторах используется :set bs=eol, start, indent.
set sw=4            # Установить ширину отступа в 4 символа.
set ts=4            # Установить ширину символа табуляции в 4 пробела.
set noet            # В GVim запретить захват клавиши Alt для переключения раскладки.
set et              # Разрешить переключение раскладки с помощью клавиши Alt.
set winaltkeys=no   # В GVim разрешить захват функциональных клавиш для переключения раскладки.
set nowrap          # Запретить автоматический перенос строк.
set ttimeout        # Разрешить терминалу обнаруживать нажатие функциональных клавиш (функциональные клавиши представляют собой последовательность символов Esc, начинающуюся с префикса).
set ttm=100         # Установить время ожидания нажатия функциональной клавиши в 100 миллисекунд.
set term=?          # Установить тип терминала, например, xterm.
set ignorecase      # Игнорировать регистр при поиске.
set smartcase       # Умный поиск по регистру: игнорировать регистр, если в строке поиска нет заглавных букв, иначе учитывать регистр.
set relativenumber  # Отображать относительные номера строк (расстояние между текущей строкой и другими строками).
set paste           # Перевести в режим вставки (отключить форматирование при вставке).
set nopaste         # Перевести из режима вставки.
set spell           # Включить проверку орфографии.
set hlsearch        # Включить выделение результатов поиска.
set nohlsearch      # Отключить выделение результатов поиска.
set termguicolors   # Включить поддержку цветов в Vim.
set ruler           # Всегда отображать положение курсора.
set nocompatible    # Отключить совместимость с исходным vi, этот параметр должен быть первым.
set incsearch       # При вводе текста динамически отображать результаты поиска.
set insertmode      # Vim всегда находится в режиме вставки, используйте Ctrl+o для временного выполнения команды.
set ff=unix         # Использовать перенос строки в стиле Unix.
set ff=dos          # Использовать перенос строки в стиле DOS.
set ff?             # Просмотреть настройки переноса строки.
set hidden          # Включить скрытый режим, позволяя переключаться на несохранённые буферы или отключать их.
set nohidden        # Отключить скрытый режим, не позволяя переключаться на несохранённые буферы.
set termcap         # Просмотреть, что терминал отправляет и получает от Vim.
set guicursor=      # Решить проблему с символами в SecureCRT/PenguiNet при использовании NeoVim.
set t_RS= t_SH=     # Решить проблему со странными символами в функциях Vim 8.0 в SecureCRT/PenguiNet.
set fo+=a           # Включить автоматическое форматирование текстовых блоков.
set showtabline=?   # Показать панель вкладок, ? = 0 скрывает панель вкладок, 1 показывает её при необходимости, 2 всегда показывает.
inoremap vv <Esc>   # В режиме вставки vv сопоставляется с Esc для выхода из режима вставки.
nnoremap gh ^       # В обычном режиме gh сопоставляется с ^ для перехода к началу строки.
nnoremap gl $       # В обычном режиме gl сопоставляется с $ для перехода к концу строки.

## Режимы Vim

- Обычный режим: нажмите Esc или Ctrl+[ для перехода в обычный режим, в нижнем левом углу отображается имя файла или ничего.
- Режим вставки: нажмите i для перехода в режим вставки, в нижнем левом углу отобразится --INSERT--.
- Визуальный режим: нажмите v для перехода в визуальный режим, в нижнем левом углу отобразится --VISUAL--.
- Выбор режима: нажмите {visual}+Ctrl+g для перехода в режим выбора, в нижнем левом углу отобразится --SELECT--.
- Заменяющий режим: начните с r или R для запуска заменяющего режима, в нижнем левом углу отобразится --REPLACE--.
- Командный режим: начните с : или / или ?, чтобы перейти в командный режим, в нижнем левом углу не будет отображаться явная информация.
- Ex режим: начните с Q, чтобы войти в Ex режим, который похож на командный режим, после выполнения команды вы останетесь в Ex режиме, введите :vi[sual], чтобы выйти из Ex режима.

## Внешние команды

:!{command} # Выполнить одноразовую команду оболочки, например :!pwd, вывести текущий путь к каталогу в режиме Vim. :!! # Повторно выполнить последнюю выполненную команду. :sh[ell] # Запустить интерактивную оболочку для выполнения нескольких команд без выхода из Vim. exit завершает работу и возвращается в Vim. :!ls # Выполнить внешнюю команду ls и дождаться результата. :r !ls # Перенести вывод внешней команды ls и вставить его после курсора. :w !sudo tee % # Сохранить текущий файл с правами sudo, также можно использовать :w !sudo tee % > /dev/null. :call system('ls') # Вызвать команду ls, но не отобразить результат. :!start notepad # В Windows запустить Notepad, перед командой можно добавить silent. :sil !start cmd # В Windows открыть текущую директорию в командной строке. :%!prog # Запустить программу фильтрации текста, например для упорядочивания JSON формата :%!python -m json.tool.


## Команды GUI

:gui # Запустить GUI в UNIX. :gui {fname} # То же самое, но также открыть fname. :menu # Вывести все меню. :menu {mpath}

:menu {mpath} {rhs}          # Добавить rhs в меню mpath.
:menu {pri} {mpath} {rhs}    # То же самое, но с приоритетом pri.
:menu ToolBar.{name} {rhs}   # Добавить rhs к панели инструментов ToolBar.
:tmenu {mpath} {text}        # Добавить текст к меню mpath в качестве подсказки.
:unmenu {mpath}.             # Удалить меню mpath. 

## Автоматические команды

Автоматические команды — это команды, которые выполняются автоматически при возникновении определённого события. Они используются для автоматизации повторяющихся действий и повышения эффективности работы.

Синтаксис автоматической команды:

```bash
:au[tocmd] [group] {event} {aupat} [++once] [++nested] {command}

Параметры:

  • group — необязательный параметр, используется для управления группами автоматических команд;
  • event — событие, которое запускает выполнение команды;
  • aupat — шаблон, который определяет, какие файлы должны быть обработаны командой;
  • nested — необязательный флаг, разрешающий вложенные автоматические команды;
  • command — команда, функция или скрипт, который должен быть выполнен.

Примеры использования:

  • :au[tocmd] — просмотр всех автоматических команд, включая те, что определены в файле vimrc, а также те, что были добавлены плагинами;
  • :au[tocmd]! — удаление всех автоматических команд (включая те, что добавлены плагинами);
  • :help autocommand-events — просмотр документации по событиям автоматических команд;
  • :help autocmd-patterns — просмотр документации по шаблонам автоматических команд.

Группы автоматических команд:

  • :h augroup — просмотр документации по группам автоматических команд.

Пример использования группы автоматических команд:

:augroup cprograms
:    autocmd!
:    autocmd FileReadPost *.c :set cindent
:    autocmd FileReadPost *.cpp :set cident
:augroup END

Здесь мы определяем группу автоматических команд «cprograms», которая будет выполнять определённые действия при чтении файлов с расширением .c или .cpp. Команда autocmd! используется для удаления любых существующих автоматических команд перед добавлением новых.

Если для одного и того же файла и события определено несколько автоматических команд, то они будут выполняться последовательно. Поэтому рекомендуется использовать команду autocmd! в начале группы автоматических команд для предотвращения дублирования.

Быстрое исправление ошибок

Плагин Quickfix предоставляет функции, полезные для компиляции и отладки программ.

Команды для работы с Quickfix:

  • :cope[n] [height] — открыть окно Quickfix для отображения списка ошибок, height — высота окна в строках;
  • :lop[en] [height] — открыть окно Quickfix для отображения местоположения текущего окна;
  • :ccl[ose] — закрыть окно Quickfix;
  • :lcl[ose] — закрыть окно с местоположением текущего окна;
  • :cw[indow] [height] — открыть окно Quickfix при обнаружении ошибки, иначе ничего не делать;
  • :lw[indow] [height] — эквивалентно :cwindow, но использует список местоположений текущего окна;
  • :cbo[ttom] — поместить курсор в последнюю строку окна Quickfix и прокрутить его так, чтобы она была видна;
  • :lbo[ttom] — эквивалент :cbottom, но использует окно со списком местоположений;
  • :cfir[st] — перейти к первой ошибке в окне Quickfix;
  • :cla[st] — перейти к последней ошибке в окне Quickfix;
  • :cl[ist] — вывести список всех ошибок в окне Quickfix;
  • :cc [N] — показать подробную информацию о N-й ошибке;
  • :cn[ext] — перейти к следующей ошибке в окне Quickfix;
  • :cp[rev] — перейти к предыдущей ошибке в окне Quickfix.

Кодировка файлов

Кодировка файла — это способ представления символов в файле. Vim поддерживает различные кодировки файлов, такие как UTF-8, GBK и другие.

Для работы с кодировкой файлов в Vim можно использовать следующие команды:

  • :e ++enc=utf8 {file} — открыть файл file в кодировке UTF-8;
  • :w ++enc=gbk — сохранить текущий файл в кодировке GBK;
  • :set encoding — просмотреть текущую кодировку Vim;
  • :set encoding=UTF-8 — изменить кодировку Vim на UTF-8;
  • :set fileencoding — просмотреть кодировку текущего редактируемого файла;
  • :set fileencoding=UTF-8 — установить кодировку текущего файла на UTF-8.

Также можно использовать команды для настройки автоматического определения кодировки файла:

  • :set fileencodings — просмотреть список кодировок, используемых для автоматического определения кодировки файла;
  • :set fileencodings=UTF-8 — установить UTF-8 в качестве основной кодировки для автоматического определения.

В Vim есть три основных типа кодировок:

  • encoding (enc) — внутренняя кодировка Vim, используемая для хранения данных в буфере, меню и других элементах интерфейса;
  • fileencoding (fenc) — кодировка текущего редактируемого файла, которая используется при сохранении файла;
  • termencoding (tenc) — кодировка, используемая в терминале, если вы работаете в терминальном режиме.

При работе с файлами важно правильно определить их кодировку, чтобы избежать проблем с отображением символов. Если вы не уверены в кодировке файла, вы можете попробовать использовать команду :set fencs=ucs-bom,utf-8,chinese,cp936,latin1 для автоматического определения наиболее подходящей кодировки. # Просмотр Vim встроенных документов с полезными советами

:h set-termcap — просмотр того, как настроить клавиши сканирования.
:viu[sage] — отображение справки по обычным командам. Цель — имитировать соответствующие команды Nvi.
:exu[sage] — отображение справки по командам Ex. Цель — имитировать соответствующие команды Nvi.
:ve[rsion] — просмотр версии Vim, а также просмотр порядка загрузки и расположения конфигурационных файлов Vim.

--- Полезные справочные сведения ---

:h aug[roup] — просмотр справки по группам автоматических команд.
:h internal-variables — получение дополнительной информации о переменных и их области действия.

Некоторые полезные приёмы

  • xp — поменять местами два символа.
  • ddp — поменять две строки местами.
  • bi — добавить символ перед словом.
  • ea — добавить символ после слова.
  • [N]r — заменить N символов одним символом новой строки.
  • g Ctrl+G — подсчёт слов, нажмите g, затем одновременно нажмите Ctrl+g.

Соглашения и стандарты

В этом документе используются различные специальные символы, которые соответствуют следующим соглашениям:

  • [] — квадратные скобки обозначают необязательный элемент, который можно опустить для сокращения ввода или повторения операции.
  • [count] — необязательное число, которое можно использовать перед командой для умножения или повторения команды.
  • ["x] — регистр хранения текста, см. registers, x представляет букву от 'a' до 'z'.
  • {} — содержимое фигурных скобок является обязательным элементом в команде, но может принимать разные значения.
  • {char1-char2} — один символ из диапазона char1–char2, например {a-z} обозначает строчную букву.
  • {motion} — обозначает действие, перемещение курсора или команду перемещения.
  • {operator} — обозначает оператор, используемый для удаления или изменения текста.
  • {visual} — выделенный текст, сначала используйте v, V или Ctrl+v для установки начальной позиции, затем используйте команду перемещения для определения другой конечной позиции.
  • Ctrl+{char} — символ {char}, вводимый как управляющий символ, то есть удерживая клавишу Ctrl, затем нажимая {char}. {char} может быть заглавной или строчной буквой.

Описание клавиш

Следующие клавиши имеют определённые названия, которые могут использоваться в документации Vim и в командах :map (см. файл конфигурации vimrc).

Идентификатор Значение
0
Backspace
Tab
Новая строка
Перевод страницы
Ввод
То же, что и
То же, что и
Эскейп
Пробел
Меньше чем
Обратная косая черта
Вертикальная черта
Удалить
Команда последовательности
CSI для графического интерфейса
Конец строки (может быть , или , в зависимости от системы и формата файла)
Курсор вверх
Курсор вниз
Курсор влево
Курсор вправо
Shift + курсор вверх
Shift + курсор вниз
Shift + курсор влево
Shift + курсор вправо
Ctrl + курсор влево
Ctrl + курсор вправо
- Функциональные клавиши 1–12
- Shift + функциональные клавиши 1–12
Клавиша помощи
Отменить
Insert
Начало строки
Конец строки
Page-up
Page-down
Маленькая клавиатура Home (вверху слева)
Маленькая клавиатура End (внизу слева)
Маленькая клавиатура Page-up (вверху справа)
Маленькая клавиатура Page-down (внизу справа)
Маленькая клавиатура +
Маленькая клавиатура -
Маленькая клавиатура *
Маленькая клавиатура /
Маленькая клавиатура Enter
Маленькая клавиатура десятичная точка
- Маленькая клавиатура 0–9
<S-...> Shift + другие клавиши
<C-...> Ctrl + другие клавиши
<M-...> Alt + клавиша или Meta + клавиша
<A-...> То же самое, что и M-...

Ресурсы в сети

Рекомендации

  • Часто используйте :h[elp] {command} для получения справки по соответствующей команде, чтобы улучшить понимание команды.
  • Никогда не используйте Ctrl+C вместо , так как это может привести к случайному прерыванию выполнения фоновых скриптов.
  • Многие люди используют Ctrl+[ вместо . Это удобно, так как левая рука использует Ctrl, а правая рука — [.
  • В некоторых терминалах при использовании Vim 8 во встроенном терминале могут появляться странные символы. Используйте :set t_RS= t_SH= для решения проблемы.
  • В некоторых терминалах при использовании NeoVim могут появляться странные символы. Используйте :set guicursor= для решения проблемы.
  • Используйте ciw, ci[, ci", ci( и diw, di[, di", di( для быстрого редактирования/удаления текста.
  • При перемещении курсора влево и вправо внутри строки используйте w b e или W B E, это быстрее, чем h l или клавиши со стрелками.
  • Shift + стрелка вверх действует как ускоритель движения, w b e перемещает курсор медленно, но W B E быстро.
  • Научитесь обобщать новые приёмы, например, при перемещении к первому непробельному символу в строке используйте 0w вместо ^.
  • В пустых строках используйте dip для удаления всех соседних пустых строк, viw для выбора смежных пустых строк.
  • Для отступов используйте >8j >} ap =i} ==, документы обычно имеют отступы с интервалом в 6, 9 или обычное количество пробелов.
  • Когда вы обнаружите, что написали слово неправильно, лучше использовать Ctrl+W, это быстрее, чем Backspace.
  • y d c.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/chloneda-vim-cheatsheet.git
git@api.gitlife.ru:oschina-mirror/chloneda-vim-cheatsheet.git
oschina-mirror
chloneda-vim-cheatsheet
chloneda-vim-cheatsheet
master