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]
Описание параметров:
Обратите внимание, что все вышеперечисленные методы представления диапазона могут использоваться для установки относительного смещения через операции + и-.
Например:
: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 # Предыдущая вкладка.
: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}]]
Описание параметров:
В командном режиме.
: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 доступны в глобальных и пользовательских версиях, а пользовательские файлы конфигурации имеют приоритет над глобальными системными файлами конфигурации.
: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
.
## Ссылки
* 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 )