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

OSCHINA-MIRROR/chloneda-vim-cheatsheet

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README_EN.md

Vim cheat sheet

Введение: таблицы поиска команд Vim, аннотированные профили vimrc, классические схемы клавиатуры Vim, практические книги по Vim, формат Markdown, поиск по каталогам, систематическое обучение, быстрое освоение! 📚

Повторы

.                   # Repeat (Dot) command, повторяет предыдущую команду
N{command}          # Повторяет команду N раз, например 10k, курсор перемещается вверх на 10 строк

Использование макросов и регулярных выражений также может помочь уменьшить количество повторяющихся операций.

Движения курсора

Примечание: в обычном режиме любое из действий можно повторить.

                    # -------------------- Уровень единицы движения курсора --------------------
h                   # Курсор перемещается влево от символа
j                   # Перемещение курсора вниз на одну строку
k                   # Перемещает курсор вверх на одну строку
l                   # Курсор перемещается вправо от символа
                    # -------------------- Движение курсора на уровне слов --------------------
w                   # [count] слова вперёд. Исключительное движение
W                   # [количество] СЛОВ вперёд. Исключительное движение
e                   # Вперёд до конца слова [количество] включительно
E                   # Вперёд к концу СЛОВА [количество] включительно
b                   # [счёт] слов назад. Исключительное движение
B                   # [считать] СЛОВА назад. Исключительное движение
                    # -------------------- Блок уровня движения курсора -------------------
0                   # К первому символу строки
^                   # К первому непустому символу строки. Исключительное движение. Любой счёт игнорируется
$                   # До конца строки
gg                  # Перейти к строке [счёт], по умолчанию первая строка, на первом непустом символе строки
G                   # Перейти к строке [счёт], по умолчанию последняя строка, на первом непустом символе строки
[N]G                # Переход к N-й строке, например, 10G — переход к десятой строке
:N                  # Переход к N-ой строке, например: 10<Enter> — переход к десятой строке
N%                  # Переместиться в N% позицию файла, например, 10% — переместиться в 10% позицию файла
N|                  # Переместить в N столбцов текущей строки
<Enter>             # Переместиться к первому непустому символу следующей строки
N<Enter>            # Переместить курсор вниз на N строк
ge                  # Вернуться назад к концу слова
gE                  # Вернитесь назад к концу пробела
)                   # Перейдите вперёд на одно предложение (разделенное точками)
(                   # Вернитесь на одно предложение назад (разделённое точками)
}                   # Идите вперёд на один абзац (разделённый пустыми строками)
{                   # Назад на один абзац (разделенный пустыми строками)
+                   # Переместитесь к первому непустому символу в следующей строке (так же, как клавиша Enter)
-                   # Переместите курсор к первому непустому символу предыдущей строки
H                   # Переместитесь в верхнюю часть экрана (H: High)
M                   # Переместитесь в середину экрана (M: Middle)
L                   # Переместитесь в нижнюю часть экрана (L: Low)
gm                  # Переместитесь в середину строки
gj                  # Переместите курсор вниз на одну экранную строку (игнорируйте автоматическую обёртку строки)
gk                  # Переместите курсор вверх на одну экранную строку (игнорировать автоперенос)
<S+Up>              # Удерживайте клавишу <Shift>, а затем нажмите стрелку <Up>, чтобы перейти на страницу вверх
<S+Down>            # Удерживать клавишу <Shift> **и затем нажмите стрелку <Down> для перехода на страницу вниз**

<S+Left>            # Удерживая клавишу <Shift>, нажмите клавишу со стрелкой <Left>, чтобы переместиться на одно слово влево

<S+Right>           # Удерживая клавишу <Shift>, нажмите клавишу со стрелкой <Right>, чтобы переместиться на одно слово вправо

:ju[mps]            # Вывести список переходов

:cle[arjumps]       # Очистить список переходов текущего окна

                    # ------------------ Перемещение курсора на уровне экрана -------------------
zz                  # Отрегулировать линию курсора по центру экрана
zt                  # Отрегулировать линию курсора в верхней части экрана
zb                  # Отрегулировать линию курсора внизу экрана
Ctrl+e              # Прокрутить вверх на одну строку
Ctrl+y              # Прокрутить вниз на одну строку
Ctrl+u              # Переместиться вверх на 1/2 экрана
Ctrl+d              # Переместиться вниз на 1/2 экрана
Ctrl+f              # Переместиться вперёд на один полный экран
Ctrl+b              # Переместиться назад на один полный экран

                    # ------------------ Уровень помощи при программировании ---
%                   # Сопоставить переход с соответствующим {} () []
gd                  # Перейти к локальному определению (определение слова под курсором)
gD                  # Перейти к глобальному определению (определение слова под курсором)
gf                  # Открыть файл, имя которого является именем файла под курсором
[[                  # Переход к предыдущей функции верхнего уровня
]]                  # Переход к следующей функции верхнего уровня
[m                  # Переход к предыдущей функции-члену
]m                  # Переход к следующей функции-члену
[{                  # Переход к предыдущему несвязанному {
]}                  # Переход к следующему несвязанному }
[(                  # Переход к предыдущему несвязанному (
])                  # Переход к следующему несвязанному )
[c                  # Последнее различие (при сравнении)
]c                  # Следующее различие (при сравнении)
[/                  # Переход в начало комментария C
]/                  # Переход в конец комментария C
``                  # Вернуться к последней позиции перехода
''                  # Вернуться к последней позиции перехода
`.                  # Возврат к последней отредактированной позиции
'.                  # Возврат к последней отредактированной позиции

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

i                   # Войти в режим вставки в позиции курсора
I                   # Войти в режим вставки в начале строки
a                   # Войти в режим вставки после курсора
A                   # Войти в режим вставки в конце строки
o                   # Вставить новую строку в следующую строку и войти в режим вставки
O                   # Вставить новую строку в предыдущую строку и войти в режим вставки
s                   # Удалить символ под курсором и вставить текст
S                   # Удалить текущую строку и вставить текст
gi                  # Перейти в позицию последнего режима вставки
gI                  # Вставить текст в начало строки (столбец 1)
<Esc>               # Выход из режима вставки
Ctrl+[              # Выход из режима вставки (эквивалентно клавише <Esc>)
Ctrl+C              # Как Ctrl-[ и <Esc>, но не проверяет аббревиатуры

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

Примечание: Войдите в режим вставки с помощью команд i, I, a, A, o, O, s, S.

<Up>                # Курсор вверх
<Down>              # Курсор вниз
<Left>              # Переместить курсор влево
<Right>             # Переместить курсор вправо
<S+Up>              # Удержать клавишу <Shift> и затем нажать стрелку <Up>, чтобы перейти на страницу вверх
<S+Down>            # Удержать клавишу <Shift> и затем нажать стрелку <Down>, чтобы перейти на страницу вниз
<S+Left>            # Удержать клавишу <Shift> и нажать стрелку <Left>, чтобы переместить на одно слово влево
<S+Right>           # Удержать клавишу <Shift> и нажать стрелку <Right>, чтобы переместить на одно слово вправо
<PageUp>            # Страница вверх
<PageDown>          # Страница вниз
<Delete>            # Удалить символ в позиции курсора
<Backspace>         # Клавиша Backspace предназначена для удаления символов назад **Текстовый объект**

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

aw — оперировать всем словом, исключая разделитель (aw: слово).  
aW — манипулировать целыми словами, включая разделители (aW: Слово).  
iw — оперировать целым словом, исключая разделитель (iw: внутреннее слово).  
iW — оперировать целым словом, включая разделитель (iW: внутреннее Слово).  
is — оперировать предложением, исключая разделитель (s: предложение).  
ib — оперировать блоком, от «[(» до «)]» (b: блок).  
iB — оперировать большими блоками, от «[{» до «}]» (B: Блок).  
ab — оперировать блоком, от «[(» до «])» (b: блок).  
aB — оперировать большим блоком, от «[{» до «}]» (B: Блок).  
ap — оперировать абзацем (p: абзац).  
ip — оперировать строкой, содержащей абзац.  
i) — манипулировать строкой в скобках.  
a) — манипулировать строкой в скобках, включая сами скобки.  
i] — оперировать строками в квадратных скобках. **Команды копирования и вставки**

```bash
:3,5t.              # Скопировать содержимое строк с 3 по 5 ниже текущей строки
:t5                 # Скопировать текущую строку ниже строки 5
:t.                 # Скопировать текущую строку ниже текущей строки (эквивалентно yyp в обычном режиме)
:t$                 # Скопировать текущую строку до конца текста
:'<,'>t0            # Скопировать выделенную строку в начало файла

Команды копирования и вставки:

p                   # После вставки в курсор
P                   # Вставить перед курсором
v                   # Войти в визуальный режим
V                   # Визуальный режим отмечен линией
Ctrl+V              # Визуальный режим отмечен столбцом
y                   # Копировать отмеченный контент
y$                  # Скопировать текущую позицию до конца строки
yy                  # Янк (скопировать) строку
Y                   # Скопировать текущую строку, то же самое, что и yy
yiw                 # Скопировать текущее слово
Nyy                 # Скопировать содержимое N строк под курсором
ddp                 # Вырезать текущую строку и вставить (сначала удалить текущую строку, скопировать её в регистр и вставить)
v0                  # Выбрать текущую позицию в начале строки
v$                  # Выбрать текущую позицию в конце строки
viw                 # Выбрать текущее слово
vib                 # Выбрать вещи в скобках
vi)                 # Выбрать содержимое в скобках
vi]                 # Выбрать содержимое в квадратных скобках
viB                 # Выбрать содержимое в фигурных скобках
vi}                 # Выбрать содержимое в фигурных скобках
vis                 # Выбрать содержимое предложения
vab                 # Выбрать содержимое в скобках (включая сами скобки)
va)                 # Выбрать содержимое в скобках (включая сами скобки)
va]                 # Выбрать содержимое в квадратных скобках (включая сами квадратные скобки)
vaB                 # Выбрать содержимое внутри фигурных скобок (включая сами фигурные скобки)
va}                 # Выбрать содержимое внутри фигурных скобок (включая сами фигурные скобки)
:set paste          # Разрешить режим вставки (чтобы избежать автоматического отступа, влияющего на форматирование при вставке)
:set nopaste        # Запретить режим вставки
"?yy                # Скопировать текущую строку в регистр?, вопросительный знак представляет имя регистра от 0 до 9
"?d3j               # Удалить содержимое трёх строк под курсором и поместить его в регистр?, вопросительный знак представляет собой имя регистра от 0 до 9
"?p                 # Вставить содержимое регистра? после курсора
"?P                 # Вставить содержимое регистра? перед курсором
:registers          # Отобразить содержимое всех регистров
:[range]y           # Скопировать диапазон, например: 20,30y — это скопировать строки с 20 по 30, а :10y — скопировать десятую строку
:[range]d           # Удалить диапазон, например: 20,30d — это удалить строки с 20 по 30, а :10d — удалить десятую строку
"_[command]         # Использовать [command], чтобы удалить контент без копирования (не загрязняя регистры)
"*[command]         # Использовать [command] для копирования контента в системный буфер обмена (требуется версия Vim с поддержкой буфера обмена)

Отмена и восстановление

[N]u                # Команду отмены можно комбинировать. Например, Nu, N — любое целое число, что означает отменить N операций, то же ниже. (u: отмена)
[N]U                # Отменить всю операцию
Ctrl+r              # Отменить последнюю команду u (r: повторить)
Ctrl+R              # Перемотать предыдущую команду

Поиск и замена

Команда поиска в нормальном режиме

/pattern            # Искать шаблон от курсора до конца файла
?pattern            # Искать шаблон от курсора к началу файла
n **Поиск соответствующего содержимого**

N — поиск вперёд.  
% — движение в сторону соответствующей скобки, включая (), {}, []. Объединение следующих двух команд может быть весьма полезным для программистов (предпосылка: сначала нужно переместить курсор на круглые скобки).  
* — поиск вниз по слову под курсором.  
# — поиск вперёд по слову под курсором.
f{char} — поиск назад первого символа текущей строки как {char}, 2fv может найти второй символ v.  
F{char} — поиск вперёд первого символа в текущей строке, который является {char}.  
t{char} — поиск назад перед первым символом в текущей строке, который является {char}.  
T{char} — поиск вперёд перед первым символом в текущей строке, который является {char}.
; — повторение последней команды поиска символов (команда f/t).  
, — изменение направления для поиска последней команды поиска символов (f/t).
tx — поиск текущей строки перед указанной строкой.  
fx — поиск текущей строки до указанной строки.  
<Esc> — отказ от поиска. Например, после запуска команды f я обнаружил, что хочу использовать команду F, и клавиша выхода <Esc> отказалась от поиска.

**Замена команды в обычном режиме**
```bash
:[range]s[ubstitute]/{pattern}/{string}/[flags]

Описание параметров:

  • pattern — строка, которая будет заменена, может быть представлена с помощью регулярного выражения.
  • string — заменяет pattern на string.
  • [range]: | [range] значение | Описание | | --------------- | -------------------------------------------------- | | null | По умолчанию курсор находится на строке | | . | Текущая строка, где находится курсор | | 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 | Заменить все совпадения (глобально) в указанном диапазоне | | c | Запросить подтверждение пользователя перед заменой (подтвердить) | | e | Запросить подтверждение пользователя перед заменой (подтвердить) | | i | Не чувствительно к регистру | | null | Заменить только первое совпадение в указанном диапазоне |

Например:

:s/p1/p2/g          # Заменить все p1 на p2 в текущей строке
:%s/p1/p2/g         # Заменить все p1 на p2 в текущем файле
:%s/p1/p2/gc        # Заменить все p1 на p2 в текущем файле и запросить подтверждение замены везде
:10,20s/p1/p2/g     # Заменить все p1 в строках 10–20 на p2
:%s/1\\2\/3/123/g   # Заменить «1\2/3» на «123» (специальные символы отмечены обратными косыми чертами)
:%s///gn **Функция модификации принудительно закрыта и не может быть использована:wq! Write**

Vim -o file1 file2 # Когда вы хотите открыть файл Vim в терминале, разделить и отобразить несколько файлов горизонтально

Vim -O file1 file2  # Когда вы хотите открыть файл Vim в терминале, разделить и отобразить несколько файлов вертикально

Vim -x file         # Открыть зашифрованный файл

Vim +/target file   # Открыть файл и переместить курсор к первой найденной целевой строке

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

Примечание: сохраните и выйдите в обычном режиме.

:w                  # Записать файл и сохранить его, метка времени файла будет изменена
:w {filename}       # Сохранить файл по имени
:w !sudo tee %      # Сохранить файл с привилегиями суперпользователя, вы также можете сделать это :w !sudo tee%> /dev/null
:wa                 # Сохранить все файлы
:wall               # Сохранить все файлы
:wqall              # Сохранить все файлы и выйти
:q                  # Закрыть окно, в котором находится курсор, и выйти (q: quit)
:q!                 # Выйти принудительно (q: quit)
:qa!               # Отказаться от всех операций с файлами и выйти принудительно
:qall               # Отказаться от всех операций с файлами и выйти
:x                  # Сохранить файл и выйти, отметка времени файла не будет изменена  
ZZ                  # Сохранить изменённый файл и закрыть окно выхода
ZQ                  # Закрыть окно без сохранения файла 

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

:e[dit] {filename}  # Открыть файл для редактирования, открыть файл по абсолютному или относительному пути к файлу, клавиша Tab для завершения пути
:e[dit] .           # Открыть файловый менеджер, просмотреть файлы в текущем каталоге, выбрать и отредактировать 
:e[dit]             # Перезагрузить текущий файл
:E[xplore]          # Открыть файловый менеджер и отобразить каталог, где находится активный буфер
:saveas {filename}  # Сохранить как указанный файл
:o {filename}       # Открыть другой файл в текущем окне (o: open)
:r {filename}       # Прочитать файл и вставить содержимое после курсора
:r !dir             # Захватить и вставить вывод команды dir после курсора
:on[ly]             # Закрыть все окна, кроме окна, в котором находится курсор, то же самое, что Ctrl+W o
:clo[se]            # Закрыть файл в окне, где находится курсор, то же, что и Ctrl+W c
:cd {path}          # Изменить текущий путь Vim
:cd -               # Вернуться к последнему текущему каталогу
:pwd                # Показать текущий путь Vim
:n[ew] {filename}   # Открыть новое окно для редактирования нового файла filename
:new                # Открыть новое окно для редактирования нового файла
:ene[w]             # Создать новый файл в текущем окне
:vnew               # Редактировать новый файл в новом окне, разделённом на левое и правое
:tabnew             # Редактировать новый файл на новой вкладке   
:fin[d] {file}      # Найти файл {file} в пути и отредактировать его
:f[ile]             # Отобразить текущее имя файла и позицию курсора
:f[ile] {name}      # Установить текущее имя файла в name
:files              # Показать все альтернативные имена файлов

Операция с открытым файлом

:ls                 # Список кэша исследования
:bn                 # Перейти к следующему кэшу
:bp                 # Перейти к предыдущему кэшу
:bd                 # Удалить кэш
:b 1                # Перейти к кэшу 1
:b abc              # Перейти к кешу, имя файла которого начинается с abc
:badd {filename}    # Добавить файлы в список кэшей
:set hidden         # Установить скрытый режим (несохранённый кэш можно переключить или закрыть)
:set nohidden       # Выключить скрытый режим (несохранённый кеш нельзя переключить или закрыть)
n Ctrl+^            # Чтобы переключиться на кеш, сначала введите числовой номер кеша, затем нажмите Ctrl+6

Многооконная операция

Окно с разделением экрана основано на комбинации клавиш Ctrl+W, Ctrl — функциональная клавиша, W обозначает Windom, а Ctrl+W — управляющее окно.

:sp {filename}      # Разделить окно по горизонтали и открыть файл в новом окне filename
:vs {filename}      # Разделить окно вертикально и открыть файл в новом окне filename
:split              # Скопировать текущее окно в Горизонтальное окно, содержимое синхронизировано, курсор может быть разным.

:vsplit # Скопировать текущее окно в другое вертикальное окно, содержимое синхронизируется, курсор может отличаться.  
Ctrl+W # Переключиться на следующее окно.  
Ctrl+Ws # Горизонтально разделить окно.  
Ctrl+Wv # Разделить окно по длине.  
Ctrl+Ww # Перейти к следующему окну.  
Ctrl+WW # Перейти к предыдущему окну.  
Ctrl+Wp # Перейти к последнему посещённому окну.  
Ctrl+Wr # Обратить порядок окон.  
Ctrl+Wc # Закрыть текущее окно, но нельзя закрыть последнее окно.  
Ctrl+Wq # Выйти из текущего окна, если оно последнее, закрыть vi.  
Ctrl+Wo # Оставить только активное окно, закрыть остальные (o: other) окна, то же самое, что :on[ly].  
Ctrl+Wh # Перейти в левое окно.  
Ctrl+Wj # Перейти в окно ниже.  
Ctrl+Wk # Перейти в верхнее окно.  
Ctrl+Wl # Перейти в правое окно.  
Ctrl+W+ # Увеличить высоту строки текущего окна, можно добавить число впереди.  
Ctrl+W- # Уменьшить высоту строки текущего окна, можно добавить число впереди.  
Ctrl+W< # Уменьшить ширину столбца текущего окна, можно добавить число впереди.  
Ctrl+W> # Увеличить ширину столбца текущего окна, можно добавить число впереди.  
Ctrl+W= # Сделать все окна одинаковой ширины и высоты.  
Ctrl+WH # Переместить текущее окно влево.  
Ctrl+WJ # Переместить текущее окно вниз.  
Ctrl+WK # Переместить текущее окно вверх.  
Ctrl+WL # Переместить текущее окно вправо.  
Ctrl+Wx # Поменять окна местами.  
Ctrl+Wf # Открыть файл под курсором в новом окне.  
Ctrl+wgf # Открыть файл под курсором на новой вкладке.  
Ctrl+WT # Перевести текущее окно на новую вкладку.  
Ctrl+WP # Перейти в окно предварительного просмотра.  
Ctrl+Wz # Закрыть окно предварительного просмотра.  
Ctrl+W_ # Развернуть текущее окно вертикально.  
Ctrl+W| # Развернуть текущее окно горизонтально.  

## Теги

```bash
:tabs # Показать все вкладки.  
:tabe {filename} # Открыть файл filename на новой вкладке.  
:tabn[ext] # Следующая вкладка.  
:tabp[revious] # Предыдущая вкладка.  
:tabc[lose] # Закрыть текущую вкладку.  
:tabo[nly] # Закрыть другие вкладки.  
:tabn N # Перейти на N-ю страницу вкладок, например: tabn 3 Перейти на третью страницу вкладок.  
:tabm n # Перемещение метки.  
:tabfir[st] # Перейти на первую вкладку.  
:tabl[ast] # Перейти на последнюю вкладку.  
:tab help # Открыть справку во вкладке.  
:tab drop {file} # Если файл был открыт другими вкладками и окнами, пропустить, иначе открыть новую вкладку.  
:tab split # Открыть файл в текущем окне на новой вкладке.  
:tab ball # Открыть все файлы в кэше с вкладками.  
:set showtabline=? # Установить значение 0, чтобы не отображать метку страницы вкладки, 1 будет отображаться по запросу, 2 будет постоянно отображаться.  
Ngt # Перейти на N-ю страницу вкладок, например, 2gt перейдёт на вторую страницу вкладок.  
gt # Следующая вкладка.  
gT # Предыдущая вкладка.  

Закладки Vim

:marks # Показать все закладки.  
ma # Сохранить текущую позицию в закладку a, строчная буква подписи закладки находится в файле, а прописная — глобально.  
'a # Перейти к строке закладки a.  
`a # Перейти к местоположению закладки a.  
`. # Перейти к последней отредактированной строке.  
'A # Перейти ко всему тексту закладки A.  
[' # Перейти к предыдущей закладке.  
]' # Перейти к следующей закладке.  
'< # Перейти к началу последнего визуального режима выбора области.  
'> # Перейти к концу последнего визуального режима выбора области.  

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

:set spell # Включить проверку орфографии.  
:set nospell # Отключить проверку орфографии.  
]s # Следующее слово с ошибкой.  
[s # Предыдущее слово с ошибкой. **Запись макроса с использованием макросов для выполнения двух распространённых операций: начало нескольких строк текста, нажатие клавиши Tab для отступа начала строки!**

## Другие команды

```bash
ga                  # Отображение ASCII-кода или Unicode-кода символа под курсором
g8                  # Отображение UTF-8-кодировки байтового порядка символа под курсором
gi                  # Возврат к месту последнего ввода и переход в режим вставки
K                   # Запрос справки по слову под курсором
Ctrl+G              # Отображение имени редактируемого файла, а также информации о размере и местоположении
g Ctrl+G            # Отображение размера файла, количества символов, слов и строк, также доступно в визуальном режиме
Ctrl+PgUp           # На последней вкладке страница GVim ОК, некоторому терминальному ПО необходимо установить соответствующий код клавиатуры
Ctrl+PgDown         # Следующая страница вкладки, GVim OK, некоторому терминальному ПО необходимо установить соответствующий код клавиатуры
Ctrl+R Ctrl+W       # Вставка слова под курсором в командном режиме
Ctrl+Insert         # Копирование в системный буфер обмена (GVIM)
Shift+Insert        # Вставить содержимое системного буфера обмена (GVIM)
Ctrl+X Ctrl+E       # Прокрутка вверх в режиме вставки
Ctrl+X Ctrl+Y       # Прокрутить вниз в режиме вставки   
:map                # Просмотр сочетаний клавиш текущей конфигурации Vim
:inoremap           # Просмотр сочетаний inoremap текущей конфигурации Vim
:nnoremap           # Просмотр сочетаний nnoremap текущей конфигурации Vim 
:set ff=unix        # Установить поведение изменения unix
:set ff=dos         # Установить поведение изменения dos
:set ff?            # Просмотреть настройки переноса строк
:set nohl           # Удалить выделение поиска
:set termcap        # Посмотреть, что будет получено с терминала и какие команды будут отправлены на терминал
:set guicursor=     # Решить проблему некоторых странных символов в NeoVim в SecureCRT/PenguiNet
:set t_RS= t_SH=    # Решить проблему со странными символами в функции терминала Vim8.0 в SecureCRT/PenguiNet
:set fo+=a          # Включить автоматическое форматирование текстовых сегментов в реальном времени
:earlier 15m        # Вернуться к содержимому файла 15 минут назад
:.!date             # Вставить время в текущем окне
:%!xxd              # Начать двоичное редактирование
:%!xxd -r           # Сохранить двоичное редактирование
:r !curl -sL {URL}  # После чтения содержимого URL и добавления его к курсору
:g/^\s*$/d          # Удалить пустые строки
:g/green/d          # Удалить все строки, содержащие зелёный
:v/green/d          # Удалить все строки, которые не содержат зелёный
:g/gladiolli/#      # Поиск слов и печать результатов, добавление номера строки перед результатами
:g/ab.*cd.*efg/#    # Поиск строк, содержащих ab, cd и efg, печать результата и номера строки
:v/./,/./-j         # Сжать пустые строки
:Man bash           # Просмотр man в Vim, сначала вызовите :runtime! ftplugin/man.vim, чтобы активировать
/fred\|joe          # Искать fred или joe
/\<\d\d\d\d\>       # Точный поиск четырёх чисел
/^\n\{3}            # Поиск трёх последовательных пустых строк

Команды истории

Формат команды истории:

:his[tory] [{name}] [{first}][, [{last}]]

Описание параметров:

  • {name}:Указывает тип истории.
  • {first}:Определяет начальную позицию истории команд, по умолчанию — первая запись.
  • {last}:Определяет конечную позицию истории команд, по умолчанию — последняя запись.

В командном режиме.

:his[tory]                # Просмотреть историю всех команд, введённых в командном режиме
:his[tory] all            # Показать все типы истории
:history c 1,5            # Вывести историю команд с первой по пятую
:history search or / or ? # Просмотреть историю поиска 
:call histdel("")         # удалить историю
:help :history            # См. справку по команде :history

В обычном режиме.

q/                  # Просмотреть историю поиска, использованную q/
q?                  # Просмотреть использование q? Введённая история поиска **История**

Q: # Просмотр истории командной строки

Регистрация

Просмотр значения регистра.

:reg                   # Просмотр всех значений регистра
:reg {register}        # Просмотр указанного значения регистра

Вызов значения регистра.

"{register}            # Вызов значения регистра в нормальном режиме
:Ctrl+r "registerName  # После ввода Ctrl+r в командном режиме Vim автоматически введёт «символ ссылки на регистр»
Ctrl+r registerName    # В режиме вставки (не нужно вводить символ ссылки на регистр ")

Классификация регистров Vim

Имя регистра Метод цитирования Описание
Неназванный регистр "" По умолчанию регистр, все операции копирования и изменения (x, s, d, c, y) будут копировать данные в неназванный регистр.
Именованный регистр "a - "z или "A - "Z {register} может быть только одной из 26 букв английского алфавита, от a-z, A-Z содержимое регистра будет объединено с соответствующими строчными буквами.
Специальный регистр копирования "0(Number 0) Только когда используется операция копирования (y), данные будут скопированы в неназванный регистр и специальный регистр копирования одновременно.
Нумерованный регистр "1 - "9 Все данные без диапазонов ('(',')','{','}') и операций, включающих более 1 строки операций удаления и изменения (x, s, d, c), будут скопированы во временный кэш-регистр пошаговым образом, и при добавлении новых данных он будет прогрессировать шаг за шагом. Содержимое последних 9 регистров будет удалено.
Регистр чёрной дыры "_ Почти все данные, участвующие в операции, будут скопированы в регистр. Если вы хотите, чтобы данные, которые должны быть обработаны, не проходили через регистр, вы можете указать регистр чёрной дыры. Данные исчезнут, когда регистр поступит, и их нельзя будет отобразить и они не существуют.
Системный буфер обмена "+ или "* При взаимодействии с внешним по отношению к Vim графическим интерфейсом вам необходимо использовать специальный системный буфер обмена.
Регистр выражений "= Самый особенный из всех регистров используется для вычисления выражений. После ввода приложения регистра оно предложит «=» в командной строке, введите выражение по мере необходимости, и результат будет отображаться в курсоре.
Другие регистры - -

Файл конфигурации Vim

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

:ve[rsion]          # Проверьте версию Vim, а также проверьте порядок приоритета и расположение файлов конфигурации загрузки Vim.
:echo $MYVIMRC      # Используйте эту команду в командном режиме Vim для вывода местоположения файла конфигурации Vim.
:edit $MYVIMRC      # Используйте эту команду, чтобы открыть файл конфигурации Vim в командном режиме.
:so[urce] $MYVIMRC  # После изменения файла конфигурации Vim используйте эту команду для загрузки новых параметров конфигурации. Если файл vimrc случайно является текущим активным буфером, эту команду можно упростить до: so %.
:echo $VIM          # Вывод местоположения глобального файла конфигурации vimrc, хранящегося в каталоге установки Vim.
:echo $HOME         # Вывод местоположения пользовательского файла конфигурации vimrc, хранящегося в домашнем каталоге пользователя.

Инструкции по настройке Vim см. в разделе файл конфигурации vimrc для получения подробной информации.

Примечание: настройки Vim можно устанавливать индивидуально в командном режиме, и они действуют только в текущем окне!

syntax              # Список определённых элементов грамматики
syntax clear        # Очистить определённые правила грамматики
syntax on           # Включить подсветку синтаксиса
syntax off          # Запретить подсветку синтаксиса
set history=200     # Записать 200 исторических команд
set bs=?            # Установить Backspace **Режим работы Vim, современный редактор**:

:set bs=eol,start,indent  
set sw=4  # Установить ширину отступа в 4 пробела.
set ts=4 # Установить ширину табуляции в 4 символа.
set noet # Не расширять табуляцию до пробелов.
set et # Расширять табуляцию до пробелов.
set winaltkeys=no # Отключить обычное использование клавиши Alt в GVim.
set nowrap # Выключить перенос слов.
set ttimeout # Разрешить таймаут обнаружения терминала (функциональная клавиша под терминалом представляет собой серию кодов сканирования, начинающихся с Esc).
set ttm=100 # Установить таймаут обнаружения клавиш терминала в 100 миллисекунд.
set term=? # Установить тип терминала, например, распространённый xterm.
set ignorecase # Включить игнорирование регистра при поиске.
set smartcase # Умный регистр, по умолчанию игнорировать регистр, если только искомое содержимое не содержит заглавных букв.
set list # Отображать вкладки и переносы строк.
set nu # Отобразить номер строки, можно использовать :set nonu, чтобы запретить отображение номера строки.
set number # Отобразить номер строки, можно использовать :set nonumber, чтобы запретить отображение номера строки.
set relativenumber # Отобразить относительный номер строки (расстояние между другими строками и текущей строкой).
set paste # Войти в режим вставки (отключить отступы при вставке и другие вещи, влияющие на форматирование).
set nopaste # Выйти из режима вставки.
set spell # Включить проверку орфографии.
set hlsearch # Включить подсветку поиска.
set ruler # Всегда показывать позицию курсора.
set nocompatible # Настройка несовместима с оригинальным режимом vi (должна быть установлена в самом начале).
set incsearch # Динамическое инкрементное отображение результатов поиска во время ввода поиска.
set insertmode # Vim всегда находится в режиме вставки, используйте Ctrl+o для временного выполнения команд.
set all # Список всех настроек параметров.

## Плагины Vim

**[vim-commentary](https://github.com/tpope/vim-commentary)**: инструмент пакетного комментирования в Vim, позволяет комментировать несколько строк и удалять комментарии нескольких строк.

```bash
gcc # Закомментировать текущую строку.
gc{motion} # Аннотировать область, отмеченную {motion}, например, gcap аннотирует весь абзац.
gci{ # Закомментировать содержимое в фигурных скобках.
gc # Нажмите gc, чтобы закомментировать выделенную область в визуальном режиме.
:7,17Commentary # Закомментировать строки с 7 по 17.

NERDTree: этот плагин используется для отображения дерева каталогов текущего пути.

? # Быстрая справка.
o # Открыть каталог или файл, создать буфер, также можно использовать для открытия закладок.
go # Открыть файл, но курсор остаётся в NERDTree, создавая буфер.
t # Открыть файл и создать вкладку, которая также эффективна для закладок.
T # Открыть файл, но курсор всё ещё остаётся в NERDTree. Создаётся вкладка, которая также эффективна для закладок.
i # Разделить окно для создания файла по горизонтали, создав буфер.
gi # Разделить окно, где файл был создан по горизонтали, но курсор останется в NERDTree.
s # Разделить окно, которое создаёт файл вертикально, создав буфер.
gs # Аналогично gi и go.
x # Свернуть текущий открытый каталог.
X # Свернуть все открытые каталоги.
e # Открыть выбранный каталог через управление файлами.
D # Удалить закладку.
P # Переключиться в верхний регистр и перейти к текущему корневому пути.
p # Переключиться на нижний регистр и перейти к предыдущему пути, где находится курсор.
K # Перейти к первому подпути.
J # Перейти к последнему подпути.
C # Установить корневой путь в каталог, где находится курсор.
u # Установить родительский каталог в качестве корневого пути.
U # Установить родительский каталог для следования по пути, но сохранить исходный каталог открытым.
r # Обновить каталог, в котором находится курсор.
R # Обновить текущий каталог. ## Интернет-ресурсы

- Последние версии Vim: https://github.com/vim/vim.
- Версия для Windows: https://github.com/vim/vim-win32-installer/releases.
- Поиск плагинов: http://vimawesome.com.
- Правильная настройка клавиши Alt: http://www.skywind.me/blog/archives/2021.
- Видеоуроки: http://vimcasts.org/.
- Китайская справка: http://vimcdoc.sourceforge.net/doc/help.html.
- Вхождение в китайскую версию: https://github.com/wsdjeg/vim-galore-zh_cn.
- Быстрый старт с пятиминутным скриптом: http://www.skywind.me/blog/archives/2193.
- Мастерство написания скриптов: http://learnvimscriptthehardway.stevelosh.com/.
- 16 лет опыта: http://zzapper.co.uk/vimtips.html.
- Цветовые схемы: http://vimcolors.com/.  

## Советы по использованию Vim

* Никогда не используйте Ctrl+C вместо <Esc>. Это имеет совершенно другое значение, и легко случайно прервать выполняющийся фоновый скрипт.
* Многие люди используют Ctrl+[ вместо <Esc>, при этом левый мизинец находится на 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 >ap =i} == при отступах.
* В режиме вставки, когда вы обнаружите, что слово написано неправильно, следует использовать Ctrl+W. Это быстрее, чем <Backspace>.
* Команды y d c могут быть хорошей комбинацией f t и /X, таких как dt) и y/End<cr>.
* Команды c d x автоматически заполнят регистры "1–"9, а команда y автоматически заполнит регистр "0".
* Когда вы используете команду v для выделения текста, вы можете использовать 0, чтобы сделать разворот выделения, что иногда полезно.
* При написании статьи вы можете написать блок кода, затем выделить его и выполнить:! Блок кода Python будет заменён результатом.
* После поиска часто используется :nohl для устранения выделения. Он используется очень часто, и вы можете сопоставить его с <Backspace>.
* Во время поиска вы можете использовать Ctrl+R Ctrl+W, чтобы вставить слово под курсором, и этот способ можно использовать и в командном режиме.
* По умолчанию при отображении клавиш следует использовать noremap, а map следует использовать только при необходимости.
* После копирования текста с помощью y нажмите Ctrl+R в командном режиме, а затем нажмите двойную кавычку 0, чтобы вставить ранее скопированный контент.
* GVim под Windows можно настроить с помощью set rop=type:directx,renmode:5 для улучшения отображения.
* Когда вам кажется, что что-то делается неэффективно, следует остановиться и подумать о правильном и эффективном способе выполнения задачи.  

## Книги

[Practical Vim (английская версия)](https://www.amazon.com/Practical-Vim-Edit-Speed-Thought-ebook-dp-B018T6ZVPK/dp/B018T6ZVPK/ref=mt_other?_encoding=UTF8&me=&qid=) | [Practical Vim (китайская версия)](https://book.douban.com/subject/).  

## Схема клавиатуры Vim  

![vim keyboard diagram](vim-commands_EN.png).  

## Ссылки

* https://github.com/skywind3000/awesome-cheatsheets/blob/master/editors/vim.txt.
* http://blog.g-design.net/post/4789778607/vim-cheat-sheet.
* http://www.fprintf.net/vimCheatSheet.html.
* http://www.ouyaoxiazai.com/article/24/654.html.
* http://bbs.it-home.org/thread-80794-1-1.html.
* http://www.lpfrx.com/wp-content/uploads/2008/09/vi.jpg.
* https://github.com/glts/vim-cottidie/blob/master/autoload/cottidie/tips. К сожалению, без доступа к исходному тексту невозможно выполнить перевод. Однако, если вы предоставите текст запроса, я смогу помочь с его переводом.

Также обратите внимание, что для точного перевода специализированных терминов и понятий из области IT может потребоваться помощь профессионального переводчика или специалиста в данной области.

Комментарии ( 0 )

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

Введение

Таблица быстрых команд Vim, структурированный поиск, содержит всё, что вам нужно знать! Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
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