Инструменты пользователя

Инструменты сайта


vim:cheat_sheet

Это старая версия документа!


# Шпаргалка по Vim ## Общее

:help keyword - открыть помощь по ключевому слову
:o file - открыть file
:sav file - сохранить весь текщий буфер как file
:close - закрыть текущую панель
K - открыть справочное руководство для слова под курсором

## Перемещение курсора

h - передвинуть курсор влево
j - передвинуть курсор на одну фактическую строку вниз
k - передвинуть курсор на одну фактическую строку вверх
l - передвинуть курсор вправо
gj - передвинуть курсор на одну видимую строку вниз
gk - передвинуть курсор на одну видимую строку вверх
H - переместиться к началу экрана
M - переместиться к середине экрана
L - переместиться к концу экрана
w - переместиться вперед на начало слова
e - переместиться вперед на конец слова
b - переместиться назад на начало слова
% - переместиться к парному символу (по умолчанию поддерживаются: '()', '{}', '[]' - подробнее по команде :h matchpairs в vim)
0 - переместиться на начало строки
$ - переместиться на конец строки
gg - переместиться на первую строку документа
G - переместиться последнюю строку документа
5G - переместить на пятую строку
} - переместиться к следующему параграфу (или функции/блоку при редактировании кода)
{ - переместиться к предыдущему параграфу (или функции/блоку при редактировании кода)
Ctrl + b - переместиться назад на целый экран
Ctrl + f - переместиться вперед на целый экран
Ctrl + d - переместиться вперед на половину экрана
Ctrl + u - переместиться назад на половину экрана

Чтобы узнать номер строке, на которой в файле стоит курсор, и информацию о файле нужно нажать Ctrl + g. Чтобы перейти на строку номер N нужно набрать номер соответствующей строки (N), а потом нажать Shift + g

## Режим вставки - вставка/добавление текста

i - вставка перед курсором
I - вставка в начало строки
a - вставка (добавление) после курсора
A - вставка (добавление) в конец строки
o - добавление новой строки под текущей
O - добавление новой строки над текущей
ea - вставка (добавление) после конца слова
Esc - выход из режима вставки

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

r - заменить один символ
R - заменить более чем один символ
J - присоединить нижнюю строку к текущей
cc - заменить всю строку
cw - заменить всё текущее слово
c$ - заменить до конца строки
s - удалить символ и заменить текст
S - удалить строку и заменить текст (то же что cc)
xp - переставить две буквы (удалить и вставить)
u - отменить
Ctrl + r - применить последнее отменённое изменение
. - повторить последнюю команду

## Вырезать и вставить

yy - скопировать строку
2yy - скопировать 2 строки
yw - скопировать слово
y$ - скопировать до конца строки
p - вставить буфер обмена после курсора
P - вставить буфер обмена перед курсором
dd - удалить (вырезать) строку
2dd - удалить (вырезать) 2 строки
dw - удалить (вырезать) слово
D - удалить (вырезать) до конца строки
d$ - удалить (вырезать) до конца строки
x - удалить (вырезать) символ

Многие команды, изменяющие текст, состоят из оператора и объекта. Формат команды удаления с оператором d следующий:

``` d объект ``` Здесь:

  • d - оператор удаления.
  • объект - над чем должна быть выполнена команда (перечислено ниже).

Формат команды в обычном режиме имеет вид: ``` [число] команда объект ИЛИ команда [число] объект ``` где:

  • [число] - сколько раз повторить выполнение команды, опционально
  • команда - что выполнить, например d для удаления
  • объект - на что должна воздействовать команда, например w (слово), $ (до конца строки), и т.д.

Краткий список объектов:

  • w - от курсора до конца слова, включая последующий пробел.
  • e - от курсора до конца слова, НЕ включая последующий пробел.
  • $ - от курсора до конца строки.
  • ^ - от курсора до начала строки.

Замечание! Простое нажатие на символ объекта в обычном режиме (Normal mode) без предварительного оператора переместит курсор так, как указано в списке объектов.

## Копирование/вставка из системного буфера обмена

:set paste - вход в режим вставки
:set nopaste - выход из режим вставки
Ctrl+Shift+V - вставить в файл, если в режиме вставки; Command+Shift+V для Mac

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

/pattern - поиск шаблона
?pattern - обратный поиск шаблона
\vpattern - 'very magic' режим: все не алфавитно-цифровые символы интерпретируются как специальные (экранирование не требуется)
n - повторить поиск в том же направлении
N - повторить поиск в обратном направлении
:#,#s/было/стало/g -заменить все вхождения между двумя строками, где #,# -- номера этих строк
:%s/было/стало/g - заменить все вхождения шаблона в файл на указанное значение
:%s/было/стало/gc - заменить все вхождения шаблона в файл на указанное значение с подтверждением
:noh - отключить подсвечивание результатов поиска

Включение некоторых параметров при поиске: ``` set XXX ``` где XXX может принимать значения:

  • 'ic' 'ignorecase' - игнорирование регистра при поиске
  • 'is' 'incsearch' - отображение частичных совпадений при поиске
  • 'hls' 'hlsearch' - подсветка всех совпадений при поиске

Для отключения параметров следует добавить 'no' перед параметром: ``` :set noic ```

### Поиск в нескольких файлах

:vimgrep /pattern/{file} - поиск по шаблону в нескольких файлах
:cn - переместиться к следующему совпадению
:cp - переместиться к предыдущему совпадению
:copen - открыть окно со списком результатов

## Сворачивание

zf#j - создает свертку от текущей позиции до # строк вниз
zf/подстрока - создает свертку от текущей позиции и до первой найденной подстроки
v/V и zf - выделение блока и создание свертки

### Команды для управления:

zc - свернуть блок
zo - развернуть блок
zM - закрыть все блоки
zR - открыть все блоки
za - инвертирование (если открыто – закрыть, если закрыто – открыть)
zj - переход к следующей свертке
zk - переход к предыдущей свертке
zd - удалить свертку под курсором
zD - удалить все свертки
[z - перейти к началу текущей свертки
]z - перейти к концу текущей свертки

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

## Работа с несколькими файлами

:e file - редактировать файл в новом буфере
:bnext либо :bn - перейти к следующему буферу
:bprev либо :bp - перейти к предыдущему буферу
:bd - удалить буфер (закрыть файл)
:ls - список всех открытых буферов
:sp file - открыть файл в новом буфере и разделить окно
:vsp file - открыть файл в новом буфере и вертикально разделить окно
Ctrl + ws - разделить окно
Ctrl + ww - переключение окон
Ctrl + wq - закрыть окно
Ctrl + wv - разделить окно вертикально
Ctrl + wh - переместить курсор в левое окно (вертикально разделение)
Ctrl + wl - переместить курсор в правое окно (вертикальное разделение)
Ctrl + wj - переместить курсор в окно ниже (горизонтальное разделение)
Ctrl + wk - переместить курсор в окно выше (горизонтальное разделение)

### Вкладки

:tabnew либо :tabnew file - открыть файл в новой вкладке
Ctrl + wT - переместить текущее окно в собственную вкладку
gt либо :tabnext либо :tabn - переключиться на следующую вкладку
gT либо :tabprev либо :tabp - переключиться на предыдущую вкладку
#gt - переключить на вкладку номер #
:tabmove # - переместить текущую вкладку на # позицию (нумерация с 0)
:tabclose либо :tabc - закрыть текущую вкладку и все её окна
:tabonly либо :tabo - закрыть все вкладки кроме текущей
:tabdo command - выполнить command на всех вкладках (к примеру :tabdo q - закрывает все открытые вкладки)

## Регистры

:reg - показать содержимое регистров
«xy - поместить содержимое в регистр x
«xp - вставить содержимое регистра x

## Метки

:marks - список меток

ma - установить метку A на текущей позиции

`a - переместиться к метке A

y`a - скопировать до метки A

/var/www/html/dokuwiki/data/attic/vim/cheat_sheet.1701971520.txt.gz · Последнее изменение: (внешнее изменение)