# Vim (Русский)

Vim (VI iMproved, Улучшенный Vi) - текстовый редактор, происходящий от vi. Он печально известен своей сложностью в изучении и недружелюбностью к пользователю. Однако, благодаря своей эффективности, множеству плагинов и гибкости в настройке vim стал одним из наиболее популярных текстовых редакторов для программистов и пользователей *nix (вместе с Emacs). Доступна также графическая версия vim - gvim, которая предоставляет пользователю интерфейс на базе GTK2.

## Установка

- `vim` зависит от `vi`, так что следует сначала установить его. Однако, поскольку последний является частью базового инсталляционного пакета, у большинства пользователей он уже должен быть. (прим. перев.: pacman -S устанавливает пакеты вместе с их зависимостями, так что достаточно команды, приведённой ниже)

    pacman -S vim

## Настройка

Конфигурационный файл vim находится в домашнем каталоге пользователя (`~/`) и называется .vimrc. Пример конфигурационного файла находится в `/etc/vimrc`.

    "Sample .vimrc
    set nocompatible
    set showmatch
    set incsearch
    set ignorecase
    set smartcase
    set history=100
    set backspace=eol,start,indent
    set ruler
    set tabstop=4
    set shiftwidth=4
    set expandtab
    set virtualedit=all
    set background=dark
    set vb t_vg=
    set mouse=v
    set textwidth=79
    set formatoptions=tcrq

- Чтобы установить gvim (то же, что и vim, но с gtk2-интерфейсом и смотрит в `/etc/gvimrc` и в `~/.gvimrc`), введите

    pacman -S gvim

- Существует также набор скриптов для vim, доступный через pacman

    pacman -S vim-scripts

## Быстрый старт

### Запуск vim

- Чтобы запустить vim и отредактировать файл (новый или существующий), введите:

    vim filename

- Чтобы запустить vim и открыть новый файл:

    vim

(Можно ввести имя файла позже, при сохранении)

### Ввод текста

vim - редактор с множеством режимов. Базовыми режимами являются:

- Режим вставки, в котором всё, что вы напечатаете (за исключением некоторых специальных клавиш) появляется на экране и помещается в ваш файловый буфер

- Командный режим (также известный как "нормальный режим"), в котором нажатия клавиш интерпретируются как команды.

- Так называемый "режим последней строки", из которого можно сохранить файл, открыть ещё один, найти что-либо в тексте и выполнить некоторые другие действия.

После запуска vim вы попадаете в командный режим.

- Переключение между режимами.

1. Из командного в режим вставки - клавишей <i>, из командного - в режим последней строки - клавишей <:>

2. Из режима вставки в командный - клавишей <Esc>

3. Из режима последней строки в командный режим - клавишей <Esc >

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

Как в командном, так и в режиме вставки курсор перемещается стрелками, а в gvim можно задать положение курсора щелчком мыши. Однако, это не по-вимовски. Наиболее эффективный способ - переключиться в командный режим и использовать команды vim для перемещения курсора. Существует 4 базовых команды:

- j - на одну строку ниже
- k - на одну строку выше
- h - на один символ влево
- l - на один символ вправо

Запомните: эти команды работают только в командном режиме. Сначала будет не совсем удобно, но когда вы привыкнете к ним, вы забудете про стрелки.

Некоторые другие команды:

- 0 (нуль) или ^ - для перемещения к первому символу в строке
- $ - для перемещения к последнему символу в строке
- w - для перемещения к первой букве следующего слова
- e - для перемещения к последнему символу следующего слова
- ( - для перемещения к началу предыдущего предложения
- ) - для перемещения к началу следующего предложения
- { - для перемещения к началу текущего абзаца
- } - для перемещения к началу следующего абзаца
- <PgUp> или <Ctrl>+<F> - для перемещения на одну страницу вверх
- <PgDn> или <Ctrl>+<B> - для перемещения на одну страницу вниз
- <номер строки>-<G> - перемещение курсора на указанный номер строки.
- <Shift>+<G> - перемещение курсора на последнюю строку файла.
- <g>-<g> - перемещение курсора на первую строку файла.

### Удаление текста

Прежде всего, стоит отметить, что клавиша <Delete> работает всегда, а <Backspace> - в режиме вставки. Однако, предполагается, что вы их использовать не будете. Вместо этого предполагается использование команд удаления vim.

1. Перейдите в командный режим

2. Наведите курсор на символ, который хотите удалить.

3. Нажмите <x>, символ исчезнет.

x - лишь одна из многих мощных команд удаления. Подробнее о них можно узнать, задействовав vimtutor (см. ниже).

### Вставка текста

1. В командном режиме подведите курсор к нужному месту

2. Нажмите <i> и введите текст. Текст введётся перед выделенным символом

ИЛИ

2. Нажмите <a>. Текст введётся после выделенного символа.

2. Нажмите <Shift>+<a>. Текст введётся после последнего символа строки.

### Cut, Copy, Paste

Если вы используете gvim, вы можете выполнять эти операции с помощью меню, как и в любом другом редакторе. Однако, этот способ не рекомендуется. Лучше действовать без мыши:

1. Войдите в командный режим

2. Подведите курсор к строке, которую вы хотите скопировать

3. Нажмите

    yy

чтобы скопировать строку, или

    dd

чтобы удалить строку и поместить в буфер.

4. Теперь переместите курсор к месту, где хотите вставить скопированный/вырезанный текст.

5. Нажмите

    p

чтобы поместить строку из буфера после текущей строки, или

    P

чтобы поместить её перед текущей строкой.

Чтобы скопировать несколько строк, поместите их количество перед командой yy, например

    6yy

чтобы скопировать 6 строк. Разумеется, это лишь вершина айсберга, vimtutor знает гораздо больше команд.

### Cut, Copy, Paste в визуальном режиме

Визуальный режим похож на командный, но команды перемещения расширяют область выделения. Когда вводятся команды, они применяются к этой области. Копирование, вырезание и вставка больших областей текста более эффективны в визуальном режиме.

Нажмите v, чтобы перейти в визуальный режим, затем выделите текст с помощью клавиш перемещения курсора. Также можно выделять текст мышью. (Если в командном режиме начать выделять мышью, vim автоматически перейдёт в визуальный режим)

Чтобы копировать текст, нажмите

    y

Чтобы вырезать:

    d

Чтобы вставить перед курсором:

    p

или

    P

чтобы вставить после него.

### Отмена действий

После того, как вы научились копировать, удалять и вставлять текст, вам может понадобиться исправить некоторые ошибки.

    u

отменит последнее действие. Повторное нажатие отменит следующее успешное действие.

А выполнить повторно последнее действие, если отменили слишком много:

    .

### Поиск слова

Предположим, вы хотите найти в тексте слово apple.

1. Перейдите в командный режим.

2. Наберите

    /apple<Enter>

чтобы найти вхождения этого слова в текст. После нажатия слеша, он и последующие символы будут отображены внизу экрана. После нажатия <Enter> курсор перейдёт к первому вхождению apple (если таковые есть), и оно будет подсвечено.

3. После того, как нашли первое вхождение apple, можно найти остальные, нажав

    n

Что бы искать в обратном направлении

    N

### Замена текста

Прежде всего убедитесь, что вы в командном режиме нажатием клавиши <Esc>.

- Чтобы заменить единственный символ, подведите к нему курсор и нажмите r, затем то, чем вы хотите его заменить.

- Чтобы заменить первое вхождение строки old в текущей строке строкой new

    :s/old/new

- Чтобы заменить все вхождения old в текущей строке на new

    :s/old/new/g

- Чтобы заменить первое входжение old между строками n1 и n2 на new

    :n1,n2s/old/new/

- Чтобы заменить все вхождения old между строками n1 и n2 на new

    :n1,n2s/old/new/g

- Чтобы заменить все вхождения old во всём текстовом буфере на new с подтверждением

    :%s/old/new/gc

или

    :1,$s/old/new/gc

### Выход из vim

- Для того, чтобы сохраниться и выйти, в командном режиме наберите

    :wq

или

    :x

или

    ZZ

- Для того, чтобы сохранить работу под именем newnname, наберите:

    :wq newname

- Для выхода без сохранения, нажмите

    :q

- Форсированный выход

Если :q не работает, возможно, данные не были сохранены. Если хотите их сохранить, используйте :wq, если нет, введите

    :q!

или

    ZQ

## Некоторые полезности режима последней строки

Будучи мощным текстовым редактором, vim поддерживает, кроме всего вышеперечисленного, также подсветку синтаксиса (в различных цветовых схемах) и конвертирование файлов из одной кодировки в другую.

- Чтобы включить подсветку синтаксиса, в командном режиме наберите

    :syn on

- Чтобы изменить схему подсветки (какие элементы каким цветом подсвечивать), введите

    :colorscheme name

где name - имя цветовой схемы

- Чтобы перекодировать файл, введите

    :e ++enc=from-enc

Файл будет отображён в кодировке вашего терминала.

- Включение отображение номеров строк

    :set number

Отключение отображение номеров строк

    :set nonumber

## Учебник по vim

Чтобы сделать свои первые шаги в vim, введите в командной строке

    vimtutor

или

    vimtutor ru

vim откроет файл интерактивного учебника.

## Ссылки

- Официальный сайт
- Документация

Categories:

- Development (Русский)
- Utilities (Русский)
- General (Русский)
- Русский