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

OSCHINA-MIRROR/chloneda-vim-cheatsheet

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

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 )

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

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