Поделиться страницей

Изучите X за Y минут

Где X=vim

Vim (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)

$ vimtutor

A vim Tutorial and Primer (EN)

What are the dark corners of Vim your mom never told you about? (Stack Overflow thread) (EN)

Arch Linux Wiki


Хотите предложить свой перевод? Может быть, улучшение перевода? Откройте Issue в репозитории Github или сделайте pull request сами!

Первоначально предоставлено автором RadhikaG, и обновлено 2 авторами.