Vim 命令速查表
Введение: Vim 命令速查, закомментированный файл конфигурации vimrc, классическая схема клавиатуры Vim, практическое руководство по Vim, инструмент для систематического изучения, обучения и настройки, быстрый старт. ✨
Программирование вспомогательное перемещение
% — не только соответствует переходу к соответствующему {}, (), [], но и может перескакивать между if, else, elseif.
gd — переход к определению локальной переменной, то есть к слову под курсором.
gD — переход к глобальной переменной определения, то есть к слову под курсором.
gf — открытие файла с именем, совпадающим с именем под курсором.
[[ — переход к предыдущей функции верхнего уровня, например, в C языке разделён скобками. ]] — переход к следующей функции верхнего уровня.
[m — переход к началу предыдущего метода, ]m — переход к началу следующего метода.
]M — переход к концу следующего метода. [M — переход к концу предыдущего метода.
[{ — переход к предыдущему несоответствующему {. ]} — переход к следующему несоответствующему }.
[( — переход к предыдущему несоответствующему (. ]) — переход к следующему несоответствующему ).
[c — переход к предыдущему различию (diff). ]c — переход к следующему различию.
]] — переход к следующей первой колонке {. ][ — переход к следующей первой колонке }.
[[ — переход к предыдущей первой колонке {. [] — переход к предыдущей первой колонке }.
[/ — переход к началу текущего блока комментариев. ]/ — переход к концу текущего блока комментариев.
]# — переход к предыдущему if или else. [# — переход к последующему else или endif.
Режим вставки
i — вход в режим вставки (i: insert) под курсором. I — вход в режиме вставки в начале строки. a — вход в режим вставки после курсора (a: append). A — вход в режим вставки в конце строки. o — вставка новой строки ниже и вход в режим вставки. O — вставка новой строки выше и вход в режим вставки. s — удаление символа под курсором и вход в режим вставки. S — удаление всей строки и вставка текста. gi — возврат к позиции последнего входа в режим вставки. gI — ввод в текущую строку в первом столбце. — выход из режима вставки. Ctrl+[ — выход из режима вставки, эквивалентен .
Команды режима вставки
— перемещение курсора вверх. — перемещение курсора вниз. — перемещение курсора влево. — перемещение курсора вправо. <S+Up> — нажатие Shift и Up для перемещения на страницу вверх. <S+Down> — нажатие Shift и Down для перемещения на страницу вниз. <S+Left> — нажатие Shift и Left для перемещения влево на слово. <S+Right> — нажатие Shift и Right для перемещения вправо на слово. — перемещение на страницу вверх. — перемещение на страницу вниз. — удаление символа под курсором. — удаление символа слева от курсора. — перемещение курсора в начало строки. — перемещение курсора в конец строки. Ctrl+d — уменьшение отступа. Ctrl+f — уменьшение отступа. Ctrl+t — увеличение отступа. Ctrl+h — удаление предыдущего символа, эквивалентно . Ctrl+o — временный выход из режима вставки для выполнения одной команды и возврат в режим вставки. Ctrl+u — удаление всех символов от начала строки до курсора. Ctrl+w — удаление слова перед курсором. Ctrl+\ Ctrl+O — временный выход из режима вставки (курсор сохраняется), выполнение одной команды и возвращение в режим вставки. Ctrl+R 0 — вставка содержимого регистра (внутренний регистр 0). Ctrl+R " — вставка содержимого анонимного регистра. Ctrl+R = — вставка результата выражения, знак равенства следует за выражением. Ctrl+R : — вставка предыдущей командной строки. Ctrl+R / — вставка последнего ключевого слова поиска. Ctrl+v {char} — вставка литерала, отличного от числа. Ctrl+v {code} — вставка ASCII/Unicode символа по трёхзначному коду, например, Ctrl+v 065 для вставки символа A. Ctrl+v x41 — вставка шестнадцатеричного ASCII символа (три цифры) x41 для символа A. Ctrl+v o101 — вставка восьмеричного ASCII символа (три цифры) o101 для символа A. Ctrl+v u1234 — вставка шестнадцатеричного Unicode символа (четыре цифры). Ctrl+v U12345678 — вставка шестнадцатеричного Unicode символа (восемь цифр). Ctrl+K {ch1} {ch2} — вставка digraph (см.: h digraph) для быстрого ввода японских символов или символов.
Автоматическое завершение
Ctrl+n — автоматическое завершение текста в режиме вставки. Ctrl+P — автоматическое завершение текста в режиме вставки. Ctrl+e — завершение текущего завершения и продолжение ввода.
Ctrl+X — начало режима завершения, обратите внимание: все команды автоматического завершения начинаются с комбинации клавиш Ctrl+X. Ctrl+X Ctrl+L — завершение целой строки. Ctrl+X Ctrl+N — завершение на основе текущего буфера в режиме вставки. Ctrl+X Ctrl+K — завершение на основе словаря. Ctrl+X Ctrl+T — завершение на основе синонимов. Ctrl+X Ctrl+F — завершение имени файла в режиме вставки. Ctrl+X Ctrl+I — завершение на основе заголовочных файлов. Ctrl+X Ctrl+] — завершение тегов файла. Ctrl+X Ctrl+D — завершение макроопределения. Ctrl+X Ctrl+V — завершение команд Vim. Ctrl+X Ctrl+U — пользовательское завершение. Ctrl+X Ctrl+S — предложение написания, например, одного английского слова. Ctrl+X Ctrl+O — Omnifunc завершение в режиме вставки.
Редактирование текста
r — замена текущего символа. R — переход в режим замены до выхода с помощью . [N]s — замена N символов, удаление N символов справа от курсора и переход в режим вставки. [N]S — замена N строк, удаление N строк и переход в режим вставки. [N]x — вырезание и удаление N символов справа от курсора, аналогично d[N]l. [n]X — вырезание и удаление n символов слева от курсора. Вот перевод текста на русский язык:
个字符,相当于d[n]h
cc # 改写当前行,即删除当前行并进入插入模式,эквивалентно S
cw # 修改光标开始处的单词
ciw # 修改光标所处的单词
caw # 修改光标所处的单词,包括前后空格
c0 # 修改到行首
c^ # 修改到行首非空字符
c$ # 修改到行末
C # 修改到行尾,эквивалентен c$
ci" # 修改双引号中的内容,i 的含义下同(i: inner)
ci' # 修改单引号中的内容
cib # 修改小括号中的内容
cab # 修改小括号中的内容,包含小括号本身
ci) # 修改小括号中的内容
ci] # 修改中括号中内容
ciB # 修改大括号中内容
caB # 修改大括号中的内容,包含大括号本身
ci} # 修改大括бок中内容
cit # 修改 XML 中 tag 的内容
cis # 修改当前句子
c[N]w # 修改光标后 N 个单词
c[N]l # 修改光标后 N 个字母
c[N]h # 修改光标前 N 个字母
[N]cc # 修改当前 N 行
ct( # 修改到小括号前
dd # 删除(剪切)当前行,当前行会存到寄存器里(d: delete = cut)
dd[N]p # 删除(剪切)当前行并加入 N-1 个当前行,复制空行时很有用
d0 # 删除(剪切)到行首
d^ # 删除(剪切)到行首非零字符
d$ # 删除(剪切)到行末
D # 删除(剪切)到行末,等价于 d$
dw # 删除(剪切)当前单词
diw # 删除(剪切)光标所处的单词(iw: inner word)
daw # 删除(剪切)光标所处的单词,并包含前后空格
d2w # 删除(剪切)下 2 个单词
d[N]w # 删除(剪切)N 个单词,并包含前后空格
d[N]l # 删除(剪切)光标右边 N 个字符
d[N]h # 删除(剪切)光标左边 N 个字符
[N]dd # 删除(剪切)从当前行开始的 N 行
:Nd # 删除(剪切)第 N 行
:N,Md<CR> # 删除(剪切) N ~ M 行,其中 <CR> 为 <Enter> 回车键
di" # 删除(剪切)双引号中的内容
di' # 删除(剪切)单引号中的内容
dib # 删除(剪切)小括号中的内容
di) # 删除(剪切)小括号中的内容
dab # 删除(剪切)小括号内的内容,包含小括号本身
di] # 删除(剪切)中括号中内容
diB # 删除(剪切)大括号中内容
di} # 删除(剪切)大括号中内容
daB # 删除(剪切)大括号内的内容,包含大括号本身
dit # 删除(剪切) XML 中 tag 的内容
dis # 删除(剪切)当前句子
dt( # 删除(剪切)到小括号前
dgg # 删除(剪切)到文件头部
d1G # 删除(剪切)到文件头部,同上
dG # 删除(剪切)到文件尾部
d} # 删除(剪切)下一个段落
d{ # 删除(剪切)上一个段落
d/f<CR> # 比较高级的组合命令,它将删除 当前位置 到下一个字母 f 之间的内容,其中 <CR> 为 <Enter> 回车键
~ # 转换大小写
g~iw # 替换当前单词的大小写
gUiw # 将单词转成大写
guiw # 将当前单词转成小写
guu # 全行转为小写
gUU # 全行转为大写
Ctrl+A # 增加数字
Ctrl+X # 减少数字
Текст объект
Примечание: Только для визуального режима или после операции, например: операция включает выбор v, удаление d, копирование y, изменение c и т. д.
aw # Операция целого слова, не включая разделители (aw: a word)
aW # Операция всего слова, включая разделители (aW: a Word)
iw # Операция целого слова, не включая разделители (iw: inner word)
iW # Операция всего слова, включая разделители (iW: inner Word)
is # Операция всей фразы, не включая разделители (s: sentence)
ib # Операция внутреннего блока, от [( до ]) (b: block)
iB # Операция большого блока, от [{ до ]} (B: Block)
ab # Операция одного блока, от [( до ]) (b: блок)
aB # Операция большого блока, от [{ до ]} (B: Блок)
ap # Операция абзаца (p: paragraph)
ip # Операция внутренней фразы
i) # Операция маленькой скобки
a) # Операция маленькой скобки, включая маленькую скобку
i] # Операция средней скобки
a] # Операция средней скобки, включая среднюю скобку
i} # Операция большой скобки
a} # Операция большой скобки, включая большую скобку
i' # Операция одинарной кавычки
a' # Операция одинарной кавычки, включая одинарную кавычку
i" # Операция двойной кавычки
a" # Операция двойных кавычек, включая двойные кавычки
a` # Операция одной обратной кавычки
i` # Операция внутренней обратной кавычки
a> # Операция одного <> блока
i> # Операция внутреннего <> блока
at # Операция тега, например, от <aaa> до </aaa> (t: tag)
it # Операция внутри тега, например от <aaa> до </aaa>
2i) # Операция двух уровней внутренних скобок
2a) # Операция двухуровневых внутренних скобок, включая маленькие скобки
[N]f) # Перемещение к N-й скобке
[N]t) # Перемещается перед N-й скобкой
Операция над текстовыми объектами, такими как пары скобок, знаки препинания и содержимое внутри пар знаков препинания, очень полезна для программирования и может быть кратко изложена следующим образом:
ci'、ci"、ci(、ci[、ci{、ci< # Изменить содержимое этих пар знаков препинания
ca'、ca"、ca(、ca[、ca{、ca< # Измените содержимое этих пар знаков препинания, включая сами знаки препинания
di'、di"、di(、dib、di[、di{、diB、di< # Удалить содержимое этих пар знаков препинания
da'、da"、da(、dab、da[、da{、daB、da< # Удалите содержимое этих пар знаков препинания, включая знаки препинания **По умолчанию курсор находится в строке:**
| . | Курсор находится в текущей строке |
| N | Строка № N |
| $ | Последняя строка |
| 'a | Строка, помеченная как a (перед этим была использована команда ma для маркировки) |
| $-1 | Вторая с конца строка. Можно прибавлять или вычитать определённое значение к/из строки для получения определённой строки |
| 1,10 | Строки с 1 по 10 |
| 1,$ | От первой до последней строки |
| 1,. | От первой строки до текущей |
| .,$ | От текущей строки до последней |
| 'a,'b | Строка a до строки b (перед этим были использованы команды ma и mb для маркировки) |
| % | Все строки (эквивалентно 1 и $) |
| ?str? | Поиск от текущей позиции вверх по тексту до первого вхождения строки str (str может быть регулярным выражением) |
| /str/ | Поиск от текущей позиции вниз по тексту до первого вхождения строки str (str может быть регулярным выражением) |
**Примечание**: все методы, используемые для обозначения диапазона, могут быть изменены с помощью операций + и - для установки относительного смещения.
- [flags] имеет следующие значения:
| [flags] значение | Значение |
| :---------: | --------------------------------------- |
| g | Заменить все совпадения в указанном диапазоне (g: global) |
| c | Запрос подтверждения перед заменой (c: confirm) |
| e | Игнорировать ошибки во время выполнения (e: error) |
| i | Не различать регистр (i: ignore) |
| Нет | Заменить только первое совпадение в диапазоне |
Пример:
```bash
g& # Повторить предыдущую команду substitute
:s/old/new/ # Заменить old на new в текущей строке
:s/old/new/g # Заменить все old на new в текущей строке
:s/old/\U&/ # Заменить old на OLD в верхнем регистре в текущей строке
:N,Ms/old/new/g # Заменить все old на new в строках от N до M
:%s/old/new/g # Заменить все old на new во всём файле
:%s/old/new/gc # Заменить все old на new во всём файле и запросить подтверждение перед каждой заменой
:%s/^/xxx/g # Вставить xxx в начало каждой строки, ^ обозначает начало строки, полезно при комментировании
:%s/./# & # Добавить комментарий в начале непустой строки, & представляет собой символ, который был сопоставлен
:%s/$/xxx/g # Вставить xxx в конец каждой строки, $ обозначает конец строки
:%s/hello/&, world/ # Заменит hello на hello, world
:%s/.*/(&)/ # Заключить каждую строку в скобки
:%s/\s\+$//e # Удалить пробелы в конце каждой строки
:%s/1\\2\/3/123/g # Заменить "1\2/3" на "123", специальные символы экранируются обратной косой чертой
:%s/\r//g # Удалить символы DOS новой строки ^M
:%s///gn # Подсчитать количество совпадений шаблона
:%s/^\n$//gc/ # Объединить несколько пустых строк в одну
:%s/\n/\r\r/ # Добавить пустую строку после каждой существующей строки
:%s/^\s*$\n//g # Удалить все пустые строки
:%s/^M$//g # Удалить явные символы ^M в файле, то есть проблемы с символами новой строки операционной системы
:%s/_\(\w\)/\u\1/g # Преобразовать символы нижнего подчеркивания в символы верхнего регистра
:%s/^\(\w\)/\L\1/g # Перевести первую букву в нижний регистр
:h[elp] s[ubstitute] # Получить справку по команде substitute
Существует более гибкий способ замены, чем простая замена, он позволяет выполнять указанную команду Ex после сопоставления с определённым шаблоном, это команда Vim global, которая очень эффективна для повторяющихся задач. Формат команды следующий:
:[range]g[lobal][!]/{pattern}/[cmd]
Параметры:
Например:
:g/pattern # Найти и отобразить все строки в файле, содержащие шаблон pattern, и перейти к последнему совпадению
:g/pattern/p # Найти и отобразить все строки, соответствующие шаблону pattern
:g/\<pattern\>/p # Найти и отобразить все точные совпадения со словом pattern
:g!/pattern/nu # Найти и отобразить все строки без шаблона pattern и показать номера этих строк
:v/pattern/d # Удалить все строки, не соответствующие шаблону pattern
:g/.*/m0 # Переупорядочить все строки в обратном порядке. Здесь :t или :copy перемещает каждую строку после следующей строки
:g/^/t. # Копировать каждую строку
:g/^/+1 d # Удалить чётные строки
:g/^/d|m. # Удалить нечётные строки
:g/^$/d # Удалить все пустые строки
:g/^\s*$/d # Удалить все пустые строки
:v/./d # Удалить все непустые строки, где . соответствует любому символу, кроме символа новой строки \n
:g/pattern/d_ # Удалить большое количество совпадающих строк, чтобы избежать ненужного времени копирования совпадающих строк в чёрный ящик _
:N,Mg/pattern/p # Найти и отобразить строки между N и M, соответствующие шаблону pattern
:%g/^ xyz/normal dd # Означает, что для строк, начинающихся с пробела и xyz, выполняется команда Normal dd
:g/.\n\n\@!/norm o # Для непустых строк добавить новую строку после каждой строки, объединить несколько новых строк в одну, \n соответствует символу новой строки, \n\@! означает, что за \n не следует \n, иначе совпадение не удастся
:h[elp] :g[lobal] # Получить помощь по команде global
Особое внимание:
:N,M s/^ 注释符 //g — в строках с N по M удалить комментарий в начале;
:3,5 s/^/#/g — добавить решётку # в начало строк с 3 по 5;
:3,5 s/^#//g — удалить решётку # из начала строк с 3 по 5.
Комментарии для всего документа:
:1,$ s/^/#/g — добавить комментарий решёткой # для всего документа;
:1,$ s/^#//g — убрать комментарии решёткой # для всего документа.
:s — команда для замены:
:%s/^/#/g и %:s/^#//g — соответственно добавить и убрать решётку # для всего документа (второй вариант работает быстрее).
vim [options] # запустить Vim и открыть пустой буфер
vim [options] {file} .. # запустить и отредактировать один или несколько файлов
vim [options] - # прочитать файл со стандартного ввода
vim [options] -t {tag} # отредактировать файл, связанный с тегом tag
vim [options] -q [fname] # начать редактирование с быстрым исправлением и отобразить первую ошибку. Для опций см. ниже
vim . # открыть файловый менеджер, отобразить каталог файлов, выбрать файл для редактирования
vim {file} # открыть или создать файл и поместить курсор в первую строку
vim + {file} # открыть файл и поместить курсор в последнюю строку
vim +[N] {file} # открыть файл и поместить курсор на строку N
vim -b {file} # открыть файл в двоичном режиме, чтобы можно было видеть специальные символы, такие как символ новой строки ^M
vim -v {file} # режим Vi, запуск Ex в обычном режиме
vim -e {file} # режим Ex, запуск Vim в режиме Ex
vim -r {file} # восстановить файл после предыдущего аварийного завершения
vim -R {file} # открыть файл только для чтения, но можно использовать :wq! для записи
vim -x {file} # открыть зашифрованный файл
vim -p {files} # открыть несколько файлов, каждый файл занимает отдельную вкладку
vim -o {files} # редактировать несколько файлов в горизонтальных разделенных окнах
vim -O {files} # редактировать несколько файлов в вертикальных разделенных окнах
vim -c cmd {file} # перед открытием файла file выполнить команду cmd; например, vim file.txt -c "e ++enc=UTF-8" для открытия файла file.txt с указанной кодировкой
vim +{cmd} {file} # после открытия файла file выполнить команду cmd
vim +/string {file} # открыть файл file и разместить курсор на первом совпадении string
vim -d {file1} {file2} # одновременно открыть файлы file1 и file2 и сравнить их
:w # сохранить файл и обновить время последнего изменения
:w[rite] {file} # сохранить файл с именем file
:w !sudo tee % # сохранить файл с правами суперпользователя, также можно сделать так: :w !sudo tee % > /dev/null
:wa # сохранить все файлы
:wa[ll] # сохранить все файлы
:wqa[ll] # сохранить все файлы и выйти
:[N]wn[ext] # сохранить текущий файл и перейти к редактированию следующих N файлов
:[N]wp[revious] # сохранить текущий файл и перейти к редактированию предыдущих N файлов
:q # закрыть текущее окно и выйти
:q[uit] # закрыть текущее окно и выйти
:q! # не сохранять файл и принудительно выйти
:qa[ll] # отказаться от всех операций с файлами и выйти
:qa[ll]! # отказаться от всех операций с файлами и принудительно выйти
:x # сохранить файл и выйти, не обновляя время последнего изменения файла
ZZ # сохранить измененный файл, закрыть окно выхода, эквивалентно :x
ZQ # не сохранять файл, закрыть окно выхода, эквивалентно :q!
Режим сравнения Vim зависит от команды diff, поэтому сначала убедитесь, что команда diff доступна в вашей системе.
vimdiff lfile rfile # сравнить файлы в вертикальном разделении окон
vim -d lfile rfile # сравнить файлы в вертикальном разделении окон
vim -d -o lfile rfile # сравнить файлы в горизонтальном разделении окон
:diffs[plit] {file} # разделить текущий буфер и загрузить другой файл file для сравнения
:vert diffs {file} # использовать вертикальное разделение при загрузке файла
:difft[his] # добавить текущий файл к diff
:diffp[atch] {patchfile} # загрузить содержимое буфера в текущее окно для сравнения
:diffu[pdate] # обновить diff после внесения изменений
:diffu[pdate]! # обновить diff для всех файлов
:[range]diffpu[t] # объединить указанный диапазон и скопировать содержимое в другой файл
:[range]diffg[et] # объединить указанный диапазон и вставить содержимое из другого файла
]c # перейти к следующему различию в diff
[c # перейти к предыдущему различию в diff
:diffo[ff] # выйти из режима diff текущего файла
:diffo[ff]! # выйти из режима diff всех окон
:qa[ll] # не сохранять изменения и выйти
:wa[ll] # сохранить все изменения
:wqa[ll] # сохранить изменения после слияния и выйти
:e[dit] {file} # открыть файл для редактирования, используя абсолютный или относительный путь к файлу, Tab для автозаполнения пути
:e[dit] . # открыть файловый менеджер и просмотреть файлы в текущем каталоге, выбрать и отредактировать
:e[dit] # повторно загрузить текущий файл
:e[dit]! # отменить изменения и вернуться к состоянию файла при открытии
:E[xplore] # открыть файловый менеджер и показать активный буферный каталог
:sav[eas] {file} # сохранить как указанный файл file
:o {file} # открыть другой файл в текущем окне (o: open)
:r {file} # прочитать содержимое файла и вставить его после курсора
:r !dir # захватить вывод команды dir и вставить после курсора
:on[ly] # закрыть все окна, кроме текущего, эквивалент Ctrl+W o
:clo[se] # закрыть текущее окно файла, эквивалент Ctrl+W c
:cd {path} # изменить текущий путь Vim на path
:cd - # вернуться к предыдущему текущему пути
:pwd # показать текущий путь Vim
:n[ew] {file} # открыть новое окно и создать новый файл file
:[N]new # открыть N новых окон и создать новые файлы, где N — любое положительное целое число
:ene[w] # создать новый файл в текущем окне
:[N]vne[w] # создать N новых окон для редактирования новых файлов, где N — любое положительное целое число
:tabnew # создать новую вкладку для редактирования нового файла
:fin[d] {file} # найти файл file в пути и отредактировать
:f[ile] # показать имя текущего файла и позицию курсора
:f[ile] {name} # установить имя файла как name
:files # просмотреть список буферов
Примечание: в запросе есть опечатки, которые были исправлены при переводе. Отображение всех вкладок:
Vim-закладки:
Например:
' — перейти к концу последнего визуального выделения.
Файл-браузер:
Vim 7.0 и выше включает плагин Netrw, который предоставляет функции файлового браузера. Он быстрее и легче, чем сторонние плагины, такие как NERDTree.
*:[N]E[xplore][!] [dir] — открыть файловый браузер в текущем окне; *[N]Hex[plore][!] [dir] — разделить окно горизонтально и открыть файловый браузер; *[N]Lex[plore][!] [dir] — открыть файловый браузер слева от текущего окна; *[N]Sex[plore][!] [dir] — разделить окно по горизонтали и открыть файловый браузер; *[N]Vex[plore][!] [dir] — разделить окно вертикально и открыть файловый браузер; *:Tex[plore] [dir] — открыть файловый браузер на новой вкладке; *:Rex[plore] — вернуться к файловому браузеру; *:Nexplore — перейти к следующему подходящему файлу; *:Pexplore — перейти к предыдущему подходящему файлу.
:h[elp] netrw — открыть дополнительную справку по Netrw.
Проверка орфографии:
Чтобы перейти к следующему слову с ошибкой: *]s — перейти к следующему слову с ошибкой; *[s — перейти к предыдущему слову с ошибкой.
Добавьте слово в словарь правописания: zg — добавить слово в словарь; zug — удалить слово из словаря.
Получите предложение по исправлению: z= — получить предложение по исправлению.
Сворачивание кода:
Шифрование и дешифрование документов:
vim -x {file} — зашифровать документ, ввести пароль шифрования и подтвердить его. Обратите внимание, что даже без изменения содержимого необходимо сохранить файл, чтобы настройки пароля вступили в силу; *:X — зашифровать документ в командном режиме, ввести пароль и подтвердить его; *:set key={password} — зашифровать документ в командном режиме, указав пароль. В запросе текст технической направленности из области разработки и тестирования программного обеспечения.
Основной язык текста запроса — английский.
Команда режима Vim, выводящая местоположение конфигурационного файла:
:edit $MYVIMRC — открывает конфигурационный файл Vim в режиме команды.
Использование команды для загрузки новых параметров конфигурации после изменения конфигурационного файла Vim:
:so $MYVIRC или :so % — загружает новые параметры конфигурации.
Вывод глобального местоположения конфигурационного файла vimrc, который находится в каталоге установки Vim:
:echo $VIM.
Вывод местоположения пользовательского конфигурационного файла vimrc, находящегося в домашнем каталоге пользователя:
:echo $HOME.
В командном режиме можно установить отдельные параметры настройки, которые будут действовать только в текущем окне (перед командой необходимо добавить «:»).
Для отображения всех параметров с их значениями по умолчанию используется команда:
:se[t][!] — отображает все параметры с их значениями. Если используется [!], каждый параметр отображается на отдельной строке.
Чтобы отобразить список всех параметров, используется команда:
:set[!] all — отображает весь список параметров. Если используется [!], то каждый параметр отображается на отдельной строке.
Чтобы сбросить все параметры до значений по умолчанию, используется команда:
:set all& — сбрасывает все параметры до значений по умолчанию.
Чтобы изменить значение параметра, используется команда вида:
:set {option}? — проверяет текущее значение параметра. В нижней части экрана отображается его возвращаемое значение.
:set {option} — изменяет значение параметра. Параметры могут быть трёх видов: булевы, числовые и строковые.
:set no{option} — отключает параметр.
:set {option}! — инвертирует значение параметра.
:set inv{option} — инвертирует значение параметра (аналогично предыдущей команде).
:set {option}{value} или :set {option}=value — устанавливает значение параметра.
:setlocal — эквивалент команды :set, но устанавливает локальное значение параметра.
:setglobal — эквивалент команды :set, но устанавливает глобальное значение параметра.
:help set — просмотр информации о команде.
:map — просмотр текущих сопоставлений клавиш в конфигурации Vim.
:inoremap — просмотр текущего сопоставления клавиш в режиме вставки.
:nnoremap — просмотр текущего сопоставления клавиш в нормальном режиме.
:unmap {lhs} — отменяет сопоставление клавиш {lhs}. Например, :unmap отменяет сопоставление клавиши F10.
:mapclear — удаляет все сопоставления клавиш; следует использовать с осторожностью, так как эта команда также удаляет все пользовательские и системные сопоставления.
:mapclear! — удаляет сопоставления клавиш из режима вставки и командного режима.
:imapclear — удаляет сопоставления клавиш из режима вставки.
:vmapclear — удаляет сопоставления клавиш из визуального режима.
:omapclear — удаляет сопоставления клавиш из режима ожидания оператора.
:nmapclear — удаляет сопоставления клавиш из нормального режима.
:cmapclear — удаляет сопоставления клавиш из командного режима.
:scriptnames — просмотр плагинов и скриптов, загружаемых при запуске Vim.
Формат команды для сопоставления клавиш:
[prefix]map {lhs} {rhs} — сопоставляет клавишу {lhs} с {rhs}, где {rhs} может быть сканировано или рекурсивно сопоставлено.
Параметры команды:
{lhs} — левая часть сопоставления, представляющая клавишу.
{rhs} — правая часть сопоставления, представляющая действие, которое будет выполнено при нажатии клавиши.
[prefix] — префикс режима, имеющий следующие значения:
Префикс | Режим | Формат команды | Сокращение |
---|---|---|---|
<Space> | Обычный, визуальный, выбор и ожидание оператора | :map {lhs} {rhs} | Нет |
n | Нормальный режим | :nmap {lhs} {rhs} | :nm {lhs} {rhs} |
v | Визуальный и выборный режимы | :vmap {lhs} {rhs} | :vm {lhs} {rhs} |
s | Выборный режим | :smap {lhs} {rhs} | Нет |
x | Визуальный режим | :xmap {lhs} {rhs} | :xm {lhs} {rhs} |
o | Режим ожидания оператора | :omap {lhs} {rhs} | :om {lhs} {rhs} |
! | Вставка и командный режим | :map! {lhs} {rhs} | Нет |
i | Режим вставки | :imap {lhs} {rhs} | :im {lhs} {rhs} |
I | Режимы вставки, командного и Lang-Arg | :lmap {lhs} {rhs} | :lm {lhs} {rhs} |
c | Командный режим | :cmap {lhs} {rhs} | :cm {lhs} {rhs} |
nore | Не рекурсивное сопоставление, может использоваться с любым префиксом | :noremap {lhs} {rhs} | :nor {lhs} {rhs} |
un | Отмена сопоставления {lhs} | :unmap {lhs} | Нет |
Перед {rhs} могут отображаться специальные символы:
Специальный символ | Значение |
---|---|
* | Не может быть повторно сопоставлено |
& | Может быть повторно сопоставлено только в локальных скриптах |
@ | Сопоставление с буфером |
Специальные параметры (должны быть указаны после {lhs}):
| Параметр | Описание | | --- | --- --- | | | Ограничивает сопоставление текущим буфером (редактируемым файлом) | | | Скрывает команду сопоставления от вывода в командной строке | | | Используется для определения специальных клавиш | | <script> | Сопоставляет {rhs} только с символами, определёнными в скрипте с помощью | | expr | Вычисляет выражение перед использованием в качестве {rhs} | | unique | Проверяет наличие сопоставления перед созданием нового | | Ключ | Описание ключа | Комбинация клавиш | | -------------------- | ----------------------- | ------------------------------------------------------------------ | | <F1> ~ <F12> | Функциональные клавиши F1 — F12 | | | <K0> ~ <K9> | Цифры от 0 до 9 | | | <Shift> | Клавиша Shift | <S-...> <s-...> <Shift-...> | | <Ctrl> | Клавиша Ctrl | <C-...> <c-...> <Ctrl-...> | | <Alt> | Клавиша Alt | <A-...> <a-...> <Alt-...> | | <Up>/<Down>/<Right>/<Left> | Направленные клавиши | | | <Esc> | Клавиша Esc | | | <Leader> | Префиксный ключ | | | <Tab> | Табуляция | | | <CR> | Ввод (Enter) | |
В файле конфигурации vimrc можно массово настроить параметры, например:
syntax # Вывести список уже определённых синтаксических элементов.
syntax clear # Очистить уже определённые правила синтаксиса.
syntax on # Включить подсветку синтаксиса.
syntax off # Отключить подсветку синтаксиса.
set nu # Включить отображение номеров строк. Чтобы отключить, используйте :set nonu.
set number # Включить отображение номеров строк. Чтобы отключить, используйте :set nonumber.
set list # Включить отображение символов табуляции и переноса строки.
set history=200 # Записать 200 команд в историю.
set bs=? # Установить режим обратного пробела. В современных редакторах используется :set bs=eol, start, indent.
set sw=4 # Установить ширину отступа в 4 символа.
set ts=4 # Установить ширину символа табуляции в 4 пробела.
set noet # В GVim запретить захват клавиши Alt для переключения раскладки.
set et # Разрешить переключение раскладки с помощью клавиши Alt.
set winaltkeys=no # В GVim разрешить захват функциональных клавиш для переключения раскладки.
set nowrap # Запретить автоматический перенос строк.
set ttimeout # Разрешить терминалу обнаруживать нажатие функциональных клавиш (функциональные клавиши представляют собой последовательность символов Esc, начинающуюся с префикса).
set ttm=100 # Установить время ожидания нажатия функциональной клавиши в 100 миллисекунд.
set term=? # Установить тип терминала, например, xterm.
set ignorecase # Игнорировать регистр при поиске.
set smartcase # Умный поиск по регистру: игнорировать регистр, если в строке поиска нет заглавных букв, иначе учитывать регистр.
set relativenumber # Отображать относительные номера строк (расстояние между текущей строкой и другими строками).
set paste # Перевести в режим вставки (отключить форматирование при вставке).
set nopaste # Перевести из режима вставки.
set spell # Включить проверку орфографии.
set hlsearch # Включить выделение результатов поиска.
set nohlsearch # Отключить выделение результатов поиска.
set termguicolors # Включить поддержку цветов в Vim.
set ruler # Всегда отображать положение курсора.
set nocompatible # Отключить совместимость с исходным vi, этот параметр должен быть первым.
set incsearch # При вводе текста динамически отображать результаты поиска.
set insertmode # Vim всегда находится в режиме вставки, используйте Ctrl+o для временного выполнения команды.
set ff=unix # Использовать перенос строки в стиле Unix.
set ff=dos # Использовать перенос строки в стиле DOS.
set ff? # Просмотреть настройки переноса строки.
set hidden # Включить скрытый режим, позволяя переключаться на несохранённые буферы или отключать их.
set nohidden # Отключить скрытый режим, не позволяя переключаться на несохранённые буферы.
set termcap # Просмотреть, что терминал отправляет и получает от Vim.
set guicursor= # Решить проблему с символами в SecureCRT/PenguiNet при использовании NeoVim.
set t_RS= t_SH= # Решить проблему со странными символами в функциях Vim 8.0 в SecureCRT/PenguiNet.
set fo+=a # Включить автоматическое форматирование текстовых блоков.
set showtabline=? # Показать панель вкладок, ? = 0 скрывает панель вкладок, 1 показывает её при необходимости, 2 всегда показывает.
inoremap vv <Esc> # В режиме вставки vv сопоставляется с Esc для выхода из режима вставки.
nnoremap gh ^ # В обычном режиме gh сопоставляется с ^ для перехода к началу строки.
nnoremap gl $ # В обычном режиме gl сопоставляется с $ для перехода к концу строки.
## Режимы Vim
- Обычный режим: нажмите Esc или Ctrl+[ для перехода в обычный режим, в нижнем левом углу отображается имя файла или ничего.
- Режим вставки: нажмите i для перехода в режим вставки, в нижнем левом углу отобразится --INSERT--.
- Визуальный режим: нажмите v для перехода в визуальный режим, в нижнем левом углу отобразится --VISUAL--.
- Выбор режима: нажмите {visual}+Ctrl+g для перехода в режим выбора, в нижнем левом углу отобразится --SELECT--.
- Заменяющий режим: начните с r или R для запуска заменяющего режима, в нижнем левом углу отобразится --REPLACE--.
- Командный режим: начните с : или / или ?, чтобы перейти в командный режим, в нижнем левом углу не будет отображаться явная информация.
- Ex режим: начните с Q, чтобы войти в Ex режим, который похож на командный режим, после выполнения команды вы останетесь в Ex режиме, введите :vi[sual], чтобы выйти из Ex режима.
## Внешние команды
:!{command} # Выполнить одноразовую команду оболочки, например :!pwd, вывести текущий путь к каталогу в режиме Vim. :!! # Повторно выполнить последнюю выполненную команду. :sh[ell] # Запустить интерактивную оболочку для выполнения нескольких команд без выхода из Vim. exit завершает работу и возвращается в Vim. :!ls # Выполнить внешнюю команду ls и дождаться результата. :r !ls # Перенести вывод внешней команды ls и вставить его после курсора. :w !sudo tee % # Сохранить текущий файл с правами sudo, также можно использовать :w !sudo tee % > /dev/null. :call system('ls') # Вызвать команду ls, но не отобразить результат. :!start notepad # В Windows запустить Notepad, перед командой можно добавить silent. :sil !start cmd # В Windows открыть текущую директорию в командной строке. :%!prog # Запустить программу фильтрации текста, например для упорядочивания JSON формата :%!python -m json.tool.
## Команды GUI
:gui # Запустить GUI в UNIX. :gui {fname} # То же самое, но также открыть fname. :menu # Вывести все меню. :menu {mpath}
:menu {mpath} {rhs} # Добавить rhs в меню mpath.
:menu {pri} {mpath} {rhs} # То же самое, но с приоритетом pri.
:menu ToolBar.{name} {rhs} # Добавить rhs к панели инструментов ToolBar.
:tmenu {mpath} {text} # Добавить текст к меню mpath в качестве подсказки.
:unmenu {mpath}. # Удалить меню mpath.
## Автоматические команды
Автоматические команды — это команды, которые выполняются автоматически при возникновении определённого события. Они используются для автоматизации повторяющихся действий и повышения эффективности работы.
Синтаксис автоматической команды:
```bash
:au[tocmd] [group] {event} {aupat} [++once] [++nested] {command}
Параметры:
Примеры использования:
Группы автоматических команд:
Пример использования группы автоматических команд:
:augroup cprograms
: autocmd!
: autocmd FileReadPost *.c :set cindent
: autocmd FileReadPost *.cpp :set cident
:augroup END
Здесь мы определяем группу автоматических команд «cprograms», которая будет выполнять определённые действия при чтении файлов с расширением .c или .cpp. Команда autocmd! используется для удаления любых существующих автоматических команд перед добавлением новых.
Если для одного и того же файла и события определено несколько автоматических команд, то они будут выполняться последовательно. Поэтому рекомендуется использовать команду autocmd! в начале группы автоматических команд для предотвращения дублирования.
Плагин Quickfix предоставляет функции, полезные для компиляции и отладки программ.
Команды для работы с Quickfix:
Кодировка файла — это способ представления символов в файле. Vim поддерживает различные кодировки файлов, такие как UTF-8, GBK и другие.
Для работы с кодировкой файлов в Vim можно использовать следующие команды:
Также можно использовать команды для настройки автоматического определения кодировки файла:
В Vim есть три основных типа кодировок:
При работе с файлами важно правильно определить их кодировку, чтобы избежать проблем с отображением символов. Если вы не уверены в кодировке файла, вы можете попробовать использовать команду :set fencs=ucs-bom,utf-8,chinese,cp936,latin1 для автоматического определения наиболее подходящей кодировки. # Просмотр Vim встроенных документов с полезными советами
:h set-termcap — просмотр того, как настроить клавиши сканирования.
:viu[sage] — отображение справки по обычным командам. Цель — имитировать соответствующие команды Nvi.
:exu[sage] — отображение справки по командам Ex. Цель — имитировать соответствующие команды Nvi.
:ve[rsion] — просмотр версии Vim, а также просмотр порядка загрузки и расположения конфигурационных файлов Vim.
--- Полезные справочные сведения ---
:h aug[roup] — просмотр справки по группам автоматических команд.
:h internal-variables — получение дополнительной информации о переменных и их области действия.
В этом документе используются различные специальные символы, которые соответствуют следующим соглашениям:
Следующие клавиши имеют определённые названия, которые могут использоваться в документации Vim и в командах :map (см. файл конфигурации vimrc).
Идентификатор | Значение |
---|---|
0 | |
Backspace | |
Tab | |
Новая строка | |
Перевод страницы | |
Ввод | |
То же, что и | |
То же, что и | |
Эскейп | |
Пробел | |
Меньше чем | |
Обратная косая черта | |
Вертикальная черта | |
Удалить | |
Команда последовательности | |
CSI для графического интерфейса | |
Конец строки (может быть , или , в зависимости от системы и формата файла) | |
Курсор вверх | |
Курсор вниз | |
Курсор влево | |
Курсор вправо | |
Shift + курсор вверх | |
Shift + курсор вниз | |
Shift + курсор влево | |
Shift + курсор вправо | |
Ctrl + курсор влево | |
Ctrl + курсор вправо | |
- | Функциональные клавиши 1–12 |
- | Shift + функциональные клавиши 1–12 |
Клавиша помощи | |
Отменить | |
Insert | |
Начало строки | |
Конец строки | |
Page-up | |
Page-down | |
Маленькая клавиатура Home (вверху слева) | |
Маленькая клавиатура End (внизу слева) | |
Маленькая клавиатура Page-up (вверху справа) | |
Маленькая клавиатура Page-down (внизу справа) | |
Маленькая клавиатура + | |
Маленькая клавиатура - | |
Маленькая клавиатура * | |
Маленькая клавиатура / | |
Маленькая клавиатура Enter | |
Маленькая клавиатура десятичная точка | |
- | Маленькая клавиатура 0–9 |
<S-...> | Shift + другие клавиши |
<C-...> | Ctrl + другие клавиши |
<M-...> | Alt + клавиша или Meta + клавиша |
<A-...> | То же самое, что и M-... |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )