--- contributors: - ["RadhikaG", "https://github.com/RadhikaG"] translators: - ["Anton Slukovskiy", "https://github.com/slukovskiy"] filename: LearnVim-ru.txt --- [Vim](http://www.vim.org) (Vi IMproved) это клон популярного текстового редактора для Unix. Он разработан с целью повышения скорости и продуктивности и повсеместно используется в большинство Юникс-подобных систем. В нем имеется множество клавиатурных сочетаний для быстрой навигации к определенным точкам в файле и быстрого редактирования. ## Основы навигации в vim ``` vim # Открыть в vim :q # Выйти из vim :w # Сохранить текущий файл :wq # Сохранить и выйти :q! # Выйти из vim не сохраняя файл :x # Сохранить файл и выйти из vim, короткая версия :wq u # Отмена последней команды CTRL+R # Отмена отмены h # Переместить курсор на один символ влево j # Переместить курсор на один символ вниз k # Переместить курсор на один символ вверх l # Переместить курсор на один символ вправо # Перемещение по строке 0 # Переместить курсор к началу строки $ # Переместить курсор к концу строки ^ # Переместить курсор к первому непустому символу в строке # Поиск в тексте / # Подсветить все вхождения в тексте после курсора ? # Подсветить все вхождения в тексте до курсора n # Передвигает курсор к следующему вхождения искомого слова N # Передвигает курсор к предыдущему вхождения искомого слова :%s/foo/bar/g # Меняет «foo» на «bar» во всем файле :s/foo/bar/g # Меняет «foo» на «bar» на текущей строке # Переходы к символу f # Перенести курсор к t # Перенести курсор вперед и остановиться прямо # перед # Например, f< # Перести курсор и остановиться на < t< # Перенсти курсор и остановиться прямо перед < # Перемещение по словам w # Переместиться вперед на одно слово b # Перенеститься назад на одно слово e # Перейти к концу текущего слова # Другие команды для передвижения по тексту gg # Перейти к началу файла G # Перейти к концу файла :NUM # Перейти к строке под номером NUM # (NUM может быть любым числом) H # Переместить курсор к верхнему краю экрана M # Переместить курсор к середине экрана L # Переместить курсор к нижнему краю экрана ``` ## Режимы Vim основывается на концепте **режимов**. Командный режим - vim запускается в этом режиме по-умолчанию, используется для навигации и ввода команд. Режим ввода - используется для внесения изменений в файле. Визуальный режим - используется для подсветки текста и выполнения операций над ним. Режим командной строки - используется для ввода команд в нижнем углу экрана после символа «:». ``` i # Переводит vim в режим вставки перед позицией курсора a # Переводит vim в режим вставки после позиции курсора v # Переводит vim в визуальный режим : # Переводит vim в режим командной строки # Выходит из любого режима в котором вы находитесь # в командный режим # Копирование и вставка текста 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$ # Удалить все от положения курсора до конца строки ``` ## Некоторые сокращения и хитрости ``` > # Сдвинуть выделенное на один отступ вправо < # Сдвинуть выделенное на один отступ влево :earlier 15m # Возвращает документ к состоянию в котором он был # 15 минут назад :later 15m # Отменяет предыдущую команду ddp # Меняет позиции последовательных строк, сначала dd затем p . # Повторяет предыдущее действие ``` ## Макросы Макросы это просто записываемые действия. Во время записи макросы запоминают **все** действия и команды до тех пор, пока запись не будет остановлена. При вызове макрос применяет ту же самую последовательность действий и команд на выделенном тексте. ``` qa # Начать запись макроса под именем «a» q # Закончить запись @a # Выполнить макрос ``` ### Настройка ~/.vimrc Файл .vimrc может использоваться для настройки Vim при запуске. Вот пример файла ~/.vimrc: ```vim " Пример ~/.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)