5 бесплатных ресурсов по изучению Vim


Оглавление (нажмите, чтобы открыть):

Как отсюда выйти: шпаргалка по Vim

Вы собираетесь создать файл crontab и внезапно оказываетесь в этом странном редакторе по умолчанию. В том, в котором всё никак не разберётесь.

ESC? Ничего не произошло. CTRL + C? Нет. ESC ESC ESC? Неа. Вы в тупике.

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

С вами бывало такое? Конечно, бывало. Что ж, потратив несколько минут на эту статью, вы познакомитесь с основами редактора Vim (и научитесь быстро выходить из него).

Vim по умолчанию установлен во многих операционных системах (включая большинство дистрибутивов Linux и macOS), поэтому хотя бы поверхностные знания о нём лишними не будут. Откройте терминал и введите vim .

«Росбанк», Москва, до 60 000 ₽ (до налогов)

В умелых руках Vim может стать мощнее многих IDE. И, разумеется, он не ест сотни мегабайт памяти лишь для отображения пустого файла (да, Eclipse, это о тебе).

Основы

Некоторые из нижеописанных команд начинаются с двоеточия: нажав его, появится подсказка, в которой будет указана полная команда. Команды без двоеточий — это скорее горячие клавиши, которые можно использовать в режиме по умолчанию (в нём запускается Vim). Команды, написанные ЗАГЛАВНЫМИ БУКВАМИ — это отдельные клавиши: например, ESC — это клавиша Esc на вашей клавиатуре.

Все команды чувствительны к регистру и должны выполняться вне режима insert.

Выход из Vim

Выход без сохранения изменений:

Как запомнить: quit dammit! (закройся, чёрт возьми!)

Выход с сохранением изменений:

Как запомнить: write to disk and quit

Навигация

Для перемещения по открытому файлу используйте стрелки.

Перемещение на строку 285:

Поиск слова «import»:

Изменение текста

Вставка текста там, где стоит курсор:

Вставка текста в конце текущей строки:

Выход из режима редактирования (возврат в стандартный режим):

Выделение текста

Переход в визуальный режим:

Для выделения текста используйте стрелки.

Выход из визуального режима:

Копирование, удаление, вставка

Копирование выделенного текста в буфер:

Удаление выделенного текста:

Копирование текущей строки в буфер:

Как запомнить: yank yank

Копирование трёх строк, включая текущую, в буфер:

Удаление текущей строки и помещение её в буфер:

Как запомнить: delete delete

Удаление 5 строк, включая текущую:

Вставка из буфера перед текущей строкой:

Вставка из буфера после текущей строки:

Отмена и восстановление последнего изменения

Отмена последнего изменения:

Восстановление последнего отменённого изменения:

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

Многоуровневое дерево отката изменений Vim очень мощное, подробнее о нём можно почитать в документации.

Работа с файлом

Открытие файла index.html вместо текущего:

Сохранение текущего файла:

Как запомнить: write to disk

Сохранение файла с изменённым именем, например, changes.txt:

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

Поиск и замена всех вхождений строки в файле:

Поиск и замена с запросом подтверждения замены:

Подсветка синтаксиса и отступы

Включение подсветки синтаксиса:

Включение автоматических отступов:

Увеличение отступов нескольких строк при выделении их в визуальном режиме:

Вкладки

Открытие server.py в новой вкладке:

Переход на вкладку справа:

Переход на предыдущую вкладку слева:

Как запомнить: tab previous

Для закрытия вкладки переключитесь на неё и используйте команду :q или :wq .

Разделённый экран

Открытие templates/base.html в режиме вертикального разделения экрана:

Как запомнить: vertical split

Открытие shared.js в режиме горизонтального разделения экрана:

Как запомнить: the ’default’ horizontal split

Перемещение между «частями» экрана:

Для закрытия экрана переключитесь на него и используйте команду :q или :wq .

Настройка Vim: файл .vimrc

Многие команды, используемые для изменения вида и поведения Vim, можно сделать включёнными по умолчанию, поместив их в .vimrc — файл конфигурации Vim, который расположен в домашнем каталоге.

Например, добавление этих строк в

/.vimrc сделает подсветку синтаксиса и автоматическую корректировку отступов включёнными по умолчанию:

Идеи для кастомизации Vim можно почерпнуть в этом GitHub-репозитории.

Полезные ресурсы

Вот ещё несколько полезных материалов для изучения Vim:

А какая команда Vim — ваша любимая? Может, вы знаете удобные приёмчики? Делитесь ими в комментариях!

Vim для новичков

Vim — мощный, бесплатный текстовый редактор, который предустановлен в вашем Маке. В этом туториале, я покажу основы этого текстового редактора.

Открываем файлы

Вы можете открыть файлы в Vim, как и в любом другом консольном редакторе.

Vim в терминале

Если файл, который вы хотите отредактировать называется life.md, введите в терминале

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

Основы режимов Vim

В Vim есть четыре режима: Командный, Текстовый (иногда его называют режим вставки), Визуальный и режим командной строки. Текущий режим показывает своё название в нижнем левом углу статусной строки.

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

Vim переключается в текстовый режим когда вы нажимаете a, A, i, I, o или O. Как только вы окажитесь в текстовом режиме, редактор будет находится в этом режиме, до тех пор пока вы не нажмёте кнопку Esc. Любая другая нажатая вами кнопка будет непосредственно вводиться в файл, в то место где в данный момент находится курсор.

Визуальный режим активируется когда вы используете v, V и Ctrl-v, команды в командном режиме. В Визуальном режиме вы можете выделить текст. В то время когда вы используете команды навигации область от того места где вы переключились в визуальный режим будет выделяться, до момента пока вы не покинете визуальный режим.

В любое время когда вы используете :command в командном режиме, вы окажитесь в режиме командной строки. В режиме командной строки вы можете выполнять мощные функции по редактированию, различные действия с файлами, а также вызывать функции шелла. Режим командной строки единственный режим, который ничего не отображает в статусной строке, но введённые команды, вместе с курсором, будут показываться под статусной строкой.

Сохраняем файлы и выходим из Vim

В командном режиме, вы можете нажать ZZ для того, чтобы сохранить все изменения и выйти. Также вы можете сохранить файл командой :w!, : переключит вас в режим командной строки, w сохранит файл и ! сохранит файл не задавая вопросов. Ещё вы можете ввести :wq или :wq!. q — выходит из редактора. Помимо этого можно воспользоваться :q!, для того чтобы выйти из редактора без сохранения.

Основные команды навигации

В командном режиме вы передвигаетесь по файлу и выполняете различные команды по редактированию. Кнопка h передвинет курсор влево. Кнопка l в свою очередь передвинет курсор вправо. Кнопка j передвинет курсор вниз на одну строку, когда кнопка k передвинет курсор на одну строку вверх. Чтобы переместится к следующему слову используйте кнопку w. Для перемещения к предыдущему слову используйте команду b.

Если вы хотите переместить курсор больше чем на одну позицию, слово или строку, одной командой, укажите число и после этого нужное вам направление. Курсор переместится в указанном направлении определённое количество раз, в зависимости от числа. К примеру, если набрать 10j, курсор переместится вниз на десять строк.

В командном режиме можно переключить нумерацию строк с абсолютной на относительную:


  • Абсолютная нумерация, стандартная: каждая строка обладает уникальным номером в последовательном порядке.
  • Относительная нумерация показывает номер строк относительно текущей строки.

Абсолютная нумерация

Для того чтобы включить абсолютную нумерацию строк введите команду :set number. Чтобы не показывать нумерацию строк используйте :set nonumber.

Включить относительную нумерацию строк можно :set relativenumber. Чтобы вернуться к абсолютной нумерации достаточно набрать :set norelativenumber.

Относительная и Абсолютная нумерация

Установив :set number и :set relativenumber, ваш Vim будет показывать относительные номера строк, для всех строк, кроме текущей. Текущая строка будет показывать свой абсолютный номер.

Переключившись на относительную нумерацию, вы можете быстро увидеть количество строк для перемещения используя j или k команды. К примеру, чтобы переместится на строку с List, вы должны будите нажать 2j.

Чтобы попасть на начало строки используйте (это ноль) команду. На конец строки можно переместится после нажатия $ команды. Команда gg перемещает на начало файла, а команда G в конец файла.

Файл .vimrc

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

Файл .vimrc, файл для конфигурации Vim. Любая команда, которую вы можете использовать в режиме командной строки, может быть добавлена в этот файл, она будет включаться при каждом запуске Vim. Оказавшись в этом файле, используйте команду i, чтобы начать вводить текст. Теперь добавьте эти строки и сохраните файл:

Таким образом каждый раз открывая Vim в нем будет установлена смесь абсолютной и относительной нумерации строк, а также подсветка поиска. Подсветка поиска понадобится нам в следующем разделе. Файл .vimrc обладает множеством возможностей и настроек редактора, но их описание придётся отложить до следующего туториала.

Поиск и Замена

Вы можете искать интересующий вас текст используя команду / в командном режиме. Напечатав /This, вы увидите что все слова This подсвечиваются, в примере ниже.

Нажав n, вы переместитесь к следующему вхождению поискового паттерна. Используя N, вы попадёте на предыдущее вхождение. Паттерн, который вы указываете после / может быть любым регулярным выражением. Почитайте статью Advanced search and Replace with RegEx для лучшего понимания принципов работы с регулярными выражениями.

Для того, чтобы заменить текст вам придётся воспользоваться режимом командной строки. В режиме командной строки, команда s используется для замены текущей строки, %s для замены во всем файле и наконец , , для замены от номера строки, до номера строки.

Следующий формат / / /gi в котором и являются стандартными регулярными выражениями. В примере выше, я заменяю каждое вхождение слова This на That. Флаг i после g, делает поиск нечувствительным к регистру, в свою очередь I сделает поиск чувствительным к регистру. Флаг g делает замену глобальной. без этого флага замена выполнится лишь один раз, для строки.

Команды редактирования

Начать вводить текст слева от курсора, можно командой i. Команда a установит курсор для ввода текста справа, от текущего положения. Команда I служит для добавления текста в начало строки, а A для добавления текста в конец строки.

Команда o добавляет новую строку, после того места где находился курсор и переключается в текстовый режим в начале этой строки. O совершает аналогичные действия, но добавляет строку выше, положения курсора.

Для удаления символов, используйте команду d, после чего укажите направление в котором планируете удалять, или пробел, чтобы удалить символ находящийся под курсором. Если вы добавите к команде префикс с номером, Vim удалит соответствующее номеру количество символов в указанном направлении. Команда dd удалит текущую строку. D удаляет всё, начиная от положения курсора, до конца строки.

Команда x удалит символ под курсором. X удалит символ перед курсором. Обе команды x и X также возможны с использованием префикса с номером, для повторения удаления, определённое количество раз.

Копировать, Вырезать и Вставить

Когда вы нажимаете v в командном режиме, включается визуальный режим. Все передвижения курсора выделяют текст, с той позиции где был осуществлён переход в визуальный режим. Выделив нужный вам текст, нажмите команду y, после чего данный текст будет скопирован. Переместившись в новое место и нажав p скопированный текст добавится после курсора, P делает вставку перед курсором.

Выделив текст, команда x удалит этот текст. Команда d вырежет выделенный текст, в дальнейшем его можно вставить командой p.

Выделять блоки текста можно после нажатия команды -v. Команда V включает визуальный режим, в котором выделяются строки целиком, а не отдельные символы.

Практика и ещё раз практика

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

Simple Tutorials Vim Reference шпаргалка, которая поможет вам запомнить распространённые команды Vim. Но самое важное продолжайте работать с этим одновременно простым и мощным редактором и вы обязательно достигните мастерства в нем.

5 бесплатных ресурсов по изучению Vim

В Википедии имеется статья по теме «Vim»

Продвинутый текстовый редактор — кошмар для случайного пользователя. Если его удаётся в конце концов закрыть, то вздыхаешь с облегчением и твёрдой уверенностью, что больше не будешь запускать эту программу ни разу в жизни.

Пожалуй, Vim нельзя просто запустить и начать работать — требуется определённая подготовка. Зато стоит раз испытать его в деле и поражаешься тому, как можно было без него обходиться.

Для быстрого ознакомления с функциональностью Vim запустите команду vimtutor.

Содержание

Начнём с примера [ править ]

Типичная сессия работы с Vim выглядит так:

В открывшемся редакторе:

В данном случае задачей было изменить значение определённого параметра конфигурации apache. В обычном редакторе подобный результат достигается следующими действиями:

или Ctrl + O и выбрать файл из диалога открытия файла.

Объяснение команд обычного редактора:

  • Открыть файл «httpd.conf» одним из указанных способов.
  • Ctrl + F — открыть диалог поиска.
  • Ввести «SSLVerif».
  • ↵ Enter — фокус в диалоге поиска обычно всегда стоит на поиске следующего вхождения искомого слова.
  • Esc — закроет окно поиска, а Ctrl + → снимет фокус с найденного слова и перейдёт к следующему (в некоторых редакторах курсор проскакивает слово и переходит через слово — тогда нажимаем ← не отпуская Ctrl , а в некоторых одиночное нажатие приводит только лишь к снятию фокуса и нужно повторно нажать → ).
  • Del удалит «0» и остаётся напечатать «1».
  • Ctrl + S — сохранить изменения.
  • Alt + F4 — закрыть файл и выйти.

Объяснение команд VIM:

  • / — Перейти в режим поиска
  • ↵ Enter — Искать.
  • n — Перейти к следующему вхождению искомой строки
  • w — Переместить курсор к следующему слову
  • r — Заменить знак под курсором
  • ZZ — Сохранить изменения и выйти
  • ZQ — Выйти без сохранения изменений

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

Введение [ править ]

Здесь я делюсь опытом работы в Vim’е. Предполагается, читатель имеет установленные vi и vim, а также знаком с основами работы с UNIX-подобной системой.

Помнится, когда товарищ установил FreeBSD на мою домашнюю ЭВМ, некоторые файлы открывались непонятным мне образом. Я быстро старался избавиться от этого несчастья. Через некоторое время я понял, что происходит: в системе по умолчанию, в переменной окружения EDITOR, установлен редактор vi. Я сразу поменял его на ‘ee’ (easy editor). Это действительно простой редактор, затруднений с ним возникнуть просто не может, однако и особой свободы в нем не испытать. Вскоре его стало не хватать…

Описание работы с редактором я привожу в хронологическом порядке — от простого к сложному. Так как Vim на 99 % совместим с vi, сначала я дам краткое описание работы с vi.

Легенда сокращений и специальных символов:

Vi [ править ]

Главное отличие Vi от других редакторов в том, что у него несколько режимов работы. При этом привычный нам режим ввода текста — не основной. Основным режимом в vi считается режим, в котором клавиатура используется для управления редактором. В этом режиме возможно быстро перемещаться по тексту, переключаться в другие режимы и выполнять другие операции.

Насколько Vi быстрее других редакторов? — Давайте сравним. Например, вот действия, которые необходимо выполнить [«продвинутому»] пользователю, чтобы поменять местами две буквы в обычном редакторе и в vi:

Переключение режимов [ править ]

  • «Обычный режим» — перемещение по файлу, стирание текста и другие редактирующие функции. Это — как уже было отмечено, основной режим, только из него можно сразу перейти в другие режимы. Для возврата в основной режим из любого другого режима:
  • «Режим ввода» — ввод текста. Как только завершается ввод текста, принято сразу возвращаться в обычный режим. Заметьте, что стирание и ввод текста происходит в двух разных режимах. Перейти в него из обычного режима можно разными способами, примеры:
  • «Командный режим» — Команды (операции с файлом, поиск и замена, настройка редактора…). Переход в него из обычного режима:
  • «Режим поиска» — ввод поискового запроса. Переход в него из обычного режима
  • «Визуальный режим» — режим выделения текста. Переход в него из обычного режима

Открыть/создать файл [ править ]

Опишем операции, которые можно производить с файлом.

  1. vi mamapapa.txt ++11 — допустим файл был отрыт на строке 1, выполнив эту команду он откроется на строке 12

Файл открывается в обычном режиме с помощью команды vi. Строка статуса будет отображать название файла. Теперь мы можем просмотреть файл, переместиться по его содержимому, стереть текст, но ввести текст в этом режиме нельзя.

Создание файла происходит при помощи той же команды. Собственно создание файла происходит в момент сохранения.

Для открытия или создания нового файла в обычном режиме набираем

Перед этим нужно сохранить предыдущий файл

Перемещение по файлу [ править ]

Самые часто используемые в vi клавиши — клавиши перемещения. Это знаменитые h j k l, соответствующие стрелкам влево, вниз, вверх и вправо. Стрелочки тоже работают (при правильном указании терминала). Можно использовать также быстрые клавиши:

  • — на страницу (экран) вниз
  • — на страницу (экран) верх
  • — на пол страницы (экрана) вниз
  • — на пол страницы (экрана) верх
  • — на строку вверх, без изменения положения курсора
  • — на строку вниз, без изменения положения курсора
  • 0 («ноль») — в начало текущей строки;
  • ^ — в начало текущей строки (к первому непробельному символу);
  • $ — в конец текущей строки
  • w — на слово вправо
  • b — на слово влево
  • W — до пробела вправо
  • B — до пробела влево
  • > — абзац вниз
  • < — абзац вверх
  • gg — перейти в начало файла
  • G — перейти в конец файла
  • G — перейти на конкретную строку
  • /

— то же самое, но искать назад

  • n — повторить поиск
  • N — повторить поиск назад
  • [[ — в начало функции
  • » — к месту выполнения команды [[
  • Перемещение по экрану [ править ]

    Изменение положения экрана без изменения положения курсора.

    • z- сдвинуть страницу так чтобы строка с курсором оказалась внизу.
    • z[Enter] сдвинуть страницу так чтобы строка с курсором оказалась вверху
    • z. или zz страницу так чтобы строка с курсором оказалась посредине

    Перемещение в пределах экрана

    • H перемещение на верхнюю строку экрана ( 5H на пять строк ниже верхней строки)
    • M перемещение на среднюю строку экрана
    • L перемещение на последнюю строку экрана ( 5L на пять строк выше нижней строки)


    Редактирование файла [ править ]

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

    — Винни, тебе что намазать на хлеб, мёду или сгущённого молока?

    — И того, и другого, и можно без хлеба!
    — Ну, если вы больше ничего не хотите…

    — А что, что-то есть ещё?

    Диалог симпатичный, но несколько несвязный. Давайте изменим его — для этого необходимо перейти в режим ввода. Самый простой способ — из обычного режима нажатие клавиши «i». После чего можно смело приступать к вводу текста. вернёт нас к обычному режиму.

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

    Другие важные команды:

    Ввод текста [ править ]

    Все эти команды переводят редактор в режим ввода. Эти команды экономят время на движение курсора или на перевод его на новую строку. В командах ввода текста могут применяться числовые аргументы (за исключением O и o ). Например, команда 20iПривет вставляет 20 слов «Привет».

    • i — перейти в режим ввода с текущей позиции
    • a — перейти в режим ввода после курсора
    • I — переместиться в начало строки и перейти в режим ввода
    • А — переместиться в конец строки и перейти в режим ввода
    • o — перейти в режим ввода с новой строки под курсором
    • O — перейти в режим ввода с новой строки над курсором
    • s — заменяет указанное количество символов (удаляет указанное число символов и переходит в режим ввода). В отличии от команды с которая может удалить кусок текста размером не меньше слова ( cw ), командой s можно удалить любое число символов. Например 4s удалит четыре символа начиная с того который находится под курсором. Эта команда применяется для замены одного или нескольких символов другими символами.
    • S — удаляет всю текущую строку и переходит в режим ввода. Число перед командой показывает сколько нужно удалить строк начиная с текущей. Например 4S удалит четыре строки включая текущую.
    • R — перейти в режим ввода с заменой текста (аналог insert). Символы под курсором заменяются на вводимые. Команда применяется когда неизвестно сколько придётся изменить символов на другие (иначе можно было бы использовать команду s с указанием числа заменяемых символов, например, 7s ). При удалении вводимых символов возвращаются те которые были до ввода команды. Такой режим сохраняется до конца строки. При вводе новой строки (по нажатию Enter), происходит не переход на другую строку с тем же режимом замены текста, а создание новой строки.
    • r — заменить один символ. Заменяет символ находящийся под курсором на символ который следует за командой. При этом не происходит выхода из командного режима (не надо нажимать ESC после изменения текста). Например, команда ry — символ под курсором меняется на «y». Числовой показатель указывает сколько символов необходимо заменить на данный. Например, 3ry вставляет три символа «y».

    Удаление [ править ]

    • x — удалить символ под курсором ( x удаляет указанное число символов начиная с того который находится под курсором)
    • X — удалить символ влево (удалить символ перед курсором)
    • d — используется совместно с командами перемещения. Удаляет символы с текущего положения курсора до положения после ввода команды перемещения. Пример:
    • dw — удаляет символы с текущего до конца слова. включая пробел после слова, чтобы удалить символы до конца слова, но оставить пробел используется команда de ,
    • dE — удаляет символы с текущего до конца слова, включая символы пунктуации, но оставляет пробел после слова,
    • diw — удаляет слово под курсором,
    • dd — удалить текущую строку (вырезать)
    • d d или dd — стирание числа строк начиная с текущей,
    • db — удаляет символы с текущего до начала слова (удаление в обратном направлении)
    • d0 — удаление символов с начала строки до текущего положения курсора
    • d$ или D — удаление символов с текущего положения курсора до конца строки.
    • с — команда аналогичная d , но после удаление переходит в режим ввода. (замена текста) Очень удобная альтернатива команде R
    • сс — команда удаляет текущую строку и переходит в режим ввода.
    • C — удаляет текст с текущего положения курсора до конца строки, аналогична команде с$ (где $ — символ конца строки)
    • yy (также Y ) — копирование текущей строки в неименованный буфер
    • y y — копирование числа строк начиная с текущей в неименованный буфер
    • p — вставка содержимого неименнованного буфера под курсором. Поскольку в vim девять ячеек буфера удаления. Можно вставить не только последнее удаление но и удаления сделанные ранее. Например » 4p вставит под курсор содержимое четвертого удаления начиная с последнего. Также чтобы поменять местами два символа можно использовать комбинацию команд «удалить» — x (удаление в буфер) и «вставить» — p (вставить из буфера). Таким образом, поставив курсор на первую букву из двух которые необходимо поменять местами и нажав комбинацию клавиш xp мы совершим необходимые действия.
    • P — вставка содержимого неименованного буфера перед курсором
    • J — слияние текущей строки со следующей. Числовой аргумент перед командой показывает сколько следующих линий необходимо объединить с текущей. Например 2J объединить две следующие строки с текущей, на которой расположен курсор.

    Отмена изменений [ править ]

    • u — отмена последней команды
    • U — отмена всех последних изменений в строке, если строка удалена, то применить эту команду к данной строке будет невозможно

    Команды u и U могут отменять друг друга.

    • или :redo вперёд по изменениям
    • . — повтор последней команды, включая ввод текста.

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

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

    Конечно, запомнить все команды сразу трудно, даже не нужно (к тому же здесь перечислены не все). Уверяю вас, через некоторое время эти команды будут пользоваться спросом. Некоторые особенности использования редактора в режиме редактирования:

    • Любой удаляемый текст сохраняется временно в буфере. Из этого буфера его можно вставить в текст.(см. команду p ). Буфер изменяется также после применения команды y — копировать.
    • Любая команда редактирования хранится в буфере, пока не будет вызвана другая команда.

    Наконец мы дошли к самому главному — командному режиму. Помним как в него перейти? «:». Шифт-ж, если по-русски.

    Запись/выход [ править ]

    Если вы в режиме ввода, то необходимо предварительно нажать , чтобы перейти в обычный режим.

    Эта команда может помочь, если файл открыт в режиме «read-only» (с опцией -R), если файл заблокирован другим пользователем, либо отсутствуют такие привилегии, либо ещё какая беда. При попытке записи без «!» будет выдано соответствующее предупреждение.

    Создать новый файл «new_file» и записать в него текущее содержимое. Если файл существует, будет показано предупреждение. Дальше вы продолжаете работать со старым файлом — mamapapa.txt

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

    Чтобы из командной оболочки вернуться в редактор нажмите CTRL-D или введите exit.

    Если файл был изменён, у вас ничего не получится. В таких случаях необходимо добавлять после команды «!»:

    Чтобы отменить все сделанные в текущей сессии изменения и вернуться к первоначальному варианту файла применяют команду

    Коэффициент повторения [ править ]

    Почти все команды vi принимают так называемый коэффициент повторения. Попросту говоря, если перед командой в обычном режиме вы указываете число, то команда повторяется соответствующее количество раз. Например, команда «j» перемещает курсор на одну строку вниз — «3j» переместит курсор на 3 строки вниз. Результатом команды «iпривет », как вы, наверное, догадались, будет вставка слова «привет» — «2iпривет » вставит «приветпривет».

    Дополнительные возможности [ править ]

    Есть несколько вещей, без которых редактирование похоже на пытку:

    Конвертация кодировки файла:

    Смена кодировки (возможна до внесения изменений в редактируемый файл. т.е. сразу после открытия)

    Vim [ править ]

    Главные отличия от vi [ править ]

    • Неограниченное число undo/redo. (в 7-ой версии появились деревья)
    • Многооконность.
    • Поддержка множества буферов. (в 7-ой версии появились закладки)
    • Подсветка синтаксиса.
    • Редактирование командной строкой.
    • Достраивание имён файлов.
    • Визуальное редактирование.
    • Кроссплатформенность.
    • Графический интерфейс (GUI).
    • Проверка орфографии

    Команды [ править ]

    Переход к началу файла в Vim отличается от Vi:

    Переход к строке под номером :

    Слово под курсором [ править ]

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

    Перейти к предыдущему вхождению слова под курсором

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

    Перейти к редактированию файла (под курсором должен быть путь)


    Визуальный режим [ править ]

    Это существенное расширение возможностей Vi, без которого не обходится ни один «нормальный» текстовой редактор. Режим предназначен для выделения блока текста и дальнейшей работы с ним и состоит из 3-х последовательных шагов:

    1. Пометка начала блока с помощью «v», «V» или CTRL-V. Блок помечается с того символа на котором находится курсор(по умолчанию).
    2. Перемещение курсора в конец необходимого блока. Последний символ также будет включён в выделенный блок.
    3. Вызов необходимой команды.

    Команда «v» предназначена для выделения текста посимвольно. Символы до и после курсора в строке не будут входить в выделение. Необходима в первую очередь для копирования участков текста в строке.
    «V» — для выделения текста построчно.
    CTRL-V — для выделения прямоугольного участка текста. Удобна в случае редактирования структурированного текста.

    С выделенным участком текста можно производить стандартные действия по редактированию(копирование — «y», удаление — «d»). Напомню, что в Vim при удалении участка текста, он автоматически помещается в специальный регистр, что равноценно «вырезанию» участка текста, который потом можно будет вставить с помощью команды «p»(вставка текста после курсора) или «P»(вставка текста перед курсором).

    vimrc — это файл конфигурации Vim. При запуске Vim сначала читает этот файл и применяет записанные в нем настройки. Рекомендуемое расположение этого файла для различных платформ:

    Файл конфигурации используется для настройки различных аспектов поведения и внешнего вида Vim.

    Комментарии в этом файле начинаются с символа « (двойная кавычка) и продолжаются до конца строки.

    Для примера приводится выдержка из файла _vimrc автора: [ править ]

    Можно добавить привычное поведение и привычные сочетания клавиш. [ править ]

    • Например, можно будет прокручивать (скроллить) текст колёсиком мыши и вставлять выделенное в X`ах мышкой в Vim нажатием средней кнопки мыши (нажать на колёсико мыши):
    • По сохранение сделанных изменений:
    • По вставка содержимого заданного файла в редактируемый текст. Требуется ввести имя файла. Работает авто-дополнение имени файла по в текущем каталоге.

    Также возможен интересный приём работы:

    Эта команда вставит в текущую позицию редактируемого текста весь вывод указанной после » ! » команды (в нашем случае: ls -la ).

    • По открывается новая вкладка (tab) и выводится список каталогов и файлов текущего каталога. Клавишами управления курсором можно выбрать каталог или файл. Нажатие на каталог отобразит его содержимое в том же режиме (можно путешествовать по каталогам), а нажатие на файле — откроет его в этой же вкладке. Работает быстрый поиск-перемещение по » / «.
    • По позволяет переключать вкладки справа-налево, по-порядку, отображая открытые в них файлы.
    • По позволяет переключать вкладки слева-направо, по-порядку, отображая открытые в них файлы.
    • Пользовательское меню. По позволяет приостановить работу Vim и вызвать соответствующие программы:

    Обратите внимание на, например, конструкцию :!python % — символ % будет заменён на имя текущего редактируемого файла. В итоге, Vim приостановит работу и вызовет python filename.ext (если вы редактировали filename.ext ) в текущем терминале (в том же, где запущен Vim), а затем, после завершения работы python filename.ext , вернётся к редактированию файла. Не забудьте сохранить изменения перед вызовом. Впрочем, Vim должен будет вам напомнить о том, что изменения нужно сохранить, если вы этого не сделали. Заметьте: что Exec. — это не специальная команда, в всего лишь идентификатор меню, объединяющая группу команд и их идентификаторы/названия пунктов меню/.

    • Пользовательское меню. По позволяет вызвать меню различных вариантов завершения работы с Vim. ( Глоток воздуха для новичка 🙂
    • Позволяет по , более привычному некоторым пользователям, вызывать авто-дополнение для текущего активного синтаксиса:

    Дополнительно [ править ]

    Для получения более подробной информации по файлу _vimrc можно набрать в командной строке Vim команду

    Vim и русская раскладка клавиатуры [ править ]

    В обычном режиме Vim по умолчанию ожидает, что консоль находится в режиме ввода латинских символов. Если вы, к примеру, редактируете с помощью Vim текст на русском языке, или в смешанных кодировках (к примеру, HTML-страницу на русском), то постоянная необходимость переключать системную клавиатурную раскладку очень быстро вам надоест. Существует несколько способов решить эту проблему.

    Способ 1 [ править ]

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

    Для этого в файл конфигурации Vim, который называется .vimrc (или _vimrc в Microsoft Windows) нужно добавить следующие строки:

    После этого системную раскладку клавиатуры можно будет оставить в режиме ввода латинских символов, а переключение между языками осуществлять уже внутри самого редактора с помощью команды Ctrl+^ ( Ctrl+6 в версии для Windows)

    Чтобы настроить переключение языков на другую кнопку (например на F12 ), можно использовать такие команды:

    для режима ввода символов: imap

    При этом нужно вводить нажатием клавиш и k . Это означает, что сначала нажимается клавиша и удерживается нажатой, затем нажимается клавиша k и после этого обе клавиши одновременно отпускаются. После нажатия появится подсвеченный значок вопроса, который потом заменится на код клавиши\комбинации, которую Вы введёте, в данном случае , что будет выглядеть как ^^ .

    для режима ввода командной строки: cmap

    В итоге, визуально в .vimrc это должно выглядеть так:

    Кроме этого, в версии для Windows Vim по умолчанию не настроен на использование кодировок клавиатуры, содержащих символы кириллицы, например CP1251 и KOI8-R (в версии же для Linux настройка по умолчанию корректна). Как следствие этого, Vim при редактировании русского текста будет неправильно обрабатывать команды перемещения по тексту, основанные на поиске слова, такие как w (одно слово вперёд), b (одно слово назад), * (найти в тексте слово под курсором) и т. п. Чтобы настроить Vim для корректной работы с этими командами независимо от языка, достаточно добавить в файл конфигурации _vimrc следующую строку:

    Однако вышеуказанная строка не позволяет изменять регистр русского текста в версии Vim для Windows. Для решения обеих этих проблем вместо вышеуказанной строки в файл конфигурации может быть добавлена следующая строка:

    Способ 2 [ править ]

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

    Для этого в .vimrc добавьте следующую строчку:

    Для стандартной раскладки (Windows, Linux):

    Для раскладки Mac:

    (Так как в Mac-раскладке символы под цифрами вводят другие символы, соответствующие английским, например, нажатие Shift+4 вводит «%» вместо «$», их не получится переназначить, поэтому способ 1 подходит лучше.)

    После этого Vim будет нормально понимать команды, вводимые при включённой русской раскладке.

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

    Возможно это зависит от версии, у меня работает так и причём в UTF:

    Так как в последних версиях возможна проблема с парсером символа экранирования ‘\’ — его необходимо записывать как ‘\\’ перед специальными символами ‘,’, ‘;’, ‘»‘ и ‘\’. Потому в версии 7.3 правильная строка может быть такой:

    Способы 3 и 4 [ править ]

    Вставка форматированного текста с отступами [ править ]

    У начинающих часто возникает ситуация, когда при копировании форматированного текста с отступами (например, текст страницы из браузера или пример форматированного кода из документации) в vim строки «съезжают» вправо. Это происходит потому, что редактор пытается помочь отформатировать текст «красиво» и копирует отступы с предыдущей строки в новую. Бороться с этим легко:

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

    Поиск в файлах с выводом в список [ править ]

    В некоторых IDE есть очень удобная функция Find In Files. Она ищет заданную строку или регулярное выражение в файлах в заданной папке и выводит результат поиска в виде списка. Если щёлкнуть по строке этого списка то откроется файл в том месте где была найдена заданная строка. Подобная функция есть и в Vim. Чтобы найти в файлах нужную строку надо набрать команду:

    Более конкретный пример:

    Команда vimgrep ищет строку или регулярное выражение заключённое между символами // в файле или файлах и сбрасывает результаты в специальный буфер. А так же открывает файл с первым найденным результатом. Команда copen открывает буфер с результатами поиска. Путь к файлам может указывать как на один файл так и на набор файлов. Чтобы путь указывал на несколько файлов надо использовать символы ? и *. Значение этих символов такое же как и в командной строке операционной системы. Чтобы поиск прошёл по всем подпапкам указанной папки можно использовать две звёздочки **. Пример использования **:

    Как открыть файл в нужной кодировке [ править ]

    Автоматически [ править ]

    При открытии файла Vim попытается определить кодировку, и открыть файл в этой кодировке. Для этого, в

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

    Можно указать кодировку текста вручную [ править ]

    Например, можно вручную указать кодировку cp1251 (MS Windows) уже открытому тексту:

    Можно предварительно, перед открытием файла, указать ожидаемую кодировку [ править ]

    Для этого нужно установить переменную encoding (сокращённо enc ). Например, установить кодировку ucs-2le (Unicode MS Windows):

    После этого можно открывать файл. Он откроется в этой кодировке.

    Пользовательское меню [ править ]

    Часто, для упрощения работы в Vim с файлами в различных кодировках, в

    /.vimrc определяют специальное пользовательское меню, которое будет вызываться, например, по .

    Перемещаться по пунктам пользовательского меню можно по или клавишами управления курсором.

    Дополнительно [ править ]

    Чтобы узнать список всех поддерживаемых кодировок, наберите команду:

    Конвертация кодировки файла [ править ]

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

    • Текущая используемая в Vim кодировка задаётся переменной encoding ( enc ).
    • Кодировка отображения задаётся переменной termencoding ( tenc ).
    • Кодировка сохранения файла задается переменной fileencoding ( fenc ).

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

    Обычно encoding и fileencoding совпадают. Для того, чтобы сохранить файл в другой кодировке, надо перед сохранением задать соответствующее значение переменной fileencoding .

    Чтобы узнать список всех доступных значений переменных encoding и fileencoding наберите команду:

    Пример: как сконвертировать файл из MS Windows cp1251 в Linux utf-8 [ править ]

    • Открываем файл в Vim:

    • Задаем текущую кодировку cp1251 :
    • Текст конвертируется и Vim отобразит изменения, если они произошли. Исходный файл не изменился.
    • Задаем кодировку сохранения файла utf-8 :
    • Задаем формат переводов строки ( dos , unix или mac ):
    • Сохраняем файл.
    • Выходим

    Пример: конвертировать файл из Linux utf-8 в MS Windows cp1251 [ править ]

    Обратная операция — конвертировать файл из Linux utf-8 в MS Windows cp1251 — будет такой:

    Vim при переводах текста, или для чтения английской документации [ править ]

    Итак, чтобы можно было успешно читать и переводить документацию на английском языке, нужно ИМХО всего 3 вещи:

    • Редактор.
    • Переводчик.
    • Проверка орфографии

    Если их удобно объединить, то можно получить хорошую среду, для перевода/чтения.

    Что возьмем [ править ]

    Редактор мы естественно возьмем VIM. Переводчик mueller консольная версия, работает так:

    И орфографмометр: это spell в виме, словари скачаем с vim.org

    Как настроим [ править ]

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

    Определили функцию MyBallonExpr которая будет формировать строку mueller [слово на которое навели] и выполнять. Результат выполнения будет выдавать в «балоне» выпадающем окошке, через 100 миллисекунд.

    Естественно вместо mueller вы можете поставить любую другую программу, которая переводит текст.

    Рецепт для очень умелых ручек [ править ]

    Если у вас нет консольной версии mueller , но есть много энтузиазма, то можно поступить так:

    • Идем на http://sourceforge.net/projects/mueller-dict/ и забираем оттуда mueller-dict-3.1.1.tar.gz
    • Извлекаем из полученного архива файл mueller-base.dict.dz и кладем его, скажем, в

    /dict/

  • Там же создаем файл mueller-base.sh со следующим содержимым:
    • даем нашему новому консольному словарику право на исполнение:
    • и проверяем его работоспособность:
    • Для графической версии редактора ( gvim ) функция перевода в нашем

      /.vimrc должна будет выглядеть так:

    • Естественно, что функция MyBalloonExpr() работает только в gVim, зато выглядит красиво. Наведите курсор мышки на слово и оставьте его неподвижным секунду-две (поначалу, можно вообще убирать руку с мышки, позже приловчитесь).
    • LINES=50 ограничивает количество выводимых строчек. Можете подобрать цифру под свой монитор.
    • Рекомендую выставить balloondelay=500 миллисекунд. Да, помедленнее. Но мышка будет меньше цепляться за слова.
    • Для текстовой версии редактора ( vim ) придётся делать специальную функцию TranslateWord() и вешать её вызов на специальную функциональную клавишу, например :
    • Это работает точно так же и в графической версии редактора ( gvim ). Поэтому метод можно считать универсальным, но требует нескольких нажатий клавиш, и сплит-окно выглядит менее элегантно, чем подсказки.
    • Открывшееся окно с переводом можно закрыть стандартным способом ( :q ). Ну, а если вы воспользовались советом выше и забиндили на клавишу предложенное пользовательское меню, то алгоритм работы будет совсем простой: смотрим перевод вернули как было.
    • Этот метод использует временный файл
    • Т.к. в этом методе нет необходимости в ограничении, чтоб подсказка помещалась на экран, то для LINES можно увеличить лимиты, хоть до LINES=500 . Этот метод не имеет ограничений на количество выводимых строчек.

    Строка статуса редактора [ править ]

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

    . и у вас в предпоследней строке будет выводиться что-то вроде этого:

    %f — имя файла и путь к нему, относительно текущего каталога %m — флаг модификации/изменения, выводит [+] если буфер изменялся %r — флаг «только для чтения», выводит [RO] если буфер только для чтения %h — флаг буфера помощи, выводит [help] если буфер со справкой vim %w — флаг окна превью, выводит [Preview] ‘\ ‘ — экранированный символ пробела. Пробел можно указывать только экранированным, иначе ошибка синтаксиса %y — тип файла в буфере, например [vim] enc:% <&enc>— отображение кодировки encoding ( enc ). Обратите внимание: » enc: » — текст, » % <&enc>» — вывод значения внутренней переменной ( enc ) ff:% <&ff>— отображение формата перевода строки fileformat ( ff ) fenc:% <&fenc>— отображение кодировки сохранения в файл fileencoding ( fenc ) %= — далее выравнивать вправо ch:%3b — код символа под курсором в десятичной чистеме счисления, минимум 3 символа hex:%2B — код символа под курсором в шестнадцатеричной системе счисления, минимум 2 символа col:%2c — курсор в колонке, минимум 2 символа line:%2l/%L — курсор в строке (минимум 2 символа)/всего строк в файле %2p — число % в строках, где находится курсор (0% — начало файла; 100% — конец файла), минимум 2 символа %% — т.к. символ ‘%’ используется для переменных, то вывод символа ‘%’ в строке статуса нужно делать особым образом — %%

    Подробнее о формате вывода statusline можно узнать из справки:

    Проверка орфографии [ править ]

    Пользовательское меню [ править ]

    Часто бывает удобно оформить процедуры, связанные с проверкой орфографии, в виде пользовательского меню:

    Здесь, по вызывается подменю: проверить орфографию русского языка [ ru ], проверить орфографию английского языка [ en ] или отключить проверку орфографии [ off ].

    По для слова под курсором можно найти корректную альтернативу из словаря. Порядок работы следующий:

    • Наводим курсор на выбранное слово (или подсвеченное проверкой орфографии слово)
    • Нажимаем и видим список альтернатив. Каждый вариант в списке помечен цифрой.
    • Находим понравившийся вариант и запоминаем его номер.
    • Смело начинаем набирать запомненный номер, неважно, одна это цифра или две.
    • Снова нажимаем .
    • Слово под курсором будет заменено альтернативой с указанным номером.

    Как это работает? [ править ]

    Попробуйте на примере слова «Шпоргалка».

    • Откройте Vim, перейдите в режим редактирования и наберите слово «Шпоргалка».
    • Выйдите из режима редактирования в командный режим (обычно, )
    • Установите курсор на слово «Шпоргалка»
    • Нажмите последовательно два символа » z » и » = » (два символа: z= )
    • Как результат, вы должны увидеть экран с альтернативами, подобранными для слова под курсором. Нажатие любой клавиши скроет этот экран, но безопасными и не оставляющими следов в буфере клавиатуры будут либо , либо .
    • Запоминаем, что хорошей альтернативой слову «Шпоргалка» было слово «Шпаргалка», под номером » 1 «.
    • А теперь магия! Нажимаем последовательно три символа: » 1 «, » z » и » = » (три символа: 1z= )
    • Слово под курсором «Шпоргалка» заменено на «Шпаргалка».
    • С использованием пользовательского меню, операция будет выглядеть, как три нажатия на кнопки: 1 .

    Теперь мы с вами знаем, что если навести на слово «Шпоргалка» курсор и нажать три магических символа 1z= ,то ошибочное слово будет волшебным образом заменено на правильное («Шпаргалка»). А если нажать четыре магических символа 39z= ,то слово «Шпоргалка» под курсором будет волшебным образом заменено, скорее всего, на слово «Прогулка» (это если у вас стоят словари той же версии, что и у меня).

    А теперь, самая главная тайна:

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

    Выход, с сохранением всех изменений:

    Влияние Vim [ править ]

    Существуют браузеры и расширения для браузеров делающее управление ими похожим на управление текстовым редактором Vim. Например,

    • Vimperator — расширение для Mozilla Firefox
    • Pentadactyl — расширение для Mozilla Firefox
    • Conkeror — лёгкий веб-браузер на основе движка Gecko
    • Luakit — лёгкий, быстрый браузер на основе движке WebKit

    Как научиться пользоваться Vim?

    Есть желание освоить Vim.
    Подкиньте, пожалуйста, тюториалы, статьи по первоначальной настройке и использованию.
    Ресурсы, которые могут быть интересны.
    Или любую инфорацию, которая сократит количество мучений на первоначальном этапе ознакомления.

    Например, как не плюнуть и не снести его к чертовой матери спустя 20-ть минут?

    • Вопрос задан более трёх лет назад
    • 12379 просмотров

    Прежде всего запомните
    :w!

    а потом уже подкасты и всё остальное.

    По-моему, единственный нормальный способ — это узнать сначала его возможности (статьи, скринкачты и т. п., пройти vimtutor), а затем начать использовать его в реальной работе по принципу «нужно что-то сделать, знаю что vim это может, но не помню как — лезу в help/гуглю», причём не поддаваться соблазнам типа «не помню как в конец строки/файла перейти, фиг с ним пожму стрелочки» (стрелочки и прочие пейдждауны лучше вообще отключить).

    Увы, но производительность труда при этом падает в разы, если не на порядки, и сам я своим советом не могу воспользоваться так что пользуюсь vim’ом только для правки конфигов на удалённых серверах, активно используя только i/ и :w :q

    зы. за vimtotutor благодарю…

    Попробуйте такой вариант Anjuta IDE (для упрощения навигации) + VIM в качестве редактора кода

    7 лучших бесплатных ресурсов для изучения программирования

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

    1. freeCodeCamp

    • Технологии: HTML, CSS, JavaScript, Git, Node.js, React.js и другие.
    • Стоимость: полностью бесплатно.
    • Уровень сложности: все уровни.
    • Язык: английский.


    Программа freeCodeCamp последовательно обучает пользователя всем основным аспектам веб-программирования от начальных понятий до сложных приёмов разработки. В начале каждого урока вы читаете теорию, затем применяете её на практике: пишете код в специальном редакторе, а система вас проверяет. Если возникают трудности, можно обсуждать их с другими учащимися на форуме.

    В конце теоретических модулей вам показывают проекты, на примере которых вы должны создавать собственные веб-приложения. Результаты разработки нужно публиковать на ресурсе, после чего их могут оценивать другие пользователи.

    Вдобавок freeCodeCamp помогает ученикам собираться в команды и работать совместно над реальными некоммерческими проектами. Это хороший шанс получить ценный опыт разработки и портфолио, необходимые для трудоустройства.

    2. Codecademy

    • Технологии: HTML, CSS, JavaScript, Angular.js, React.js, Python, Ruby и другие.
    • Стоимость: бесплатно или от 20$ в месяц за дополнительный контент.
    • Язык: английский.
    • Уровень сложности: лёгкий-средний уровни.

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

    В Codecademy также есть комплексные платные программы, которые систематизируют и объединяют материалы разных курсов. К примеру, программа Build Websites from Scratch шаг за шагом обучает разработке простого сайта с нуля с использованием различных технологий.

    3. Coursera

    • Технологии: HTML, CSS, JavaScript, Angular.js, Java, Python, Ruby, Swift и другие.
    • Стоимость: бесплатно или от 49$ в месяц за дополнительный контент.
    • Язык: английский, русский и другие.
    • Уровень сложности: все уровни.

    На Coursera вы найдёте множество курсов по разным языкам программирования от ведущих мировых университетов. Здесь можно обучаться не только веб-разработке, но также созданию мобильных и настольных программ. Некоторые курсы самодостаточны, но большинство объединены в специализации — наборы связанных курсов.

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

    4. edX

    • Технологии: HTML, CSS, JavaScript, Java, Python, Ruby и другие.
    • Стоимость: бесплатно или от 49$ в месяц за сертификат.
    • Язык: английский и другие.
    • Уровень сложности: все уровни.

    На edX вы можете получить доступ к курсам от известных компаний и университетов. Среди них есть, к примеру, знаменитый вводный курс для начинающих программистов Introduction to Computer Science от Гарвардского университета. Образовательный контент представлен в основном видеолекциями и текстами. Некоторые курсы содержат тесты и другие интерактивные задания.

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

    5. ИНТУИТ

    • Технологии: HTML, CSS, JavaScript, алгоритмы и базы данных, C#, Java, Python, Ruby, и другие.
    • Стоимость: бесплатно или от 500 рублей в месяц за услуги тьютора.
    • Язык: русский.
    • Уровень сложности: все уровни.

    В каталоге образовательной платформы «ИНТУИТ» есть текстовые и видеокурсы от российских учебных заведений и международных IT-компаний. Контент площадки охватывает все основные сферы программирования от разработки сайтов до создания настольных программ. Самостоятельное обучение бесплатно, но есть платная услуга, в рамках которой пользователю помогает персональный тьютор.

    6. Stepic

    • Технологии: JavaScript, C#, нейронные сети, C++ и другие.
    • Стоимость: полностью бесплатно.
    • Язык: русский, английский.
    • Уровень сложности: легкий-средний.

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

    7. Современный учебник Javascript

    • Технологии: JavaScript и другие.
    • Стоимость: бесплатно или от 6 500 рублей за дополнительный курс.
    • Язык: русский.
    • Уровень сложности: все уровни.

    Этот ресурс посвящён языку JavaScript и сопутствующим веб-технологиям. Здесь вы найдёте очень подробный, хорошо структурированный и доступный для понимания текстовый курс по JS. Задания после каждой темы помогут закрепить полученные знания. В то же время материал чисто теоретический и не учит созданию проектов на практике.

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

    vim Начало работы с vim

    замечания

    Vim (или «Vi IMproved») представляет собой консольный многомодовый ( модальный ) текстовый редактор. Он широко используется и доступен по умолчанию для всех систем Unix, Linux и Apple OS X. Vim имеет большое активное сообщество и широкую пользовательскую базу. Редактор поддерживает все популярные языки программирования, и многие плагины доступны для расширения своих возможностей.

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

    Vim основан на более раннем редакторе Unix «vi», созданном в семидесятых годах, и с 1991 года он постоянно развивается. С помощью макросов и плагинов редактор предлагает большинство функций современной среды разработки. Он также уникально способен обрабатывать большие объемы текста со своим языком сценариев (vimscript) и регулярными выражениями.

    Версии

    Версия Дата выхода
    8,0 2020-09-12
    7,4 2013-08-10
    7,3 2010-08-15
    7,2 2008-08-09
    7,1 2007-05-12
    7,0 2006-05-07
    6,0 2001-09-26
    5.0 1998-02-19
    4,0 1996-05-29
    3.0 1994-08-12
    2,0 1993-12-14
    1,14 1991-11-02

    основы

    Запускайте интерактивные обучающие программы vim столько раз, сколько необходимо, чтобы чувствовать себя комфортно с основами.

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

    Обычный режим предназначен для редактирования и навигации по тексту. В этом режиме h , j , k и l соответствуют клавишам курсора ← , ↓ , ↑ и → . Большинство команд в нормальном режиме могут иметь префикс «счет», например, 3j перемещается вниз по 3 линиям.

    Режим вставки предназначен для непосредственного вставки текста, в этом режиме vim аналогичен другим более простым текстовым редакторам. Для входа в режим вставки нажмите i в нормальном режиме. Чтобы оставить его, нажмите клавишу (клавиша эвакуации).

    Режим командной строки предназначен для запуска более сложных команд, таких как сохранение файла и выход из vim. Нажмите : для запуска режима командной строки. Чтобы выйти из этого режима, вы также можете нажать . Чтобы сохранить изменения в файле, используйте :w (или :write ). Для выхода из vim без сохранения изменений используйте :q! (или :quit! ).

    Вот некоторые из наиболее полезных команд в vim:

    команда Описание
    i (вставка) переходит в режим вставки до текущей позиции курсора
    I переходит в режим вставки до первого печатаемого символа текущей строки
    a (append) переходит в режим вставки после текущей позиции курсора
    A переходит в режим вставки после последнего печатного символа текущей строки
    x удалить символ в текущей позиции курсора
    X удалить символ слева до текущей позиции курсора
    w перейти к следующему слову
    b перейти к предыдущему слову
    перейти к началу строки
    $ переместиться в конец строки
    r replace — вводит режим замены для одного символа. Следующий символ, который вы вводите, заменит символ под курсором.
    R входит в режим замены неограниченно. Каждый вводимый вами персонаж заменяет символ под курсором и продвигает курсор на один.
    s substitute — удаляет символ в текущей позиции курсора, а затем переходит в режим вставки
    S удалите текущую строку, в которой находится текущий курсор, и введите режим вставки
    , выйдите из режима вставки и вернитесь в нормальный режим
    u расстегивать
    переделывать
    dd , dw , dl , d$ отредактируйте текущую строку, от курсора до следующего слова или символ, текущую позицию до конца текущей строки соответственно, обратите внимание: D является эквивалентом d$
    cc , cw , cl измените текущую строку, от курсора до следующего слова или символ, соответственно
    yy , yw , yl , y$ yank («копировать») текущую строку, от курсора до следующего слова или символ, текущую позицию до конца текущей строки соответственно
    p , P put («paste») после или перед текущей позицией соответственно
    o , O создать новую пустую строку, после или до текущей, и ввести режим вставки
    :w записать текущий буфер на диск
    :q! , ZQ бросить
    😡 :wq , ZZ писать и оставлять
    :help открыть окно с помощью файла справки
    :help

    показать справку по конкретному предмету
    qz начните записывать действия для регистрации z , q до конца записи, @z чтобы воспроизвести действия. z может быть любой буквой: q часто используется для удобства. Подробнее: Макросы

    Выход из Vim

    Чтобы выйти из Vim, сначала убедитесь, что вы находитесь в обычном режиме, нажав Esc .

    • :q Ввод (будет препятствовать выходу из системы, если у вас есть несохраненные изменения — сокращение: quit)

    Отменить изменения и выйти из Vim:

    • :q! Enter, чтобы принудительно выйти и отменить изменения (сокращение для :quit! Не путать с :!q ),
    • ZQ — это ярлык, который делает то же самое, что :q! ,
    • :cq Введите quit и return error (отмените все изменения, чтобы компилятор не перекомпилировал этот файл)

    Чтобы сохранить изменения и выйти из Vim:

    • :wq Enter (сокращенно :write and :quit ),
    • 😡 Enter (то же, что и :wq , но не будет писать, если файл не был изменен),
    • ZZ — это ярлык, который делает то же самое, что 😡 (Сохранить рабочее пространство и выйти из редактора),
    • :[range]wq! Введите ( введите строки в [диапазон])

    Чтобы закрыть несколько буферов одновременно (даже в нескольких окнах и / или вкладках), добавьте букву a в любой из вышеперечисленных команд (те, которые начинаются с : . Например, чтобы написать и закрыть все окна, вы можете использовать:

    • :wqa Введите или
    • :xa Enter — записать все измененные буферы и выйти из Vim. Если существуют буферы без имени файла, которые являются readonly или которые не могут быть написаны по другой причине, Vim не уйдет
    • :xa! Enter — пишите все измененные буферы, даже те, которые только что читаются, и выйдите из Vim. Если есть буферы без имени файла или которые не могут быть написаны по другой причине, Vim не уйдет
    • :qa Enter — попробуйте выйти, но остановитесь, если есть несохраненные файлы;
    • :qa! Enter — выйти без сохранения (изменений откинуть несохраненные файлы)

    Если вы открыли Vim без указания файла и хотите сохранить этот файл перед выходом, вы получите сообщение E32: No file name . Вы можете сохранить файл и выйти из него, используя:

    • :wq filename Ввод или;
    • 😡 filename Введите

    Объяснение:

    Действие : нажатие клавиши действительно открывает командный режим. Команда q является аббревиатурой quit , w , write и x , exit (вы также можете ввести :quit :write и :exit если хотите). Ярлыки, не начинающиеся с : например ZZ и ZQ относятся к сопоставлениям в режиме нормального режима. Вы можете рассматривать их как ярлыки.

    ! нажатие клавиши иногда используется в конце команды для принудительного ее выполнения, что позволяет отменить изменения в случае :q! , Размещение ! в начале команды имеет другое значение. Например, можно ошибаться :!q вместо :q! и vim закончил бы с ошибкой 127.

    Легкий способ запомнить это — думать ! как способ настаивать на выполнении чего-то. Также, когда вы пишете: «Я хочу бросить курить!»

    Монтаж

    Vim на вашем компьютере, если он есть, скорее всего, будет «небольшой» сборкой, в которой отсутствуют полезные функции, такие как поддержка буфера обмена, подсветка синтаксиса или даже возможность использования плагинов.

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

    Поэтому, как правило, рекомендуется установить полную сборку.

    Установка на Linux / BSD

    В этих системах фокусом является просто установка версии GUI, которая поставляется с командой gvim для запуска GUI и команды vim для запуска TUI.

    PacVim — игра, которая научит вас командам Vim

    Хотя Vim (сокращение от VI Improved) и является чуть ли не самым популярным текстовым редактором для Linux-систем, пользователям все еще трудно учиться, так как Vim имеет большое количество разнообразных функций. Многие новички Linux буквально боятся изучать этот мощный и очень нами рекомендуемый текстовый редактор.

    С другой стороны, так много усилий было направлено сообществом sedicomm и Linux для упрощения обучения Vim; от создания обучающих статей про Vim, обмена полезными советами по использованию Vim, до разработки интерактивных обучающих веб-приложений и игр с командной строкой, таких как PacVim.

    PacVim — бесплатная текстовая игра с открытым исходным кодом, которая учит вас командам vim простым и интересным способом. Она была создана под вдохновением от популярной и классической игры PacMan и работает на Linux и MacOSX. Это помогает вам всесторонне изучать команды vim приятным способом. Её цель более или менее похожа на цель PacMan — вы должны перемещать pacman (зеленый курсор) по всем символам на экране, избегая призраков (красные G).

    Как установить игру PacVim в Linux

    Чтобы установить игру PacVim, вам необходимо сначала установить требуемый пакет Curses (графическая библиотека) в дистрибутив Linux, используя менеджер пакетов по умолчанию:

    Затем загрузите исходные файлы PacVim, клонировав его репозиторий и установите его, как показано ниже:

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

    Вот список клавиш для перемещения курсора:

    • h — перемещение влево
    • i — перемещение вправо
    • j — перемещение вниз
    • k — перемещение вверх
    • q — выйти из игры

    Также, вы можете запустить игру на определенном уровне и/или режиме ( n и h для нормальной/высокой сложности соответственно).

    Вы можете найти дополнительную информацию, включая комбинации использования ключей и способы создания своих пользовательских карт в репозитории PacVim Github.

    На этом все! PacVim — полезная игра, которая учит вам командам vim, и работе с терминалом Linux.

    Спасибо за уделенное время на прочтение статьи!

    Если возникли вопросы, задавайте их в комментариях.

    Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

    Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.

    5 бесплатных ресурсов по изучению Vim

    В Википедии имеется статья по теме «Vim»

    Продвинутый текстовый редактор — кошмар для случайного пользователя. Если его удаётся в конце концов закрыть, то вздыхаешь с облегчением и твёрдой уверенностью, что больше не будешь запускать эту программу ни разу в жизни.

    Пожалуй, Vim нельзя просто запустить и начать работать — требуется определённая подготовка. Зато стоит раз испытать его в деле и поражаешься тому, как можно было без него обходиться.


    Для быстрого ознакомления с функциональностью Vim запустите команду vimtutor.

    Содержание

    Начнём с примера [ править ]

    Типичная сессия работы с Vim выглядит так:

    В открывшемся редакторе:

    В данном случае задачей было изменить значение определённого параметра конфигурации apache. В обычном редакторе подобный результат достигается следующими действиями:

    или Ctrl + O и выбрать файл из диалога открытия файла.

    Объяснение команд обычного редактора:

    • Открыть файл «httpd.conf» одним из указанных способов.
    • Ctrl + F — открыть диалог поиска.
    • Ввести «SSLVerif».
    • ↵ Enter — фокус в диалоге поиска обычно всегда стоит на поиске следующего вхождения искомого слова.
    • Esc — закроет окно поиска, а Ctrl + → снимет фокус с найденного слова и перейдёт к следующему (в некоторых редакторах курсор проскакивает слово и переходит через слово — тогда нажимаем ← не отпуская Ctrl , а в некоторых одиночное нажатие приводит только лишь к снятию фокуса и нужно повторно нажать → ).
    • Del удалит «0» и остаётся напечатать «1».
    • Ctrl + S — сохранить изменения.
    • Alt + F4 — закрыть файл и выйти.

    Объяснение команд VIM:

    • / — Перейти в режим поиска
    • ↵ Enter — Искать.
    • n — Перейти к следующему вхождению искомой строки
    • w — Переместить курсор к следующему слову
    • r — Заменить знак под курсором
    • ZZ — Сохранить изменения и выйти
    • ZQ — Выйти без сохранения изменений

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

    Введение [ править ]

    Здесь я делюсь опытом работы в Vim’е. Предполагается, читатель имеет установленные vi и vim, а также знаком с основами работы с UNIX-подобной системой.

    Помнится, когда товарищ установил FreeBSD на мою домашнюю ЭВМ, некоторые файлы открывались непонятным мне образом. Я быстро старался избавиться от этого несчастья. Через некоторое время я понял, что происходит: в системе по умолчанию, в переменной окружения EDITOR, установлен редактор vi. Я сразу поменял его на ‘ee’ (easy editor). Это действительно простой редактор, затруднений с ним возникнуть просто не может, однако и особой свободы в нем не испытать. Вскоре его стало не хватать…

    Описание работы с редактором я привожу в хронологическом порядке — от простого к сложному. Так как Vim на 99 % совместим с vi, сначала я дам краткое описание работы с vi.

    Легенда сокращений и специальных символов:

    Vi [ править ]

    Главное отличие Vi от других редакторов в том, что у него несколько режимов работы. При этом привычный нам режим ввода текста — не основной. Основным режимом в vi считается режим, в котором клавиатура используется для управления редактором. В этом режиме возможно быстро перемещаться по тексту, переключаться в другие режимы и выполнять другие операции.

    Насколько Vi быстрее других редакторов? — Давайте сравним. Например, вот действия, которые необходимо выполнить [«продвинутому»] пользователю, чтобы поменять местами две буквы в обычном редакторе и в vi:

    Переключение режимов [ править ]

    • «Обычный режим» — перемещение по файлу, стирание текста и другие редактирующие функции. Это — как уже было отмечено, основной режим, только из него можно сразу перейти в другие режимы. Для возврата в основной режим из любого другого режима:
    • «Режим ввода» — ввод текста. Как только завершается ввод текста, принято сразу возвращаться в обычный режим. Заметьте, что стирание и ввод текста происходит в двух разных режимах. Перейти в него из обычного режима можно разными способами, примеры:
    • «Командный режим» — Команды (операции с файлом, поиск и замена, настройка редактора…). Переход в него из обычного режима:
    • «Режим поиска» — ввод поискового запроса. Переход в него из обычного режима
    • «Визуальный режим» — режим выделения текста. Переход в него из обычного режима

    Открыть/создать файл [ править ]

    Опишем операции, которые можно производить с файлом.

    1. vi mamapapa.txt ++11 — допустим файл был отрыт на строке 1, выполнив эту команду он откроется на строке 12

    Файл открывается в обычном режиме с помощью команды vi. Строка статуса будет отображать название файла. Теперь мы можем просмотреть файл, переместиться по его содержимому, стереть текст, но ввести текст в этом режиме нельзя.

    Создание файла происходит при помощи той же команды. Собственно создание файла происходит в момент сохранения.

    Для открытия или создания нового файла в обычном режиме набираем

    Перед этим нужно сохранить предыдущий файл

    Перемещение по файлу [ править ]

    Самые часто используемые в vi клавиши — клавиши перемещения. Это знаменитые h j k l, соответствующие стрелкам влево, вниз, вверх и вправо. Стрелочки тоже работают (при правильном указании терминала). Можно использовать также быстрые клавиши:

    • — на страницу (экран) вниз
    • — на страницу (экран) верх
    • — на пол страницы (экрана) вниз
    • — на пол страницы (экрана) верх
    • — на строку вверх, без изменения положения курсора
    • — на строку вниз, без изменения положения курсора
    • 0 («ноль») — в начало текущей строки;
    • ^ — в начало текущей строки (к первому непробельному символу);
    • $ — в конец текущей строки
    • w — на слово вправо
    • b — на слово влево
    • W — до пробела вправо
    • B — до пробела влево
    • > — абзац вниз
    • < — абзац вверх
    • gg — перейти в начало файла
    • G — перейти в конец файла
    • G — перейти на конкретную строку
    • /

    — то же самое, но искать назад

  • n — повторить поиск
  • N — повторить поиск назад
  • [[ — в начало функции
  • » — к месту выполнения команды [[
  • Перемещение по экрану [ править ]

    Изменение положения экрана без изменения положения курсора.

    • z- сдвинуть страницу так чтобы строка с курсором оказалась внизу.
    • z[Enter] сдвинуть страницу так чтобы строка с курсором оказалась вверху
    • z. или zz страницу так чтобы строка с курсором оказалась посредине

    Перемещение в пределах экрана

    • H перемещение на верхнюю строку экрана ( 5H на пять строк ниже верхней строки)
    • M перемещение на среднюю строку экрана
    • L перемещение на последнюю строку экрана ( 5L на пять строк выше нижней строки)

    Редактирование файла [ править ]

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

    — Винни, тебе что намазать на хлеб, мёду или сгущённого молока?

    — И того, и другого, и можно без хлеба!
    — Ну, если вы больше ничего не хотите…

    — А что, что-то есть ещё?

    Диалог симпатичный, но несколько несвязный. Давайте изменим его — для этого необходимо перейти в режим ввода. Самый простой способ — из обычного режима нажатие клавиши «i». После чего можно смело приступать к вводу текста. вернёт нас к обычному режиму.

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

    Другие важные команды:

    Ввод текста [ править ]

    Все эти команды переводят редактор в режим ввода. Эти команды экономят время на движение курсора или на перевод его на новую строку. В командах ввода текста могут применяться числовые аргументы (за исключением O и o ). Например, команда 20iПривет вставляет 20 слов «Привет».

    • i — перейти в режим ввода с текущей позиции
    • a — перейти в режим ввода после курсора
    • I — переместиться в начало строки и перейти в режим ввода
    • А — переместиться в конец строки и перейти в режим ввода
    • o — перейти в режим ввода с новой строки под курсором
    • O — перейти в режим ввода с новой строки над курсором
    • s — заменяет указанное количество символов (удаляет указанное число символов и переходит в режим ввода). В отличии от команды с которая может удалить кусок текста размером не меньше слова ( cw ), командой s можно удалить любое число символов. Например 4s удалит четыре символа начиная с того который находится под курсором. Эта команда применяется для замены одного или нескольких символов другими символами.
    • S — удаляет всю текущую строку и переходит в режим ввода. Число перед командой показывает сколько нужно удалить строк начиная с текущей. Например 4S удалит четыре строки включая текущую.
    • R — перейти в режим ввода с заменой текста (аналог insert). Символы под курсором заменяются на вводимые. Команда применяется когда неизвестно сколько придётся изменить символов на другие (иначе можно было бы использовать команду s с указанием числа заменяемых символов, например, 7s ). При удалении вводимых символов возвращаются те которые были до ввода команды. Такой режим сохраняется до конца строки. При вводе новой строки (по нажатию Enter), происходит не переход на другую строку с тем же режимом замены текста, а создание новой строки.
    • r — заменить один символ. Заменяет символ находящийся под курсором на символ который следует за командой. При этом не происходит выхода из командного режима (не надо нажимать ESC после изменения текста). Например, команда ry — символ под курсором меняется на «y». Числовой показатель указывает сколько символов необходимо заменить на данный. Например, 3ry вставляет три символа «y».

    Удаление [ править ]

    • x — удалить символ под курсором ( x удаляет указанное число символов начиная с того который находится под курсором)
    • X — удалить символ влево (удалить символ перед курсором)
    • d — используется совместно с командами перемещения. Удаляет символы с текущего положения курсора до положения после ввода команды перемещения. Пример:
    • dw — удаляет символы с текущего до конца слова. включая пробел после слова, чтобы удалить символы до конца слова, но оставить пробел используется команда de ,
    • dE — удаляет символы с текущего до конца слова, включая символы пунктуации, но оставляет пробел после слова,
    • diw — удаляет слово под курсором,
    • dd — удалить текущую строку (вырезать)
    • d d или dd — стирание числа строк начиная с текущей,
    • db — удаляет символы с текущего до начала слова (удаление в обратном направлении)
    • d0 — удаление символов с начала строки до текущего положения курсора
    • d$ или D — удаление символов с текущего положения курсора до конца строки.
    • с — команда аналогичная d , но после удаление переходит в режим ввода. (замена текста) Очень удобная альтернатива команде R

    • сс — команда удаляет текущую строку и переходит в режим ввода.
    • C — удаляет текст с текущего положения курсора до конца строки, аналогична команде с$ (где $ — символ конца строки)
    • yy (также Y ) — копирование текущей строки в неименованный буфер
    • y y — копирование числа строк начиная с текущей в неименованный буфер
    • p — вставка содержимого неименнованного буфера под курсором. Поскольку в vim девять ячеек буфера удаления. Можно вставить не только последнее удаление но и удаления сделанные ранее. Например » 4p вставит под курсор содержимое четвертого удаления начиная с последнего. Также чтобы поменять местами два символа можно использовать комбинацию команд «удалить» — x (удаление в буфер) и «вставить» — p (вставить из буфера). Таким образом, поставив курсор на первую букву из двух которые необходимо поменять местами и нажав комбинацию клавиш xp мы совершим необходимые действия.
    • P — вставка содержимого неименованного буфера перед курсором
    • J — слияние текущей строки со следующей. Числовой аргумент перед командой показывает сколько следующих линий необходимо объединить с текущей. Например 2J объединить две следующие строки с текущей, на которой расположен курсор.

    Отмена изменений [ править ]

    • u — отмена последней команды
    • U — отмена всех последних изменений в строке, если строка удалена, то применить эту команду к данной строке будет невозможно

    Команды u и U могут отменять друг друга.

    • или :redo вперёд по изменениям
    • . — повтор последней команды, включая ввод текста.

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

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

    Конечно, запомнить все команды сразу трудно, даже не нужно (к тому же здесь перечислены не все). Уверяю вас, через некоторое время эти команды будут пользоваться спросом. Некоторые особенности использования редактора в режиме редактирования:

    • Любой удаляемый текст сохраняется временно в буфере. Из этого буфера его можно вставить в текст.(см. команду p ). Буфер изменяется также после применения команды y — копировать.
    • Любая команда редактирования хранится в буфере, пока не будет вызвана другая команда.

    Наконец мы дошли к самому главному — командному режиму. Помним как в него перейти? «:». Шифт-ж, если по-русски.

    Запись/выход [ править ]

    Если вы в режиме ввода, то необходимо предварительно нажать , чтобы перейти в обычный режим.

    Эта команда может помочь, если файл открыт в режиме «read-only» (с опцией -R), если файл заблокирован другим пользователем, либо отсутствуют такие привилегии, либо ещё какая беда. При попытке записи без «!» будет выдано соответствующее предупреждение.

    Создать новый файл «new_file» и записать в него текущее содержимое. Если файл существует, будет показано предупреждение. Дальше вы продолжаете работать со старым файлом — mamapapa.txt

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

    Чтобы из командной оболочки вернуться в редактор нажмите CTRL-D или введите exit.

    Если файл был изменён, у вас ничего не получится. В таких случаях необходимо добавлять после команды «!»:

    Чтобы отменить все сделанные в текущей сессии изменения и вернуться к первоначальному варианту файла применяют команду

    Коэффициент повторения [ править ]

    Почти все команды vi принимают так называемый коэффициент повторения. Попросту говоря, если перед командой в обычном режиме вы указываете число, то команда повторяется соответствующее количество раз. Например, команда «j» перемещает курсор на одну строку вниз — «3j» переместит курсор на 3 строки вниз. Результатом команды «iпривет », как вы, наверное, догадались, будет вставка слова «привет» — «2iпривет » вставит «приветпривет».

    Дополнительные возможности [ править ]

    Есть несколько вещей, без которых редактирование похоже на пытку:

    Конвертация кодировки файла:

    Смена кодировки (возможна до внесения изменений в редактируемый файл. т.е. сразу после открытия)

    Vim [ править ]

    Главные отличия от vi [ править ]

    • Неограниченное число undo/redo. (в 7-ой версии появились деревья)
    • Многооконность.
    • Поддержка множества буферов. (в 7-ой версии появились закладки)
    • Подсветка синтаксиса.
    • Редактирование командной строкой.
    • Достраивание имён файлов.
    • Визуальное редактирование.
    • Кроссплатформенность.
    • Графический интерфейс (GUI).
    • Проверка орфографии

    Команды [ править ]

    Переход к началу файла в Vim отличается от Vi:

    Переход к строке под номером :

    Слово под курсором [ править ]

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

    Перейти к предыдущему вхождению слова под курсором

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

    Перейти к редактированию файла (под курсором должен быть путь)

    Визуальный режим [ править ]

    Это существенное расширение возможностей Vi, без которого не обходится ни один «нормальный» текстовой редактор. Режим предназначен для выделения блока текста и дальнейшей работы с ним и состоит из 3-х последовательных шагов:

    1. Пометка начала блока с помощью «v», «V» или CTRL-V. Блок помечается с того символа на котором находится курсор(по умолчанию).
    2. Перемещение курсора в конец необходимого блока. Последний символ также будет включён в выделенный блок.
    3. Вызов необходимой команды.

    Команда «v» предназначена для выделения текста посимвольно. Символы до и после курсора в строке не будут входить в выделение. Необходима в первую очередь для копирования участков текста в строке.
    «V» — для выделения текста построчно.
    CTRL-V — для выделения прямоугольного участка текста. Удобна в случае редактирования структурированного текста.

    С выделенным участком текста можно производить стандартные действия по редактированию(копирование — «y», удаление — «d»). Напомню, что в Vim при удалении участка текста, он автоматически помещается в специальный регистр, что равноценно «вырезанию» участка текста, который потом можно будет вставить с помощью команды «p»(вставка текста после курсора) или «P»(вставка текста перед курсором).

    vimrc — это файл конфигурации Vim. При запуске Vim сначала читает этот файл и применяет записанные в нем настройки. Рекомендуемое расположение этого файла для различных платформ:

    Файл конфигурации используется для настройки различных аспектов поведения и внешнего вида Vim.

    Комментарии в этом файле начинаются с символа « (двойная кавычка) и продолжаются до конца строки.

    Для примера приводится выдержка из файла _vimrc автора: [ править ]

    Можно добавить привычное поведение и привычные сочетания клавиш. [ править ]

    • Например, можно будет прокручивать (скроллить) текст колёсиком мыши и вставлять выделенное в X`ах мышкой в Vim нажатием средней кнопки мыши (нажать на колёсико мыши):
    • По сохранение сделанных изменений:
    • По вставка содержимого заданного файла в редактируемый текст. Требуется ввести имя файла. Работает авто-дополнение имени файла по в текущем каталоге.

    Также возможен интересный приём работы:

    Эта команда вставит в текущую позицию редактируемого текста весь вывод указанной после » ! » команды (в нашем случае: ls -la ).

    • По открывается новая вкладка (tab) и выводится список каталогов и файлов текущего каталога. Клавишами управления курсором можно выбрать каталог или файл. Нажатие на каталог отобразит его содержимое в том же режиме (можно путешествовать по каталогам), а нажатие на файле — откроет его в этой же вкладке. Работает быстрый поиск-перемещение по » / «.
    • По позволяет переключать вкладки справа-налево, по-порядку, отображая открытые в них файлы.
    • По позволяет переключать вкладки слева-направо, по-порядку, отображая открытые в них файлы.
    • Пользовательское меню. По позволяет приостановить работу Vim и вызвать соответствующие программы:

    Обратите внимание на, например, конструкцию :!python % — символ % будет заменён на имя текущего редактируемого файла. В итоге, Vim приостановит работу и вызовет python filename.ext (если вы редактировали filename.ext ) в текущем терминале (в том же, где запущен Vim), а затем, после завершения работы python filename.ext , вернётся к редактированию файла. Не забудьте сохранить изменения перед вызовом. Впрочем, Vim должен будет вам напомнить о том, что изменения нужно сохранить, если вы этого не сделали. Заметьте: что Exec. — это не специальная команда, в всего лишь идентификатор меню, объединяющая группу команд и их идентификаторы/названия пунктов меню/.

    • Пользовательское меню. По позволяет вызвать меню различных вариантов завершения работы с Vim. ( Глоток воздуха для новичка 🙂


    • Позволяет по , более привычному некоторым пользователям, вызывать авто-дополнение для текущего активного синтаксиса:

    Дополнительно [ править ]

    Для получения более подробной информации по файлу _vimrc можно набрать в командной строке Vim команду

    Vim и русская раскладка клавиатуры [ править ]

    В обычном режиме Vim по умолчанию ожидает, что консоль находится в режиме ввода латинских символов. Если вы, к примеру, редактируете с помощью Vim текст на русском языке, или в смешанных кодировках (к примеру, HTML-страницу на русском), то постоянная необходимость переключать системную клавиатурную раскладку очень быстро вам надоест. Существует несколько способов решить эту проблему.

    Способ 1 [ править ]

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

    Для этого в файл конфигурации Vim, который называется .vimrc (или _vimrc в Microsoft Windows) нужно добавить следующие строки:

    После этого системную раскладку клавиатуры можно будет оставить в режиме ввода латинских символов, а переключение между языками осуществлять уже внутри самого редактора с помощью команды Ctrl+^ ( Ctrl+6 в версии для Windows)

    Чтобы настроить переключение языков на другую кнопку (например на F12 ), можно использовать такие команды:

    для режима ввода символов: imap

    При этом нужно вводить нажатием клавиш и k . Это означает, что сначала нажимается клавиша и удерживается нажатой, затем нажимается клавиша k и после этого обе клавиши одновременно отпускаются. После нажатия появится подсвеченный значок вопроса, который потом заменится на код клавиши\комбинации, которую Вы введёте, в данном случае , что будет выглядеть как ^^ .

    для режима ввода командной строки: cmap

    В итоге, визуально в .vimrc это должно выглядеть так:

    Кроме этого, в версии для Windows Vim по умолчанию не настроен на использование кодировок клавиатуры, содержащих символы кириллицы, например CP1251 и KOI8-R (в версии же для Linux настройка по умолчанию корректна). Как следствие этого, Vim при редактировании русского текста будет неправильно обрабатывать команды перемещения по тексту, основанные на поиске слова, такие как w (одно слово вперёд), b (одно слово назад), * (найти в тексте слово под курсором) и т. п. Чтобы настроить Vim для корректной работы с этими командами независимо от языка, достаточно добавить в файл конфигурации _vimrc следующую строку:

    Однако вышеуказанная строка не позволяет изменять регистр русского текста в версии Vim для Windows. Для решения обеих этих проблем вместо вышеуказанной строки в файл конфигурации может быть добавлена следующая строка:

    Способ 2 [ править ]

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

    Для этого в .vimrc добавьте следующую строчку:

    Для стандартной раскладки (Windows, Linux):

    Для раскладки Mac:

    (Так как в Mac-раскладке символы под цифрами вводят другие символы, соответствующие английским, например, нажатие Shift+4 вводит «%» вместо «$», их не получится переназначить, поэтому способ 1 подходит лучше.)

    После этого Vim будет нормально понимать команды, вводимые при включённой русской раскладке.

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

    Возможно это зависит от версии, у меня работает так и причём в UTF:

    Так как в последних версиях возможна проблема с парсером символа экранирования ‘\’ — его необходимо записывать как ‘\\’ перед специальными символами ‘,’, ‘;’, ‘»‘ и ‘\’. Потому в версии 7.3 правильная строка может быть такой:

    Способы 3 и 4 [ править ]

    Вставка форматированного текста с отступами [ править ]

    У начинающих часто возникает ситуация, когда при копировании форматированного текста с отступами (например, текст страницы из браузера или пример форматированного кода из документации) в vim строки «съезжают» вправо. Это происходит потому, что редактор пытается помочь отформатировать текст «красиво» и копирует отступы с предыдущей строки в новую. Бороться с этим легко:

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

    Поиск в файлах с выводом в список [ править ]

    В некоторых IDE есть очень удобная функция Find In Files. Она ищет заданную строку или регулярное выражение в файлах в заданной папке и выводит результат поиска в виде списка. Если щёлкнуть по строке этого списка то откроется файл в том месте где была найдена заданная строка. Подобная функция есть и в Vim. Чтобы найти в файлах нужную строку надо набрать команду:

    Более конкретный пример:

    Команда vimgrep ищет строку или регулярное выражение заключённое между символами // в файле или файлах и сбрасывает результаты в специальный буфер. А так же открывает файл с первым найденным результатом. Команда copen открывает буфер с результатами поиска. Путь к файлам может указывать как на один файл так и на набор файлов. Чтобы путь указывал на несколько файлов надо использовать символы ? и *. Значение этих символов такое же как и в командной строке операционной системы. Чтобы поиск прошёл по всем подпапкам указанной папки можно использовать две звёздочки **. Пример использования **:

    Как открыть файл в нужной кодировке [ править ]

    Автоматически [ править ]

    При открытии файла Vim попытается определить кодировку, и открыть файл в этой кодировке. Для этого, в

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

    Можно указать кодировку текста вручную [ править ]

    Например, можно вручную указать кодировку cp1251 (MS Windows) уже открытому тексту:

    Можно предварительно, перед открытием файла, указать ожидаемую кодировку [ править ]

    Для этого нужно установить переменную encoding (сокращённо enc ). Например, установить кодировку ucs-2le (Unicode MS Windows):

    После этого можно открывать файл. Он откроется в этой кодировке.

    Пользовательское меню [ править ]

    Часто, для упрощения работы в Vim с файлами в различных кодировках, в

    /.vimrc определяют специальное пользовательское меню, которое будет вызываться, например, по .

    Перемещаться по пунктам пользовательского меню можно по или клавишами управления курсором.

    Дополнительно [ править ]

    Чтобы узнать список всех поддерживаемых кодировок, наберите команду:

    Конвертация кодировки файла [ править ]

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

    • Текущая используемая в Vim кодировка задаётся переменной encoding ( enc ).
    • Кодировка отображения задаётся переменной termencoding ( tenc ).
    • Кодировка сохранения файла задается переменной fileencoding ( fenc ).

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

    Обычно encoding и fileencoding совпадают. Для того, чтобы сохранить файл в другой кодировке, надо перед сохранением задать соответствующее значение переменной fileencoding .

    Чтобы узнать список всех доступных значений переменных encoding и fileencoding наберите команду:

    Пример: как сконвертировать файл из MS Windows cp1251 в Linux utf-8 [ править ]

    • Открываем файл в Vim:
    • Задаем текущую кодировку cp1251 :
    • Текст конвертируется и Vim отобразит изменения, если они произошли. Исходный файл не изменился.
    • Задаем кодировку сохранения файла utf-8 :
    • Задаем формат переводов строки ( dos , unix или mac ):
    • Сохраняем файл.
    • Выходим

    Пример: конвертировать файл из Linux utf-8 в MS Windows cp1251 [ править ]

    Обратная операция — конвертировать файл из Linux utf-8 в MS Windows cp1251 — будет такой:

    Vim при переводах текста, или для чтения английской документации [ править ]

    Итак, чтобы можно было успешно читать и переводить документацию на английском языке, нужно ИМХО всего 3 вещи:

    • Редактор.
    • Переводчик.
    • Проверка орфографии

    Если их удобно объединить, то можно получить хорошую среду, для перевода/чтения.

    Что возьмем [ править ]

    Редактор мы естественно возьмем VIM. Переводчик mueller консольная версия, работает так:

    И орфографмометр: это spell в виме, словари скачаем с vim.org

    Как настроим [ править ]

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

    Определили функцию MyBallonExpr которая будет формировать строку mueller [слово на которое навели] и выполнять. Результат выполнения будет выдавать в «балоне» выпадающем окошке, через 100 миллисекунд.

    Естественно вместо mueller вы можете поставить любую другую программу, которая переводит текст.

    Рецепт для очень умелых ручек [ править ]

    Если у вас нет консольной версии mueller , но есть много энтузиазма, то можно поступить так:

    • Идем на http://sourceforge.net/projects/mueller-dict/ и забираем оттуда mueller-dict-3.1.1.tar.gz
    • Извлекаем из полученного архива файл mueller-base.dict.dz и кладем его, скажем, в

    /dict/

  • Там же создаем файл mueller-base.sh со следующим содержимым:
    • даем нашему новому консольному словарику право на исполнение:
    • и проверяем его работоспособность:
    • Для графической версии редактора ( gvim ) функция перевода в нашем

      /.vimrc должна будет выглядеть так:

    • Естественно, что функция MyBalloonExpr() работает только в gVim, зато выглядит красиво. Наведите курсор мышки на слово и оставьте его неподвижным секунду-две (поначалу, можно вообще убирать руку с мышки, позже приловчитесь).
    • LINES=50 ограничивает количество выводимых строчек. Можете подобрать цифру под свой монитор.
    • Рекомендую выставить balloondelay=500 миллисекунд. Да, помедленнее. Но мышка будет меньше цепляться за слова.
    • Для текстовой версии редактора ( vim ) придётся делать специальную функцию TranslateWord() и вешать её вызов на специальную функциональную клавишу, например :
    • Это работает точно так же и в графической версии редактора ( gvim ). Поэтому метод можно считать универсальным, но требует нескольких нажатий клавиш, и сплит-окно выглядит менее элегантно, чем подсказки.
    • Открывшееся окно с переводом можно закрыть стандартным способом ( :q ). Ну, а если вы воспользовались советом выше и забиндили на клавишу предложенное пользовательское меню, то алгоритм работы будет совсем простой: смотрим перевод вернули как было.
    • Этот метод использует временный файл
    • Т.к. в этом методе нет необходимости в ограничении, чтоб подсказка помещалась на экран, то для LINES можно увеличить лимиты, хоть до LINES=500 . Этот метод не имеет ограничений на количество выводимых строчек.

    Строка статуса редактора [ править ]

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

    . и у вас в предпоследней строке будет выводиться что-то вроде этого:

    %f — имя файла и путь к нему, относительно текущего каталога %m — флаг модификации/изменения, выводит [+] если буфер изменялся %r — флаг «только для чтения», выводит [RO] если буфер только для чтения %h — флаг буфера помощи, выводит [help] если буфер со справкой vim %w — флаг окна превью, выводит [Preview] ‘\ ‘ — экранированный символ пробела. Пробел можно указывать только экранированным, иначе ошибка синтаксиса %y — тип файла в буфере, например [vim] enc:% <&enc>— отображение кодировки encoding ( enc ). Обратите внимание: » enc: » — текст, » % <&enc>» — вывод значения внутренней переменной ( enc ) ff:% <&ff>— отображение формата перевода строки fileformat ( ff ) fenc:% <&fenc>— отображение кодировки сохранения в файл fileencoding ( fenc ) %= — далее выравнивать вправо ch:%3b — код символа под курсором в десятичной чистеме счисления, минимум 3 символа hex:%2B — код символа под курсором в шестнадцатеричной системе счисления, минимум 2 символа col:%2c — курсор в колонке, минимум 2 символа line:%2l/%L — курсор в строке (минимум 2 символа)/всего строк в файле %2p — число % в строках, где находится курсор (0% — начало файла; 100% — конец файла), минимум 2 символа %% — т.к. символ ‘%’ используется для переменных, то вывод символа ‘%’ в строке статуса нужно делать особым образом — %%

    Подробнее о формате вывода statusline можно узнать из справки:

    Проверка орфографии [ править ]

    Пользовательское меню [ править ]

    Часто бывает удобно оформить процедуры, связанные с проверкой орфографии, в виде пользовательского меню:

    Здесь, по вызывается подменю: проверить орфографию русского языка [ ru ], проверить орфографию английского языка [ en ] или отключить проверку орфографии [ off ].

    По для слова под курсором можно найти корректную альтернативу из словаря. Порядок работы следующий:

    • Наводим курсор на выбранное слово (или подсвеченное проверкой орфографии слово)
    • Нажимаем и видим список альтернатив. Каждый вариант в списке помечен цифрой.
    • Находим понравившийся вариант и запоминаем его номер.
    • Смело начинаем набирать запомненный номер, неважно, одна это цифра или две.
    • Снова нажимаем .
    • Слово под курсором будет заменено альтернативой с указанным номером.

    Как это работает? [ править ]

    Попробуйте на примере слова «Шпоргалка».

    • Откройте Vim, перейдите в режим редактирования и наберите слово «Шпоргалка».
    • Выйдите из режима редактирования в командный режим (обычно, )
    • Установите курсор на слово «Шпоргалка»
    • Нажмите последовательно два символа » z » и » = » (два символа: z= )
    • Как результат, вы должны увидеть экран с альтернативами, подобранными для слова под курсором. Нажатие любой клавиши скроет этот экран, но безопасными и не оставляющими следов в буфере клавиатуры будут либо , либо .
    • Запоминаем, что хорошей альтернативой слову «Шпоргалка» было слово «Шпаргалка», под номером » 1 «.
    • А теперь магия! Нажимаем последовательно три символа: » 1 «, » z » и » = » (три символа: 1z= )
    • Слово под курсором «Шпоргалка» заменено на «Шпаргалка».
    • С использованием пользовательского меню, операция будет выглядеть, как три нажатия на кнопки: 1 .

    Теперь мы с вами знаем, что если навести на слово «Шпоргалка» курсор и нажать три магических символа 1z= ,то ошибочное слово будет волшебным образом заменено на правильное («Шпаргалка»). А если нажать четыре магических символа 39z= ,то слово «Шпоргалка» под курсором будет волшебным образом заменено, скорее всего, на слово «Прогулка» (это если у вас стоят словари той же версии, что и у меня).

    А теперь, самая главная тайна:

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

    Выход, с сохранением всех изменений:

    Влияние Vim [ править ]

    Существуют браузеры и расширения для браузеров делающее управление ими похожим на управление текстовым редактором Vim. Например,

    • Vimperator — расширение для Mozilla Firefox
    • Pentadactyl — расширение для Mozilla Firefox
    • Conkeror — лёгкий веб-браузер на основе движка Gecko
    • Luakit — лёгкий, быстрый браузер на основе движке WebKit

    Зачем использовать vim

    Философия и процесс изучения текстового редактора vim

    Содержание

    VI(M) — текстовый редактор, который появился в далеком 1991 году, но до сих пор пользуется огромной популярностью (наряду с Emacs). Как правило, на него переходят после других редакторов уже состоявшиеся разработчики. Нередко, переходят с полноценных IDE. Почему?

    vim с настроенным линтером, файловым деревом NERDTree и нечетким поиском с fzf

    В этом гайде не будет пошагового обучения виму. Цель — объяснить философию vim и причины его популярности, а также дать направление для дальнейшего обучения.

    Различия редакторов

    В современном мире есть из чего выбрать среди редакторов: Sublime Text, Atom, VS Code, Brackets. И это не считая IDE.

    Все они не лишены недостатков, но с точки зрения возможностей наворочены по максимуму. Между собой редакторы сравнивают по следующим характеристикам:

    • Скорость работы. Хотя её ставят превыше всего, практика показывает, что программисты готовы страдать ради продвинутых возможностей.
    • Возможности по редактированию текста, например мультикурсоры или сплиты (разделения экрана).
    • Наличие большого числа разнообразных плагинов, включающих поддержку языков и инструментов.
    • Интеграции, такие как git, терминалы и другое.

    При таком способе сравнения vim выглядит достаточно бледно на фоне других редакторов. Да, он самый быстрый, но количество и качество плагинов явно уступает, а интеграций и вовсе нет, хотя, с другой стороны, многие из них не нужны в мире вима. Кроме всего прочего, обычный vim (а есть еще gvim — версия, запускающаяся в виде отдельного оконного приложения) — терминальная программа со всеми вытекающими последствиями. Мышка хоть и поддерживается, но работать используя её в виме — сомнительное удовольствие. Например скроллинг двигается рывками, так как в текстовом терминале смещение построчное.

    И завершает картину кривая обучения. У вима она даже круче, чем у emacs. Чтобы научиться им пользоваться, придется в буквальном смысле страдать (но недолго если правильно учиться).

    Чужой среди своих

    Так почему же вим?

    Если слепой десятипальцевый метод печатания создан для эффективного набора текста, то вим создан для слепого десятипальцевого редактирования текста.

    Вим предлагает другой взгляд на способ работы с текстом. Вместо горячих клавиш + мышка + перемещение стрелками вим вводит понятие режимы. По умолчанию, открыв редактор, мы попадаем в режим normal. В этом режиме вся клавиатура действует как приборная панель, набор текста в нём невозможен. Его основная задача — использовать клавиатуру для перемещения по тексту и выполнение модификаций с помощью команд. В отличие от горячих клавиш, все команды короткие и нередко составные, причем, нажатие составных команд всегда последовательное, а не одновременное, как в горячих клавишах.

    Другими словами, вим предоставляет язык для модификации текста.

    Приведу несколько примеров:

    • w — переместиться на слово вперед
    • W — перемещаться вперед по пробелам
    • b — переместиться назад
    • B — перемещаться назад по пробелам
    • dd — удалить строку
    • diw — удалить слово, которое находится под курсором
    • daw — удалить слово, которое находится под курсором вместе с окружением (всё, кроме пробелов, например кавычки)
    • gg — переместиться в начало документа
    • / — начнёт поиск; всё, что вводится далее, ищется в открытом файле (плюс есть команды для перемещения вперед и назад по найденному)

    А вот, например, более интересная команда — r . После нажатия редактор ожидает следующего символа. Затем, когда он будет введен, редактор заменяет символ под курсором на введённый. Нетрудно догадаться, что r означает replace. Подобных команд в виме не одна сотня. И многие из них могут комбинироваться в довольно сложные цепочки, позволяя творить чудеса.

    Сама система команд, при этом, выстраивается в логичную систему, где всё имеет смысл и находится на своем месте. Причем, не только с точки зрения обозначений (i — inner, a — around и так далее), но и с точки зрения расположения на клавиатуре. Из этого, кстати, следует интересный вывод: если ваша раскладка не qwerty, то вся клавиатура «поедет», и пользоваться вимом станет невыносимо больно.

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

    Ключевое место в этой структуре имеет клавиша под названием Leader. Это не какая-то конкретная клавиша, она разная у разных пользователей, хотя сейчас, как правило, все используют пробел. Дело в том что большая часть пользовательских комбинаций (и тех кто предоставляют плагины), делаются как раз через лидер. В конфигурации она обозначается как .

    vim cheat sheet by Max Cantor

    Но для полноценной работы одного режима normal недостаточно. Для перехода в режим редактирования insert, существует более 6 способов! Например ввод команды i приводит к тому, что ввод начинается прямо в том месте, где стоит курсор, а shift + a перемещает курсор в конец строки (требуется довольно часто), в свою очередь cc стирает ту строчку, где находится курсор и входит в режим редактирования.

    Для выхода из режима вставки в нормальный режим, достаточно нажать ESC.

    Кроме этих двух, у vim есть режим visual, который похож на normal, но используется исключительно для выделения текста. И еще один способ взаимодействия с редактором появляется после ввода символа : в нормальном режиме. Курсор перемещается вниз экрана, куда можно вводить различные команды. Так, например, делается выход из вим. В этой строке необходимо набрать q и нажать Enter. Команды, вводимые подобным образом, обычно обозначают так: :help . То есть необходимо набрать : затем слово help и затем нажать Enter.

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

    Мощь режима normal вы можете оценить хотя бы по тому, что абсолютно в каждом популярном редакторе есть плагин, эмулирующий работу vim и, как правило, это самый популярный плагин с огромным отрывом от всех остальных. Например, плагин в VS Code установили более миллиона раз.

    Другой, не менее интересный, а для многих, возможно, шокирующий пример популярности этого режима — программное обеспечение вокруг нас. Gmail поддерживает перемещение как в vim прямо в веб интерфейсе, Github тоже (попробуйте на странице любого репозитория набрать вопросительный знак на клавиатуре). В каждом браузере существует популярный плагин, позволяющий перемещаться по загруженным страницам в стиле вим. Все пейджеры, такие как less или more, также используют навигацию, портированную из вима. Соответственно, и все программы, использующие пейджеры, например git log (и другие команды git). Даже в bash достаточно набрать set -o vi , как командная строка превращается в vi (без m). Кстати, по умолчанию, в bash включен режим emacs с горячими клавишами из этого редактора.

    Наличие режимов — ключевая, но не единственная причина. Вторая, не менее важная — буферы. В обычных редакторах есть чёткое разграничение на табы с файлами и другие панели, такие как файловое дерево, встроенный терминал, окно вывода ошибок, окно конфигурации, окно отладки и так далее. Все эти сущности живут своей жизнью. У них свои правила работы и отображения, свой набор горячих клавиш и способ перемещения внутри них (если такое перемещение вообще возможно).

    В виме любой кусок редактора, открытый в своей собственной рамке — всего лишь текстовый буфер независимо от того, как он используется. Автоматически это означает единый способ взаимодействия с этими буферами. Например, упоминавшийся выше / поиск прекрасно работает в любой части редактора. То же самое касается перемещения с hjkl . Содержимое такого буфера можно копировать стандартными средствами как, целиком так и по выделению, его можно закрыть через команду, предназначенную для закрытия буфера (опять же, независимо от его внутренней структуры). Можно даже открыть больше буферов, чем места на рабочей области. Одни буферы могут спокойно перекрывать другие, что не помешает переключению между ними. Буферы настолько удобны, что несмотря на наличие табов (вкладок) в вим, пользуются ими крайне редко.

    Еще одно внезапное преимущество появляется из-за текстовой природы самого редактора. Так как он открывается прямо во вкладках терминала, а продвинутые терминалы имеют такую возможность как split окна, то интеграция терминала внутрь vim особо не нужна и с помощью комбинации вкладок терминалов и вима можно очень удобно настроить рабочий процесс.

    Терминал iTerm 2 со split-окнами

    Возможности, описанные выше, не даются бесплатно. Существуют определенные пререквизиты. Главный из которых — слепая десятипальцевая печать. Опыт показывает, что если программист печатает вслепую, но не по десятипальцевой схеме, то он либо вообще не может адаптироваться, либо постоянно испытывает дискомфорт. Если же человек пока не научился печатать вслепую вообще, то изучение вима стоит отложить на будущее.

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

    Но и здесь есть подводные камни. В те времена когда появился vim, клавиатура выглядела иначе. И в том месте где сейчас caps lock и tab, были ctrl и esc. Последние используются в виме на полную катушку. Если ничего дополнительно не предпринимать, то придется очень серьезно выламывать себе руки (попутно зарабатывая туннельный синдром). Поэтому, первое что делают вимеры, переключают ctrl на caps lock, а для esc пользуются либо стандартной кобминацией ctrl + [ , которая легко дается с перемещенным ctrl для тех кто хорошо владеет слепым десятипальцевым методом, либо используют комбинацию jj , которую определяют самостоятельно.

    Клавиатура терминала ADM-3A

    В мире вима есть одна деталь, серьезно влияющая на количество его пользователей. В отличие от современных редакторов, в которых настройка выполняется переключением галочек либо изменением значений в json-файле, вим требует поддержки своего файла конфигурации и ручном управлении буквально всем. В виме нет механизма для просмотра и установки плагинов прямо из редактора. Каждый плагин необходимо самостоятельно найти на гитхабе и вписать в этот файл. Если нужна дополнительная конфигурация, то в этом же файле её и нужно сделать. Сам конфигурационный файл использует язык программирования VimL, тот же, на котором написан сам редактор. К сожалению, не получается один раз настроить его и забыть. Несмотря на то, что в сети огромное число примеров этих конфигурационных файлов, постоянно приходится что-то подкручивать, заменять плагины и дописывать новые горячие клавиши.

    Фрагмент файла конфигурации vim

    Когда не стоит учить вим

    • Если вас целиком устраивают обычные редакторы
    • При недостаточном владении слепой печатью
    • Вы не готовы возиться с конфигурацией, а хотите чтобы редактор просто работал
    • Вы емаксер (тогда учите spacemacs)

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

    Другой важный аспект — готовность принять идеологию вима. Нередко происходит ситуация, когда программист садится за вим и при этом не начинает пользоваться вимом. Он продолжает использовать стрелки и практически не выходит в командный режим. Такой способ обучения виму самый опасный. Как только произойдет привыкание, переучить себя будет неимоверно сложно. Немалое число людей, считающих себя вимерами, не используют вим и в действительности работают крайне неэффективно.

    Обучение виму — процесс сложный морально. Дело в том, что опыт сам по себе не делает вас лучше в чем-то. Научившись как-нибудь набирать текст, человек и через много лет будет делать это как-нибудь (не по скорости, а по эффективности работы с ним). То же самое касается использования редакторов.

    Для повышения своей эффективности необходимо постоянно наблюдать за своими действиями, отслеживать те, что занимают слишком времени, читать статьи и книги в поисках новых способов решения старых проблем. Такой подход, конечно же, важен не только при работе с вимом и даже не только в программировании, но именно в виме по-другому успеха достичь невозможно. Во время обучения нельзя себе давать слабину и действовать из принципа «сейчас сделаю хоть как-нибудь, а потом разберусь». Незаметно для вас сформируются неправильные привычки и дальнейший рост остановится. Если вы к этому не готовы, то изучение стоит отложить.

    Сколько понадобится времени

    Если следовать советам выше и постоянно правильно практиковать вим, то время от «любое действие занимает минуту» до «могу неспешно работать периодически подсматривая в документацию» займет около месяца. Дальше процесс пойдет легче, но останавливаться в развитии на этом этапе нельзя. Оттачивание всех необходимых навыков может занять и год. Но не стоит пугаться. В любом случае через месяц-два вы сможете вполне сносно работать.

    NeoVim

    Некоторое время назад был основан проект NeoVim. Это форк вима, разрабатывающийся энтузиастами. Сейчас он очень популярен и работает лучше, чем оригинальный Vim. Совместимость с плагинами почти полная, к тому же, большинство плагинов сейчас делаются с прицелом и на nvim тоже. Наша рекомендация использовать как основной редактор именно nvim.

    Процесс обучения

    Поставьте nvim и vim (с поддержкой python3).

    Не все шаги, описанные ниже, нужно выполнять последовательно. То что можно делать параллельно, стоит делать параллельно. В любом случае перед тем, как решиться распробовать вим, стоит пройти официальный vimtutor который идет в поставке с самим вимом. Он проведет вас через все базовые команды и даст представление о том, как все работает. Откройте терминал и наберите vimtutor , при необходимости установив vim . После него можно браться за интерактивные учебники, описанные в полезных ссылках ниже. Делать это стоит одновременно с практикой работы с настоящим вимом.

    Распечатайте и изучите vim cheatsheets: http://www.viemu.com/vi-vim-cheat-sheet.gif

    Научитесь использовать возможности вашего терминала — сплиты/табы используя горячие клавиши.

    Измените маппинги клавиш как описано выше.

    Дальше есть два пути. Либо брать и с нуля настраивать свой собственный .vimrc (конфиг), что невероятно сложно и затратно на первых порах, либо, что лучше, взять готовую сборку и сосредоточиться на владении самим вимом. А затем, постепенно разбираться с тем как все устроено внутри и по необходимости делать собственную сборку. Я рекомендую использовать свою сборку. Она вобрала в себя лучше практики и практически не содержит самописного кода. К тому же, внутри неё используются самые современные плагины. Внимательно изучите Makefile и выполните все необходимые команды. В процессе работы постоянно смотрите в файл vimrc и изучайте его содержимое вместе с установленными плагинами. Все плагины хостятся на гитхабе вместе с их документацией.

    Научитесь работать с пакетным менеджером plug. С него начинается вход в vim.

    Изучение самого вима включает два аспекта. Первый, работа внутри буфера. К нему, как раз, относится та самая навигация и владение базовыми командами по модификации и перемещению. Второе, навигация по проекту и управление файловой структурой. Управление файловой структурой (создание, переименование и удаление) производятся плагином NERDTree, а для навигации существует три основных и несколько дополнительных способов. Основные: нечеткий поиск (fzf), переключение между буферами (bufexplorer) и перемещение по файловому дереву (NERDTree). Все они важны и используются постоянно. Несмотря на то, что вим поддерживает табы, вимеры редко ими пользуются, но даже если и пользуются, то не для тех целей, для которых табы используются в обычных редакторах. К дополнительным способам навигации относятся прыжки по последним модификациям (вим их запоминает и позволяет ходить вперед назад), а так же комбинация gf , означающая “go to file”.

    Изучите набор плагинов подходящих под ваш стек и установите его. В интернете много статей для настройки практически любого стека разработки. Единственная рекомендация, смотрите плагины основанные на lsp

    Полезные ссылки

    • vim-adventures.com — игра с управлением как в виме
    • www.openvim.com — интерактивный учебник
    • vimgenius.com — еще один учебник
    • vimgolf.com — фановый проект, в котором участники соревнуются кто выполнит модификацию текста с наименьшим числом нажатий
    • Learn Vim Progressively — небольшой гайд по освоению vim от простых команд к сложным
    • vim-bootstrap.com — генератор преднастроенной конфигурации для vim для работы с различными языками. Список горячих клавиш здесь
    • Andrew8xx8/vimpractise — практические задания для использования команд
    • Vim — викиучебник
    • Вебинар Hexlet об использовании vim

    Периодически стоит заглядывать в документацию. Её также можно открыть в самом vim используя команду :help .

    Плагины

    Самый удобный способ искать плагины для vim — vimawesome.com.

    Ниже список основных плагинов, без которых вим не вим:

    Главный плагин с которого все начинается — vim-plug — пакетный менеджер, управляющий всеми зависимостями.

    • tpope/vim-sensible — плагин устанавливающий правильные значения по умолчанию для многих конфигурационных параметров.
    • jlanzarotta/bufexplorer — навигатор по открытым буферам. Фактически, замена табов в обычных редакторах.
    • tpope/vim-surround — плагин расширяющий возможности редактирования при работе с парными элементами, такими как скобки или кавычки.
    • neoclide/coc.nvim — движок, через который подключаются и работают анализаторы кода для всевозможных языков. Как правило для его работы нужно устанавливать консольные утилиты, сам coc проверки не делает.
    • scrooloose/nerdtree — файловое дерево. Позволяет не только перемещаться, но и модифицировать файловую структуру.
    • tpope/vim-commentary — комментирование кода на любом языке
    • junegunn/fzf.vim — нечеткий поиск. Основной инструмент навигации по файлам.
    • dyng/ctrlsf.vim — поиск по файлам проекта
    • vim-airline/vim-airline — статусная строка внизу экрана. Выводит множество полезной информации.

    Кроме них понадобится и множество других. Например, под каждый язык есть свой собственный набор плагинов, информацию о которых можно почерпнуть гуглением либо просмотром содержимого репозитория https://github.com/sheerun/vim-polyglot.

    Советы

    Хотя вим и позволяет практически любую модификацию произвести чуть ли не в одну составную команду, злоупотреблять таким подходом не стоит. Например, задача «удалить три слова» уже требует умственного напряжения, если делать её одной командой. Гораздо проще вызвать удаление слова руками три раза. Баланс между одной сложной и набором простых команд придется искать самостоятельно. Важно дойти до уровня, когда вам не нужно задумываться над тем «а что мне сейчас набрать чтобы выполнить эту задачу?».

    Периодически просто открывайте документацию установленных плагинов и читайте её. Каждый раз вы будете находить что-нибудь новое и полезное.

    Не забывайте обновлять плагины, делается это командой :PlugUpdate , а сам пакетный менеджер обновляется командой :PlugUpgrade .

    Редактор, из которого не выйти. Как перестать бояться Vim и начать его использовать

    Содержание статьи

    Самый странный редактор

    На первый взгляд Vim выглядит очень и очень странно. Знакомство с ним сопровождается страшными мучениями, когда ты просто не можешь понять, что происходит. Редактор либо вообще не реагирует на нажатия клавиш, либо ведет себя крайне неадекватно. Ты пишешь слово door, а вместо этого Vim переходит на новую строку и вставляет or. Ты стираешь эту галиматью и снова пробуешь что-то написать — и, о чудо, на экране действительно появляется текст.

    А потом его опять начинает глючить.

    Спустя несколько попыток разобраться, как это работает, и бесчисленное множество матерных слов ты идешь в интернет и узнаешь, что Vim — двухрежимный редактор. Писать текст здесь можно только в режиме ввода (INSERT), для перехода в который следует нажать кнопку i или Insert.

    Основной же режим, для выхода в который используется Esc, здесь предназначен для ввода, как тебе на первый взгляд кажется, хоткеев. Причем состоять они могут всего из одной клавиши: w — передвигает курсор к следующему слову, — в начало строки, $ — в конец строки, A переводит курсор в конец строки и переключает редактор в режим ввода, u — аналог Ctrl-Z в нормальных редакторах.

    Погуглив еще немного, ты обнаруживаешь, что есть также «хоткеи» из двух и более последовательных нажатий. Такие, как, например, dd, который удаляет всю строку, и dw, удаляющий слово, gg и GG, которые перемещают курсор в начало и конец документа.

    Немного привыкнув, ты уже можешь кое-как прыгать между режимами и вводить эти странные хоткеи — они даже начинают казаться тебе удобными, но один вопрос все-таки тебя не покидает:

    — Зачем здесь эти режимы?!

    «Хоткеи» Vim действительно удобны благодаря своей лаконичности, но разве необходимость переключаться между режимами не убивает все их удобство? Разве не проще нажимать пусть и требующие больше движений горячие клавиши в нормальных редакторах, чем мотаться взад-вперед между режимами? Да, может быть, сорок лет назад, когда на клавиатурах не было Ctrl и Alt, это и было оправданно, но сейчас-то зачем?

    Так и заканчивает знакомство с Vim среднестатистический пользователь. Некоторое время он, конечно, еще потратит на то, чтобы найти выход, но затем забудет, как страшный сон, и вернется к своему любимому Sublime. А уж в условиях сурового сервера и nano сойдет.

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

    23 мая 2020 года вопрос «Как выйти из Vim?» набрал один миллион просмотров на Stack Overflow

    Философия Vim

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

    Истина первая. Разделение режимов Vim имеет абсолютно логичный утилитарный характер. В одном режиме ты пишешь текст, во втором редактируешь. В современных редакторах эти границы размыты, мы привыкли писать и тут же редактировать, стирать, снова писать. В режиме ввода Vim позволяет это делать, но в очень ограниченных пределах: написал не ту букву — стер, написал другую. Все остальное — в режиме редактирования (основной режим).

    Истина вторая. «Хоткеи», доступные в режиме редактирования, — это вовсе не хоткеи, а мощная система команд с аргументами, циклами и регистрами. При использовании Vim ты ни в коем случае не должен мыслить стандартным образом: сейчас я тыкну мышкой на том слове, потом нажму Backspace столько раз, сколько потребуется, чтобы его стереть, напишу другое слово, а потом перемещу курсор обратно. Вместо этого ты должен отдать редактору команду: замени вон то слово на это и верни меня обратно.

    Чтобы проиллюстрировать этот принцип, взглянем на простой пример. Допустим, ты просматриваешь только что написанный текст и решаешь, что в абзаце, на котором в данный момент расположен курсор, последнее предложение лишнее и его следует удалить.

    Первая идея, которая придет тебе в голову, — взять мышку, выделить последнее предложение, выбрать в меню «Вырезать» или нажать Del. Звучит просто и логично, но что ты скажешь про это?

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

    Что они значат? Давай разберемся:

    • > — команда перемещения, перебрасывает курсор в конец абзаца;
    • d — команда изменения, а именно удаления (d — delete);
    • ( — команда перемещения, перебрасывает курсор в начало предыдущего предложения.

    Так как команды перемещения могут быть аргументами команд изменения, вся команда на человеческом языке звучит так: > — переместить курсор в конец абзаца, а затем d( — удалить все символы до начала предыдущего предложения. А если совсем просто: удалить последнее предложение текущего абзаца.

    Команды можно повторять, например: 3> — переместить курсор на три абзаца вперед, >d2( — удалить два последних предложения в абзаце, 3J — объединить следующие три строки в абзац (J — Join), 3w — перейти на три слова вперед (w — word), 50G — перейти к пятидесятой строке (G — Go).

    У Vim хорошая документация, просто набери :help и следуй инструкциям

    Другой пример: ты опять же просматриваешь готовый текст и замечаешь слово Windows, которое лучше заменить на Linux. Решение в лоб — поставить курсор перед ним, нажать клавишу Del нужное количество раз, затем написать другое. Решение в затылок — переместить курсор на слово, нажать извращенную трехпальцевую комбинацию замены слова и написать другое. Правильное решение:

    • /Win — команда перемещения с помощью поиска (в данном случае ищем Win);
    • cw — команда замены (c — change) с аргументом «слово» (w — word);
    • Linux — новое слово.

    Чтобы просто удалить слово, можно использовать такую команду: /Windw (dw — delete word). Обрати внимание: в отличие от «поиска и замены» тебе не обязательно писать слово целиком. Более того, ты можешь сделать то же самое другими методами. Например, если слово Windows второе в третьем предложении, заменить его можно так: <3)wcwLinux.

    Теперь о том, как редактировать код. Представь, что ты пишешь или просматриваешь свой код и замечаешь, что метод текущего класса, вызов которого находится под курсором, используется только здесь и поэтому его лучше сделать приватным. То есть тебе надо перейти к декларации метода и вставить перед ним слово-модификатор private .

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

    Пользователь Vim сделает так:

    • gd — переходим к определению функции или метода (gd — go definition);
    • i — переключаемся в режим ввода;
    • private — слово-модификатор и пробел;
    • Esc — возвращаемся в обычный режим;
    • « — прыгаем туда, где были до перехода (возвращаем курсор обратно).

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

    Второй момент: как и современные инструменты разработки, Vim имеет в своем арсенале огромное количество средств для повышения эффективности. Например, ты можешь заранее забить в конфиг Vim аббревиатуры: придумать для private псевдоним #p, который будет разворачиваться в private. А можешь повесить всю команду на одну комбинацию клавиш. Плюс для Vim есть несметное количество плагинов, которые облегчают разработку.

    Кстати, обрати внимание на команду «. Это команда ` (переход к метке) с аргументом ` (метка, которую редактор автоматически устанавливает перед любым перемещением курсора). Вместо « можно использовать `., которая перебрасывает курсор к последнему отредактированному месту. Метки можно ставить и самостоятельно с помощью команды m, за которой следует буква. Например, ma — поставит метку «a», вернуться к которой можно с помощью `a или ‘a (для перехода к началу строки).

    Это опять же одна из стандартных функций редакторов, но Vim может сделать ее гораздо более мощной. Как ты уже должен знать, команды модификации текста принимают в качестве аргументов команды перехода, а это значит, что прыжок к метке тоже можно использовать в качестве аргумента. К примеру, удалить текст, начиная от текущего положения курсора до метки «a»: d`a.

    К слову, команды удаления Vim не удаляют текст безвозвратно, а помещают его в буфер (в терминологии Vim — регистр), поэтому стандартными средствами здесь можно делать вещи, для которых в других редакторах потребовался бы отдельный хоткей. Например, менять две строки местами: ddp. Команда dd удаляет текущую строку (после чего курсор перемещается на следующую), p (paste) — вставляет текст из регистра под текущей строкой.

    Вместо удаления строку можно просто скопировать с помощью yy (y — yank), а затем вставить с помощью все той же команды p. Объединим эту возможность с повторением команд и получим быстрый способ вставки множества одинаковых строк: yy10p.

    Нарисовать линию ———- можно так: вводим символ — , затем переключаемся в обычный режим с помощью Esc и вводим команду x10p (x вырезает символ под курсором, 10p вставляет его десять раз).

    Команда . выполнит предыдущую команду. И да, ее тоже можно зациклить: 3. — повторить предыдущую команду три раза. Команда qa начнет запись макроса с именем «a», остановить запись можно нажатием q. Выполнить макрос: @a.

    Vim поддерживает огромное количество других команд, и первое время ты будешь теряться в том, как и что здесь работает. Однако большая часть функций тебе не понадобится. Ты должен заучить базовые команды модификации текста (удаление, вставка и так далее) и базовые команды перемещения (прыжки по словам, строкам, абзацам, блокам кода, меткам и прочему). Просто объединяй их, и ты сможешь сделать практически все в несколько нажатий кнопок.

    Командный и визуальный режимы

    Называя приведенные в предыдущем разделе комбинации клавиш командами, я нарочно отошел от стандартной терминологии Vim, чтобы как можно более четко объяснить, как это все работает. На самом деле в Vim есть отдельный командный режим, больше похожий на классическую командную строку, и он позволяет делать еще более продвинутые вещи.

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

    Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

    Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

    Мастер Йода рекомендует:  Как компьютер генерирует случайные числа
    Добавить комментарий