---
category: tool
tool: vim
contributors:
    - ["RadhikaG", "https://github.com/RadhikaG"]
translators:
    - ["Anton Slukovskiy", "https://github.com/slukovskiy"]
filename: LearnVim-ru.txt
lang: ru-ru
---

[Vim](http://www.vim.org)
(Vi IMproved) это клон полулярного текстового редактора для Unix. Он разработан
с целью повышения скорости и продуктивности и повсеместно используется в 
большинство Юникс-подобных систем. В нем имеется множество клавиатурных 
сочетаний для быстрой навигации к определенным точкам в файле и быстрого 
редактирования.

## Основы навигации в 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                # Передвигает курсор к предыдущему вхождения искомого слова

    :%s/foo/bar/g    # Меняет «foo» на «bar» во всем файле
    :s/foo/bar/g     # Меняет «foo» на «bar» на текущей строке

    # Переходы к символу

    f<character>     # Перенести курсор к <character>
    t<character>     # Перенести курсор вперед и остановиться прямо
                     # перед <character>

    # Например,
    f<               # Перести курсор и остановиться на <
    t<               # Перенсти курсор и остановиться прямо перед <
    
    # Перемещение по словам

    w                # Переместиться вперед на одно слово
    b                # Перенеститься назад на одно слово
    e                # Перейти к концу текущего слова

    # Другие команды для передвижения по тексту

    gg               # Перейти к началу файла
    G                # Перейти к концу файла
    :NUM             # Перейти к строке под номером NUM 
                     # (NUM может быть любым числом)
    H                # Переместить курсор к верхнему краю экрана
    M                # Переместить курсор к середине экрана
    L                # Переместить курсор к нижнему краю экрана
```

## Режимы:

Vim основывается на концепте **режимов**.

Командный режим - vim запускается в этом режиме по-умолчанию, используется для 
навигации и ввода команд.
Режим ввода - используется для внесения изменений в файле.
Визуальный режим - используется для подсветки текста и выполнения операций над ним.
Режим командной строки - используется для ввода команд в нижнем углу экрана после символа «:».

```
    i                # Переводит vim в режим вставки перед позицией курсора
    a                # Переводит vim в режим вставки после позиции курсора
    v                # Переводит vim в визуальный режим
    :                # Переводит vim в режим командной строки
    <esc>            # Выходит из любого режима в котором вы находитесь 
                     # в командный режим

    # Копирование и вставка текста

    y                # Скопировать выделенное
    yy               # Скопировать текущую строку
    d                # Удалить выделенное
    dd               # Удалить текущую строку
    p                # Вставить скопированный текст после текущей позиции курсора
    P                # Вставить скопированный текст перед текущей позицией курсора
    x                # Удалить символ под текущей позицией курсора
```

## «Грамматика» vim

Vim можно рассматривать как набор команд в формате «Глагол-Модификатор-Существительное», где:

Глагол - ваше действие.
Модификатор - то как вы его выполняете.
Существительное - объект над которым вы его выполняете.

Несколько важных пример «Глаголов», «Модификаторов», и «Существительных»:

```
    # «Глаголы»
 
    d                # Удалить
    c                # Изменить
    y                # Скопировать
    v                # Визуально выделить

    # «Модификаторы»

    i                # Внутри
    a                # Снаружи
    NUM              # Число
    f                # Ищет что-то и останавливается на нем
    t                # Ищет что-то и останавливается перед ним
    /                # Ищет строку после курсора
    ?                # Ищет строку перед курсором

    # «Существительные»

    w                # Слово
    s                # Предложение
    p                # Параграф
    b                # Блок
    
    # Образцы «предложений» или команд

    d2w              # Удалить 2 слова
    cis              # Изменить объемлющее предложение
    yip              # Скопировать объемлющий параграф
    ct<              # Изменяет текст от курсора до следующей открывающей скобки
    d$               # Удалить все от положения курсора до конца строки
```

## Некоторые сокращения и хитрости

        <!--TODO: Add more!-->
```
    >                # Сдвинуть выделенное на один отступ вправо
    <                # Сдвинуть выделенное на один отступ влево
    :earlier 15m     # Возвращает документ к состоянию в котором он был 
                     # 15 минут назад
    :later 15m       # Отменяет предыдущую команду
    ddp              # Меняет позиции последовательных строк, сначала dd затем p
    .                # Повторяет предыдущее действие
```

## Макросы

Макросы это просто записываемые действия.
Во время записи макросы запоминают **все** действия и команды до тех пор пока 
запись не будет остановлена.При вызове макрос применяет ту же самую последовательность 
действий и команд на выделенном тексте.

```
    qa               # Начать запись макроса под именем «a»
    q                # Закончить запись
    @a               # Выполнить макрос 
```

### Настройка ~/.vimrc

Файл .vimrc может использоваться для настройки Vim при запуске.

Вот пример файла ~/.vimrc:

```
" Пример ~/.vimrc
" 2015.10 

" Отключает совместимость со старым vi
set nocompatible

" Определяет тип файла по его имени для разрешения автоматических отступов и т. д.
filetype indent plugin on

" Включает подсветку синтаксиса
syntax on

" Улучшенное автодополнение команд 
set wildmenu

" Использовать поиск не чувствительный к регистру 
" за исключением использования заглавный букв
set ignorecase
set smartcase

" Копирует отступы с текущей строки при добавлении новой
set autoindent

" Показывать номера строк
set number

" Настройки отступов, изменяйте по собственному вкусу

" Количество видимых пробелов на один символ табуляции
set tabstop=4

" Количество пробелов в символе табуляции при редактировании
set softtabstop=4

" Количество пробелов в отступе при использовании операций >> и << 
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)

[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)
