Vim — редактор или злая шутка фанатиков командной строки — Про Linux

vimtutor (1)


  • vimtutor (1) ( Solaris man: Команды и прикладные программы пользовательского уровня )
  • >> vimtutor (1) ( Русские man: Команды и прикладные программы пользовательского уровня )
  • vimtutor (1) ( Linux man: Команды и прикладные программы пользовательского уровня )
  •  

    Содержание

    ИМЯ

    vimtutor — учебник по Vim  

    КОМАНДНАЯ СТРОКА

    vimtutor [язык] 

    ОПИСАНИЕ

    Команда vimtutor запускает учебник по Vim. При этом сначала происходит создание копии файла учебника, чтобы его можно было редактировать без опасения потерять исходный файл.

    Программа vimtutor полезна для новичков, желающих научиться самым основным командам Vim.

    Необязательный параметр [язык] представляет собой двухсимвольный код языка, например "ru" или "it". Если параметр [язык] не указан, то используется язык активной в настоящий момент локали. Если учебник на этом языке не существует, то по умолчанию используется учебник на английском языке.

    При работе с учебником Vim всегда запускается в режиме совместимости с Vi.  

    ФАЙЛЫ

    /usr/share/vim/tutor/tutor[.язык]
    Текст учебника vimtutor.
    /usr/share/vim/tutor/tutor.vim
    Сценарий Vim, который используется для создания рабочей копии текста учебника vimtutor.

     

    АВТОРЫ

    Vimtutor был впервые написан для Vi Майклом К.

    Пирсом (Michael C. Pierce) и Робертом К. Уэа (Robert K. Ware) из Colorado School of Mines по идее Чарльза Смита (Charles Smith) из Colorado State University. E-mail: bware@mines.colorado.edu.
    Впоследствии учебник был доработан для использования в Vim Брамом Мооленааром (Bram Moolenaar). Имена переводчиков учебника упоминаются в соответствующих файлах.  

    СМОТРИ ТАКЖЕ

    vim(1)


     

    Index

    ИМЯ
    КОМАНДНАЯ СТРОКА
    ОПИСАНИЕ
    ФАЙЛЫ
    АВТОРЫ
    СМОТРИ ТАКЖЕ

    Vim для начинающих

    Этот пост есть крайне вольный перевод интерактивного учебника OpenVim.Com. После его прочтения вы получите необходимые знания, чтобы приручить этот чудный редактор. Рекомендую при прочтение сразу пробовать ту или иную команду в действии, а после, изучить коротенькую статью от хостинг-провайдера Beget: «Основы работы с редактором VIM». Дальше вы сами поймёте что делать …

    Поехали! ©

    Два режима: командный и режим редактирования

    Как понятно из заголовка, Vim имеет два основных режима: командный и режим редактирования.


    Командный режим (normal)
    это режим, в котором мы вводим команды, передвигаемся по тексту и манипулируем им (текстом). Командный режим могут называть «нормальным», «обычным» и ещё как-нибудь, но в рамках этого поста он будет называться командным.
    Режим редактирования (insert)
    это режим, в котором мы пишем текст как в обычном текстовом редакторе. Режим редактирования могут называть «режимом вставки», «режимом ввода» и ещё как-нибудь, но в рамках этого поста он будет называться режимом редактирования.

    Текущий режим, кроме командного, показывается в левом нижнем углу, вот так:

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


    Чтобы перейти в режим редактирования (insert), нужно нажать

    Чтобы перейти в командный режим, нужно нажать .


    Внимание!

    Все команды / клавиши, которые будут описываться далее, работают только в командном режиме, так как в режиме редактирования Vim представляет собой обычный текстовый редактор.

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

    Это чтобы вы не думали: «Почему, блин, не работает?».

    Передвижение курсора

    Помимо использования стандартных стрелок, в Vim можно передвигать курсор с помощью следующих клавиш:

    •  — влево;
    •  — вниз;
    •  — вверх;
    •  — вправо.

    Это наверняка сделано для удобства, так как в Vim’е мы всё делаем с помощью клавиатуры и при печати в две руки это весьма удобно.

    Передвижение по словам

    Для передвижения по словам можно использовать следующие клавиши (регистр не важен):

    •  (word) — переместить курсор на первый символ следующего слова;
    •  (end) — переместить курсор на последний символ слова (текущего или следующего);
    •  (begin) — переместить курсор на первый символ слова (текущего или предыдущего).

    Про клавишу  … Если курсор находится в слове, но не на последнем символе, то при нажатии он переместиться к концу этого слова. Если курсор находится на последнем символе слова, то он переместится на последний символ следующего слова.

    Про клавишу  … Она работает так же, как и , только наоборот: базируясь на начале слова.

    Передвижение по нескольким словам сразу

    Представим, что нам нужно переместиться на три слова вперёд. Можно нажать 3 раза клавишу , но ещё можно сделать и так: нажать клавишу , а затем .

    С остальными клавишами навигации по словам ( и ) это тоже работает&#160…

    Да и чего уж таить ☺: это работает и с клавишами передвижения курсора по символам (, , , ) и многими другими командами, которые будут описаны далее.

    Пример … Допустим, мы хотим переместить курсор на 9 символов вперед. Можно нажать 9 раз клавишу  («эль») или , а можно и пойти вышеописанным путём: нажать клавишу , а затем  («эль») или .

    Размножение текста

    Представим, что мы хотим напечатать 30 символов дефиса (-). Как вы понимаете, мы не будем нажимать 30 раз клавишу и при этом считать, чтобы получить их точное количество. Мы сделаем так:

    1. нажмём клавишу , а если быть точнее, то клавиши и  ☺;
    2. затем нажмём клавишу
    3. после нажмём ;
    4. и завершим всё это ‘ом.

    Что мы тут понажимали?

    Мы ввели такую комбинацию:

    Разберём её:

    1. сперва мы ввели нужно количество повторений (число):  →  = 30;
    2. затем вошли в режим редактирования (insert): ;
    3. после, указали то, что мы хотели бы повторить (в данном случае дефис): ;
    4. и завершили ввод команды, выйдя в командный режим: .

    Думаю понятно, что вместо дефиса (-), мы могли напечатать слово или несколько слов, а затем выйти в командный режим (с помощью ), и Vim размножил бы тот текст, который мы ввели.

    На всякий случай ещё раз по-русски … Мы говорим Vim’у: 30 раз, вставь (i, insert), вотэтавот (текст), и всё (вышли в командный режим, нажав ).

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

    Давайте найдём следующую, относительно текущего положения курсора, букву «z»:

    1. жмём  (find);
    2. затем — .

    Как вы догадались, чтобы найти предыдущую букву «z», нам следует сделать так:  → .

    Мы находим символ и в тоже время перемещаем курсор к нему. Это так, к сведению.

    Ну и как вы поняли ☺, мы можем использовать числа … Найдёмс следующую третью букву «z»:

    1. жмём ;
    2. затем — ;
    3. после — .

    Переход к соответствующей скобке

    Представим, что у нас есть текст со скобками: (), {}, []; и что наш курсор находится на открывающей скобке, например, на открывающей фигурной: {. Мы хотим переместиться к соответствующей закрывающей скобке — вводим процент (%, ) и мы там ☺.

    Когда мы находимся на открывающей скобке и вводим процент, то мы перемещаем курсор на соответствующую закрывающую скобку. Когда мы находимся на закрывающей скобке и нажимаем процент, то мы перемещаем курсор на соответствующую открывающую скобку.

    Переход к началу и концу строки

    Чтобы перейти к началу строки, нужно нажать  (ноль).

    Чтобы перейти к концу строки, нужно нажать  (доллари © ☺).

    Поиск текущего слова (слова под курсором)

    Чтобы найти следующее текущее слово, то есть слово, на котором сейчас находится курсор, нужно нажать .

    Чтобы найти предыдущее текущее слово, нужно нажать .

    Переход к началу / концу текста и переход к указанной строке

    Чтобы перейти к началу текста (в начало файла), нужно нажать 2 раза клавишу .

    Чтобы перейти к концу текста (в конец файла), нужно нажать .

    Чтобы перейти к определённой строке, нужно набрать номер строки, а затем нажать .

    Поиск текста

    Для поиска текста нужно нажать  (слеш), ввести искомый текст и нажать .

    Поиск осуществляется с учётом регистра.

    Чтобы перейти к следующему совпадению, нужно нажать ; к предыдущему — .

    Чтобы искать по регулярному выражению, нужно проэкранировать спецсимволы регулярных выражений обратным слешем (\). То есть, например, такой шаблон: ; в Vim’е будет выглядеть так: .

    Вставка новой строки

    Чтобы вставить новую строку после строки, на которой сейчас находится курсор, нужно нажать .

    Чтобы вставить новую строку перед строкой, на которой сейчас находится курсор, нужно нажать .

    После вставки новой строки Vim переходит в режим редактирования.

    Удаление символа под курсором и слева от него

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

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

    Думаю, вы догадались, как можно удалить несколько символов сразу ☺. Даю подсказку: сначала вводим число, а затем нажимаем или (в зависимости от того, в каком направлении мы хотим удалять символы).

    Замена символа под курсором не переходя в режим редактирования

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

    Удаление

    Для удаления строки под курсором, нужно нажать 2 раза .

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

    Как вы догадались ☺, эту команду можно комбинировать командами передвижения по словам , и . А ещё и с количеством. Например, чтобы удалить несколько последовательностей, нужно:

    1. нажать ;
    2. затем ввести число;
    3. после нажать одну из клавиш: , или .

    Повторение последней команды

    Для повторения последней команды, нужно нажать  (точку).

    Визуальный режим

    В Vim есть ещё один интересный режим: визуальный (visual). В этом режиме мы можем выделять текст, чтобы потом с ним что-нибудь сделать. Давайте попробуем …

    Сперва немного логики действий … Допустим, мы хотим выделить кусок текста и удалить его; так мы работаем:

    1. устанавливаем курсор начало текста, который нужно удалить;
    2. переходим в визуальный режим;
    3. с помощью уже известных нам команд навигации (, , , , , и ) выделяем текст;
    4. удаляем, нажав .

    Чтобы перейти в визуальный режим, как не трудно догадаться по слову «visual», нужно нажать .

    Выход и сохранение

    Чтобы сохранить изменения, нужно в набрать ; то есть сначала нажать , затем ввести (или ) и нажать .

    Чтобы выйти из Vim, нужно ввести (или ).

    Чтобы сохранить и сразу выйти, как вы поняли, можно набрать .

    Vim настойчив и он не даст вам уйти с помощью команды , если вы не сохранили изменения; однако если вы введёте  (то есть и ), то он вас выпустит без записи изменений в файл.

    Отмена и повтор действий

    Чтобы отменить последнее действие, нужно нажать .

    Чтобы повторить отменённое действие, нужно нажать .

    Вызов справки

    Чтобы вызвать справку, нужно ввести команду (или ).

    Чтобы закрыть справку, нужно набрать .

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

    Вместо послесловия

    Дополнительного материала в интернете хватает. На Хабре вроде неплохие статьи были. Так что дерзайте.

    Не забыли про статью от Beget’а, о которой я говорил в начале поста?

    Вы можете использовать макрос для этого. Сделайте следующее.

    • Начните в командном режиме.
    • Перейдите в начало файла, нажав .
    • Нажмите .
    • Нажмите стрелку вниз и нажмите после.
    • Нажмите .
    • Нажмите

    PS: Чтобы перейти в командный режим, просто нажмите Escape пару раз.


    Мы можем использовать или для выполнения заданных команд нормального режима. Источник.


    из почтового архива vim :

    (Чтобы ввести в одну строку в командной строке vim, удалите строку 1,3,5,7, …)


    альтернативно

    в зависимости от того, какую половину вы хотите вытеснить.


    В качестве другого подхода вы также можете использовать python, если ваш vim поддерживает его.

    временно копирует все строки в текущем буфере в . получает каждую вторую строку из буфера и присваивает ее всему текущему буфере . Скопировать в необходимо, так как объекты буфера, похоже, не поддерживают расширенный синтаксис среза.

    Это, вероятно, не «vim way», но может быть проще запомнить, если вы знаете python.


    Чтобы удалить нечетные строки (1,3,5, …) ->

    Чтобы удалить четные строки (2,4,6, …) ->

    Поиск текста (формирует первую строку), за которым следует новый символ строки и еще один текст (формирует вторую строку), за которым следует еще один новый символ линии, и заменяйте его первым знаком (нечетная строка) или вторым совпадением (четная строка) за которым следует возврат каретки.


    Установка редактора vim:

    sudo apt-get install vim

    Vim (сокр.

    от Vi Improved, произносится «вим») — свободный режимный текстовый редактор, созданный на основе более старого vi.

    Одна из главных особенностей редактора — применение двух основных, вручную переключаемых, режимов ввода: командного (после запуска редактор находится в нём) и текстового (режим непосредственного редактирования текста, аналогичный большинству «обычных» редакторов). Vim не интуитивен, так что эффективная работа с редактором требует предварительного обучения.

    Основные комбинации командного режима vim

    i — перейти в режим редактирования yy — копирование текущей строки в буфер v — выделение текста, используется для копирования участков текста y — копировать выделенный текст d — удалить выделенный текст dd — удалить одну строку — на которой курсор d 4 d — удалить 4 строки р — вставка из буфера под курсором P — вставка из буфера перед курсором u — назад — отменить последнее действие (аля ctrl+z) :w — сохранить изменения 😡 — сохранить все изменения и выйти :q! — выйти без сохранения изменений

    Командами vim, которые чуть выше, я пользовался пол года, начинаю я того момента, как познакомился с вим. Мне было их достаточно.

    Поиск и замена в vim

    :%s/{что искать}/{на что менять}/[flags]

    : — Вход в командный режим;
    s — Сокращенная форма команды :substitute;
    % — Выполнить эту команду на всех строках (% — синоним "от первой до последней строки").

    Например, заменить в файле все слова 'test' на 'adminer':

    :%s/test/adminer/

    Ещё полезные команды:

    hjkl — перемещение курсора :123 — перейти к строке 123 /text — поиск текста text n/N — переместит курсор к следующему/предыдущему вхождению строки

    Поменять строки местами в vim

    Почему ddp? Это комбинация сразу двух команд:

    • dd — вырезать строку
    • p — вставить

     

     

     

     

    Использование текстового редактора Vim

    Vim — очень мощный редактор с огромным набором функций. Эта статья охватывает основные команды, которых достаточно для того, чтобы начать работу в vim-е.

    Очень важно не просто читать статью, а параллельно пробовать все действия на каком-нибудь тестовом текстовом файле. Для этого создайте текстовый файл и откройте его с помощью редактора vim:

    Два режима

    Есть два режима работы редактора: режим редактирования и нормальный режим. Переход в режим редактирования осуществляется различными командами, речь о которых пойдёт дальше. Выход из режима редактирования — кнопка <Esc>

    Команды перемещения курсора

    Команды перемещения работают в нормальном режиме. Нажмите <Esc>, чтобы убедиться что находитесь в нём.

    Курсор можно перемещать стрелками на клавиатуре или, что гораздо быстрее, клавишами h, j, k, l:
    h — влево
    j — вниз
    k — вверх
    l — вправо

    другие команды перемещения:
    0 — Перейти к началу строки
    $ — Перейти к концу строки
    w — перейти к началу следующего слова
    e — перейти к концу слова
    gg — перейти в начало документа
    G — перейти в конец документа
    номер G — перейти на строку с номером <номер>
    Можно использовать связку <номер><команда перемещения>
    3w — перейти к началу четвёртого слова, считая с текущей позиции
    4e — перейти к концу четвёртого слова, считая с текущей позиции.

    Команды удаления

    x — удалить букву под курсором
    число x — удалить <число> букв, начиная с той что под курсором
    dd — удалить строку
    число dd или d число d — удалить <число> строк, начиная с той где находится курсор
    Можно комбинировать команды удаления и перемещения:
    dw — удалить 1 слово начиная с текущей позиции
    d5w — удалить 5 слов
    d$ — удалить строку с текущего положения курсора до конца строки
    d0 — удалить строку с текущего положения курсора до начала строки.

    Сохранение изменений

    Для того чтобы сохранить отредактированный файл нужно:

    • перейти в нормальный режим, нажав <Esc>
    • ввести команду :write <имя_файла> <ENTER>,
    • или её сокращённый вариант :w <имя_файла> <ENTER>

    Если имя_файла отсутствует, то сохраняется текущий файл
    Чтобы выйти из редактора введите :quit <ENTER> или просто :q <ENTER>
    Выйти не сохранив изменения — :q! <ENTER>
    :wq — сохранить изменения в текущем файле и выйти.

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

    Для перехода в режим вставки нажмите <i>.
    A — переход к концу строки и начало режима вставки
    a — переход к следующему символу и начало режима вставки
    o — начать вставку под текущей строкой
    O — начать вставку над текущей строкой
    <Esc> — переход к нормальному режиму

    Отмена последних изменений

    u — отмена последнего изменения
    U — отмена изменений во всей строке
    <CTRL-R> — отмена отмены.

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

    yy — скопировать всю строку в буфер обмена
    p — вставить содержимое буфера обмена после курсора
    y5y или 5yy — скопировать 5 строк
    yw — скопировать слово
    В буфер обмена попадают и только что удалённый текст.

    Например если удалить строку dd, то сразу же после этого её можно вставить с помощью p

    Замена

    r — заменить символ под курсором
    R — заменять символы, начиная с текущего положения
    c <число> <команда перемещения> — ещё одна команда замены.
    cw — поменять слово.
    c$ — поменять строку, начиная с положения курсора и до конца.
    cc — поменять всю строку.

    Поиск

    / — поиск в прямом направлении
    ? — поиск в обратном направлении
    n — перейти к следующему найденному элементу
    N — перейти к предыдущему найденному элементу.

    Поиск соответствующей скобки ], ), }

    Наведите курсор в нормальном режиме на открывающуюся/закрывающуюся скобку и нажмите %. Курсор перейдёт к соответствующей закрывающейся/открывающейся скобке, если таковая есть.

    Определение положения в файле

    Чтобы определить текущее положение нажмите <CTRL-G> в нормальном режиме. В нижней части терминала появится строка, содержащая информацию о количестве строк, текущем положении, имя файла.

    Автоматическая замена

    :s/old/new/g — заменить все сочетания ‘old’ в текущей строке на ‘new’
    :10,20s/old/new/g — тоже самое, но для строк с 10й по 20ю

    Вызов справки

    :help <команда> <ENTER> — вызов справки по команде редактора.

    Исполнение shell-команд

    :!<команда>
    Например:
    :!ls — исполнить команду ls в текущей директории

    Чтение файла

    :r <filename> — вставить содержимое filename после курсора

    Команда set

    Некоторые настройки редактора можно менять не выходя из самого редактора с помощью команды set.
    Например:
    :set ic — ignore case — игнорировать регистр букв (например при поиске)
    :set hls — highlighting search — подсвечивать найденное при поиске совпадение
    :set nohls — не подсвечивать найденное при поиске совпадение.

    Файл настроек

    Скрипт, который исполняется при запуске редактора vim находится в домашней директории пользователя и называется .vimrc.
    В нём можно задать некоторые дополнительные настройки, например:

    Примеры этого файла поставляются вместе с дистрибутивом редактора.

    Дополнительная информация

    Подробную информацию можно получить из встроенной справки с помощью команды :help или на страницах мануала man vi.

    Добавить комментарий

    Закрыть меню