2016-10-25 23:57:32 +03:00
---
category: tool
2024-10-21 00:46:35 +03:00
tool: Vim
2016-10-25 23:57:32 +03:00
contributors:
- ["RadhikaG", "https://github.com/RadhikaG"]
translators:
- ["Anton Slukovskiy", "https://github.com/slukovskiy"]
filename: LearnVim-ru.txt
lang: ru-ru
---
2017-06-01 12:31:14 +03:00
[Vim ](http://www.vim.org )
2022-06-15 12:17:20 +03:00
(Vi IMproved) это клон популярного текстового редактора для Unix. Он разработан
2024-04-20 10:57:37 +03:00
с целью повышения скорости и продуктивности и повсеместно используется в
большинство Юникс-подобных систем. В нем имеется множество клавиатурных
сочетаний для быстрой навигации к определенным точкам в файле и быстрого
2016-10-25 23:57:32 +03:00
редактирования.
## Основы навигации в vim
```
vim < filename > # Открыть < filename > в vim
:q # Выйти из vim
:w # Сохранить текущий файл
:wq # Сохранить и выйти
:q! # Выйти из vim не сохраняя файл
:x # Сохранить файл и выйти из vim, короткая версия :wq
u # Отмена последней команды
CTRL+R # Отмена отмены
h # Переместить курсор на один символ влево
j # Переместить курсор на один символ вниз
k # Переместить курсор на один символ вверх
l # Переместить курсор на один символ вправо
# Перемещение по строке
0 # Переместить курсор к началу строки
$ # Переместить курсор к концу строки
^ # Переместить курсор к первому непустому символу в строке
# Поиск в тексте
/< word > # Подсветить все вхождения < word > в тексте после курсора
?< word > # Подсветить все вхождения < word > в тексте до курсора
n # Передвигает курсор к следующему вхождения искомого слова
N # Передвигает курсор к предыдущему вхождения искомого слова
2016-10-27 16:25:46 +03:00
:%s/foo/bar/g # Меняет «foo» на «bar» во всем файле
:s/foo/bar/g # Меняет «foo» на «bar» на текущей строке
2016-10-25 23:57:32 +03:00
# Переходы к символу
f< character > # Перенести курсор к < character >
2016-10-27 16:25:46 +03:00
t< character > # Перенести курсор вперед и остановиться прямо
# перед < character >
2016-10-25 23:57:32 +03:00
# Например,
f< # Перести курсор и остановиться на <
t< # Перенсти курсор и остановиться прямо перед <
2024-04-20 10:57:37 +03:00
2016-10-25 23:57:32 +03:00
# Перемещение по словам
w # Переместиться вперед на одно слово
b # Перенеститься назад на одно слово
e # Перейти к концу текущего слова
# Другие команды для передвижения по тексту
gg # Перейти к началу файла
G # Перейти к концу файла
2024-04-20 10:57:37 +03:00
:NUM # Перейти к строке под номером NUM
2016-10-27 16:25:46 +03:00
# (NUM может быть любым числом)
2016-10-25 23:57:32 +03:00
H # Переместить курсор к верхнему краю экрана
M # Переместить курсор к середине экрана
L # Переместить курсор к нижнему краю экрана
```
2024-04-20 10:57:37 +03:00
## Режимы
2016-10-25 23:57:32 +03:00
Vim основывается на концепте **режимов** .
2024-04-20 10:57:37 +03:00
Командный режим - vim запускается в этом режиме по-умолчанию, используется для
2016-10-27 16:25:46 +03:00
навигации и ввода команд.
Режим ввода - используется для внесения изменений в файле.
Визуальный режим - используется для подсветки текста и выполнения операций над ним.
Режим командной строки - используется для ввода команд в нижнем углу экрана после символа «:».
2016-10-25 23:57:32 +03:00
```
i # Переводит vim в режим вставки перед позицией курсора
a # Переводит vim в режим вставки после позиции курсора
v # Переводит vim в визуальный режим
: # Переводит vim в режим командной строки
2024-04-20 10:57:37 +03:00
< esc > # Выходит из любого режима в котором вы находитесь
2016-10-27 16:25:46 +03:00
# в командный режим
2016-10-25 23:57:32 +03:00
# Копирование и вставка текста
y # Скопировать выделенное
yy # Скопировать текущую строку
d # Удалить выделенное
dd # Удалить текущую строку
p # Вставить скопированный текст после текущей позиции курсора
P # Вставить скопированный текст перед текущей позицией курсора
x # Удалить символ под текущей позицией курсора
```
2016-10-27 16:25:46 +03:00
## «Грамматика» vim
2016-10-25 23:57:32 +03:00
2016-10-27 16:25:46 +03:00
Vim можно рассматривать как набор команд в формате «Глагол-Модификатор-Существительное», где:
2016-10-25 23:57:32 +03:00
2016-10-27 16:25:46 +03:00
Глагол - ваше действие.
Модификатор - то как вы е г о выполняете.
Существительное - объект над которым вы е г о выполняете.
2016-10-25 23:57:32 +03:00
2016-10-27 16:25:46 +03:00
Несколько важных пример «Глаголов», «Модификаторов», и «Существительных»:
2016-10-25 23:57:32 +03:00
```
2016-10-27 16:25:46 +03:00
# «Глаголы»
2024-04-20 10:57:37 +03:00
2016-10-25 23:57:32 +03:00
d # Удалить
c # Изменить
y # Скопировать
v # Визуально выделить
2016-10-27 16:25:46 +03:00
# «Модификаторы»
2016-10-25 23:57:32 +03:00
i # Внутри
a # Снаружи
NUM # Число
f # Ищет что-то и останавливается на нем
t # Ищет что-то и останавливается перед ним
/ # Ищет строку после курсора
? # Ищет строку перед курсором
2016-10-27 16:25:46 +03:00
# «Существительные»
2016-10-25 23:57:32 +03:00
w # Слово
s # Предложение
p # Параграф
b # Блок
2024-04-20 10:57:37 +03:00
2016-10-27 16:25:46 +03:00
# Образцы «предложений» или команд
2016-10-25 23:57:32 +03:00
d2w # Удалить 2 слова
cis # Изменить объемлющее предложение
yip # Скопировать объемлющий параграф
ct< # Изменяет текст от курсора до следующей открывающей скобки
d$ # Удалить все от положения курсора до конца строки
```
## Некоторые сокращения и хитрости
<!-- TODO: Add more! -->
```
> # Сдвинуть выделенное на один отступ вправо
< # Сдвинуть выделенное на один отступ влево
2024-04-20 10:57:37 +03:00
:earlier 15m # Возвращает документ к состоянию в котором он был
2016-10-27 16:25:46 +03:00
# 15 минут назад
2016-10-25 23:57:32 +03:00
:later 15m # Отменяет предыдущую команду
ddp # Меняет позиции последовательных строк, сначала dd затем p
. # Повторяет предыдущее действие
```
## Макросы
Макросы это просто записываемые действия.
2024-04-20 10:57:37 +03:00
В о время записи макросы запоминают **все** действия и команды до тех пор, пока
запись не будет остановлена. При вызове макрос применяет ту же самую последовательность
2016-10-25 23:57:32 +03:00
действий и команд на выделенном тексте.
```
2016-10-27 16:25:46 +03:00
qa # Начать запись макроса под именем «a»
2016-10-25 23:57:32 +03:00
q # Закончить запись
2024-04-20 10:57:37 +03:00
@a # Выполнить макрос
2016-10-25 23:57:32 +03:00
```
### Настройка ~/.vimrc
Файл .vimrc может использоваться для настройки Vim при запуске.
Вот пример файла ~/.vimrc:
2024-04-20 10:57:37 +03:00
```vim
2016-10-25 23:57:32 +03:00
" Пример ~/.vimrc
2024-04-20 10:57:37 +03:00
" 2015.10
2016-10-25 23:57:32 +03:00
" Отключает совместимость с о старым vi
set nocompatible
" Определяет тип файла по е г о имени для разрешения автоматических отступов и т. д.
filetype indent plugin on
" Включает подсветку синтаксиса
syntax on
2024-04-20 10:57:37 +03:00
" Улучшенное автодополнение команд
2016-10-25 23:57:32 +03:00
set wildmenu
2024-04-20 10:57:37 +03:00
" Использовать поиск не чувствительный к регистру
2016-10-25 23:57:32 +03:00
" за исключением использования заглавный букв
set ignorecase
set smartcase
" Копирует отступы с текущей строки при добавлении новой
set autoindent
" Показывать номера строк
set number
" Настройки отступов, изменяйте по собственному вкусу
" Количество видимых пробелов на один символ табуляции
set tabstop=4
" Количество пробелов в символе табуляции при редактировании
set softtabstop=4
2024-04-20 10:57:37 +03:00
" Количество пробелов в отступе при использовании операций >> и < <
2016-10-25 23:57:32 +03:00
set shiftwidth=4
" Конвертировать символы табуляции в пробелы
set expandtab
" Включить умную табуляцию и пробелы для отступов и выравнивания
set smarttab
```
### Ссылки
[Vim | Home (EN) ](http://www.vim.org/index.php )
`$ vimtutor`
[A vim Tutorial and Primer (EN) ](https://danielmiessler.com/study/vim/ )
[What are the dark corners of Vim your mom never told you about? (Stack Overflow thread) (EN) ](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about )
2016-10-27 16:25:46 +03:00
[Arch Linux Wiki ](https://wiki.archlinux.org/index.php/Vim_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29 )