Vim linux как пользоваться

Обновлено: 06.07.2024

Данное руководство охватывает установку и базовое использование Vim.

Установка vim

Благодаря широкому использованию vim в командной строке Linux он доступен в репозитории по умолчанию почти каждого дистрибутива.

Для установки редактора на Ubuntu и Debian используйте команду apt-get:

sudo apt-get install vim

Чтобы установить vim на Fedora и CentOS, используйте yum:

sudo yum install vim

На Arch Linux vim можно установить с помощью pacman:

sudo pacman -S vim

Итак, теперь Vim установлен.

Начало работы c Vim

При вызове без аргументов Vim по умолчанию открывает пустой документ. В зависимости от дистрибутива Vim может сначала вывести вступление и лицензию, которые исчезнут сразу после начала работы с редактором.

Тем не менее, сейчас запускать vim с чистого документа не нужно. Чтобы продемонстрировать возможности vim, можно создать новый документ под названием «newfile»

echo "This is a new file.
Here is the second line
And here is the third line.
Some more text is on this line. We will edit this file in vim.
It will be great fun." >> newfile

Теперь откройте только что созданный файл.

Модальное редактирование

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

Обычный режим

Используется для редактирования операций. Копирование, вставка, перемещение, удаление и изменение текста осуществляются в этом режиме.

Vim выполняет редактирование в «обычном» режиме. В данном режиме редактор находится при запуске. Этот режим используется для быстрого перемещения и редактирования текстового документа. Он не используется для ввода текста.

  • [esc] – чтобы перейти в обычный режим, нажмите клавишу «escape».

Режим вставки

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

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

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

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

Третий режим, который использует Vim, называется визуальным. Участки текста выделяются как цель для команд редактирования или форматирования.

  • v – устанавливает обычный визуальный режим. Выбор осуществляется путем перемещения курсора вверх, вниз, влево и вправо.
  • V – устанавливает режим визуальной строки. Выбираются целые строки, от первого до последнего символа, путем перемещения вверх и вниз.
  • [ctrl]-v – Переход в режим визуального блока. Блок для выбора можно расширить и сузить. С помощью этого метода можно выбрать отдельные части нескольких строк.

Командный режим

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

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

Перемещение по тексту в редакторе vim

Основы перемещения

Перемещаться по тексту всегда можно при помощи клавиш со стрелками, но Vim предоставляет и более быстрые способы перемещения по документу. В обычном режиме можно использовать клавиши h, j, k и l для передвижения влево, вниз, вверх и вправо соответственно.

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

Расширенное перемещение

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

Редактирование

Редактирование текста в Vim осуществляется путем запуска команд в обычном режиме.

Важно понимать, что команды редактирования в Vim очень мощны в сочетании с операторами движения. Все опции, описанные в главе о перемещении, могут быть использованы в качестве направления. К примеру, команду редактирования слова можно выполнить при помощи внесения флага «w».

Ниже приведены несколько действий, которые можно использовать:

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

  • x – удаляет символ под курсором.
  • d – удаляет символ в направлении, указанном после ввода команды. Например, «dl» удаляет символ справа.
  • dd – удаляет строку.
  • D – удаляет текст от текущей позиции курсора до конца строки.

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

  • r – заменяет символ под курсором. Укажите символ, который нужно заменить, в конце команды.
  • c – изменяет текст в указанном направлении. К примеру, «cw» изменяет текущее слово. После выполнения этой команды vim переходит в режим вставки, так что можно ввести текст для замены.
  • C – изменяет текст до конца строки. Данная команда также переводит vim в режим вставки.

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

Прочее редактирование

  • u – отменить последнее действие.
  • <ctrl>-r – повторить последнее действие.
  • J – соединить текущую строку со следующей.

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

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

  • :q – выйти из vim. Если изменения не были сохранены, это не удастся.
  • :q! – выйти из vim, не учитывая все несохраненные изменения.
  • :w – сохранить изменения. Нажмите пробел и введите имя файла, чтобы сохранить документ в другое место; если это первое сохранение, укажите место для сохранения.
  • :e – отредактировать следующий файл.
  • :bn – отредактировать следующий открытый в vim файл.
  • :bp – отредактировать предыдущий открытый в vim файл.

Итоги

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

К примеру, чтобы скопировать (yank) 4 слова (words), просто переведите эту фразу на понятный vim язык. В данном случае получится:

Чтобы удалить (delete) текст с текущей строки и до конца файла, введите:

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

Заглавная версия команды редактирования чаще всего нацелена от текущей позиции курсора до конца строки. К примеру, чтобы изменить текст от текущей позиции курсора до конца строки, используйте:

Чтобы выполнить эту же команду на несколько строк, просто добавьте к команде числовой префикс. Это изменит текст от текущей позиции курсора до конца следующей строки:

Существует целое множество мощных техник использования vim, не вошедших в данное руководство. Чтобы получить больше информации, используйте встроенный в vim мануал. Он не охватывает сложных тем, но дает представление о том, как работать и выполнять базовое редактирование с Vim. Для запуска учебника используйте:

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

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

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

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

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

25–27 ноября, Онлайн, Беcплатно

В умелых руках 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 - консольный текстовый редактор, являющийся расширенной версией vi с дополнительными функциями, которые включают в себя: подсветку синтаксиса, полноценную систему помощи, встроенную поддержку скриптов (vimscript), визуальный режим для простоты выделения и сравнение файлов (vimdiff).

Contents

Установка

Установите один из следующих пакетов:

  • vim — с поддержкой Python 2/3, Lua, Ruby и Perl, но без поддержки GTK/X.
  • gvim — идентичен vim , но c поддержкой GTK/X.
  • Пакет vim собран без поддержки Xorg; отсутствует компонент +clipboard , поэтому Vim не сможет оперировать с основным и обменным буфером. Пакет gvim предоставляет доступ также и к Vim с интерфейсом командной строки, но с поддержкой +clipboard
  • Неофициальный репозиторий herecura предоставляет несколько версий Vim/gVim: vim-cli , vim-gvim-common , vim-gvim-gtk , vim-gvim-qt , vim-rt and vim-tiny .

Использование

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

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

Настройка

Файл конфигурации Vim для конкретного пользователя расположен в домашней директории -

/.vimrc , файлы текущего пользователя в

/.vim/ . Общий файл конфигурации -

/.vimrc , а общие файлы находятся в /usr/share/vim/ .

Примечание: Более ли менее стандартное поведение - например, подсветка синтаксиса - определяется в defaults.vim , который загружается, когда отсутствует

/.vimrc . Добавьте let skip_defaults_vim=1 в /etc/vimrc для полного отключения загрузки defaults.vim . [1]

Буфер обмена

Такие команды Vim как :yank или :paste работают с безымянным регистром, который по умолчанию соответствует регистру "* . Если доступна +clipboard , то регистр "* отображается в PRIMARY буфер в X.

Чтобы изменить стандартный регистр на "+ , используйте :set clipboard=unnamedplus . Регистр "+ соответствует CLIPBOARD буферу в X.

Для более подробной информации смотрите :help 'clipboard' .

Совет: Для копирования и вставки могут быть созданы горячие клавиши. Смотрите, например, [2] для ctrl+c , ctrl+v и ctrl+x .

Подсветка синтаксиса

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

Отступы

Отступы для определенного типа файла:

Визуальный перенос

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

Изначально перенос строки происходит ровно в том месте, где размещается последний ее символ, поместившийся на экране, даже если он находится в середине слова. Для более умного переноса используйте опцию linebreak . Когда эта опция включена командой set linebreak , перенос строки происходит только после символов, которые перечислены в опции breakat , которая по умолчанию содержит в себе пробел и некоторые знаки препинания (смотрите :help breakat ).

Остаток строки обычно начинается с начала следующей линии, без всякого отступа. Опция breakindent сообщает Vim, что необходимо отображать перенесенный остаток строки с отступом, так, что на всех последующих линиях перенесенные части строки имеют тот же отступ, что и начало этой строки. Поведение breakindent может быть настроено при помощи опции breakindentopt . Например, для файлов исходного кода на языке Python может быть полезно добавлять дополнительный отступ в 4 пробела для перенесенных частей длинной строки (подробнее смотрите в :help breakindentopt ):

Использование мыши

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

    /urxvt
  • Консоль linux с gpm (смотрите подробнее на странице Console mouse support)

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

Опция mouse=a устанавливается в defaults.vim

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

По умолчанию, при нажатии ← в начале строки или → в конце, курсор не переводится на следующую/предыдущую строку.

Объединение файлов

Vim включает в себя diff-редактор (программа, которая отображает различия между двумя файлами и позволяет удобно их объединять). Используйте vimdiff для этого — просто укажите ей пару файлов: vimdiff файл1 файл2 . Ниже приведен список команд vimdiff.

Действие Горячая клавиша
следующие изменение ]c
предыдущее изменение [c
diff obtain do
diff put dp
развернуть блок zo
свернуть блок zc
перечитать файлы :diffupdate
переключить окна Ctrl+w+w

Советы и рекомендации

Нумерация строк

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

Переход к новой строке осуществляется посредством :line number или line numbergg . Все переходы запоминаются в лист переходов, для более подробной информации смотрите :h jump-motions .

Проверка орфографии

Проверку орфографии в Vim можно включить с помощью:

По умолчанию установлен только английский словарь. Другие словари можно найти в официальных репозиториях по запросу vim-spell . Еще больше словарей можно найти в FTP-архиве Vim. Словари необходимо поместить в каталог для словарей —

/.vim/spell/ . Включить словарь можно командой :setlocal spell spelllang=ru_yo (заменив ru_yo на имя нужного словаря).

Действие Команда
следующая ошибка ]s
предыдущая ошибка [s
предложения для исправления z=
добавить правильное написание zg
добавить правильное написание (на сеанс) zG
добавить неправильное написание zw
добавить неправильное написание (на сеанс) zW
повторить проверку орфографии во всем файле :spellr

    Чтобы включить проверку сразу для двух языков (например, английского и русского), добавьте set spelllang=en,ru в

/.vimrc или /etc/vimrc и перезапустите Vim. Или поместите строку autocmd BufRead,BufNewFile *.txt setlocal spell в

Сохранение позиции курсора

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

Запуск Vim по команде vi

Создайте псевдоним для vi на vim .

Если вы хотите, чтобы при вводе sudo vi запускался vim , то установите пакет vi-vim-symlink AUR , который удалит vi и заменить его символической ссылкой на vim .

Возврат каретки DOS/Windows

Если вы видите последовательность ^M в конце каждой линии, это означает, что вы редактируете текстовый файл, который был создан в MS-DOS или Windows. Дело в том, что в Linux для переноса принято использовать один символ новой строки (LR), тогда как в системах Windows/MS DOS для той же цели используется последовательность из двух символов: возврата каретки (CR) и новой строки (LR). Как раз эти символы возврата каретки и отображаются в виде ^M .

Для удаления всех символов возврата каретки из файла, выполните:

Обратите внимание, что ^ здесь — управляющий символ, а не обычный. Чтобы ввести управляющую последовательность ^M , нажмите Ctrl+v,Ctrl+m .

Также вы можете просто установить пакет dos2unix и исправлять файлы командой dos2unix файл .

Примечание: Другой простой способ заключается в изменении опции fileformat . Используйте set ff=unix для преобразования файлов с окончанием строки DOS/Windows в файлы с окончанием строки Unix. Для того, чтобы сделать обратное, просто используйте set ff=dos .

Пустое пространство в нижней части окон gVim

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

Решение заключается в регулировании количества места, которое будет резервировать в нижней части окна gVim. Поместите следующую строку в

Примечание: Установив значение 0, вы не сможете видеть горизонтальную полосу прокрутки внизу окна.

Плагины

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

Совет: For a list of popular plugins, see Vim Awesome)

Установка

Используя встроенную систему управления пакетами

В Vim 8 добавлена возможность загрузки сторонних плагинов. Чтобы использовать эту функциональность, переместите плагины в

Используя менеджер плагинов

Менеджер плагинов позволяет устанавливать плагины и управлять ими одинаковым образом независимо от того, на какой системе вы запускаете Vim. Он представляет собой специальный плагин, который выполняет роль пакетного менеджера для других плагинов.

    — в настоящее время наиболее популярный менеджер плагинов Vim. - минималистичный менеджер плагинов для Vim, который имеет много особенностей, например, загрузка плагинов по запросу и параллельное обновление. — простой плагин для управления переменной runtimepath. - менеджер плагинов, заменяющий NeoBundle, доступен как vim-dein-gitAUR .

Из репозиториев Arch

Группа vim-plugins объединяет множество разнообразных плагинов. Используйте команду pacman -Sg vim-plugins для отображения списка пакетов, которые вы можете затем установить, используя pacman.

cscope

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

Скопируйте стандартный файл cscope, который Vim будет автоматически читать:

Примечание: Вам наверное понадобится откомментировать следующие строки в

/.vim/plugin/cscope_maps.vim , чтобы включить горячие клавиши cscope в Vim 7.x:

Создайте файл, который содержит список файлов для индексации (cscope может обрабатывать множество языков, но для примера мы возьмем файлы на Си/Си++ с расширениями .c, .cpp и .h):

Создание файлы базы данных, которые cscope будет читать:

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

Горячие клавиши по умолчанию:

Не стесняйтесь изменять горячие клавиши:

Taglist

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


Покоряя редактор Vim

Vim – это легендарный текстовый редактор, способный на многое, но недружелюбный к новичкам. Его действительно придется покорять, но награда за труды будет достойной. Бросайте свои уютные современные редакторы, мы идем на Vim!

Что такое Vim?

В 1976 году родился отец Vim'а – текстовый редактор Vi. Он использовался для работы в терминалах и имел весьма непривычные методы работы в режиме редактирования текста. Vim (Vi IMproved) – это последнее, самое знаменитое воплощение Vi, его улучшенная, как следует из названия, версия. Он поддерживается любой платформой, какую вы сможете вспомнить, и даже имеет графический интерфейс.

Что за зверь Neovim?

Возможно, вы слышали о Neovim'е. Это современный форк классического Vim'а, отрефакторенный, легко расширяемый. Из коробки он уже не так суров, как его предшественник, с ним вполне можно иметь дело. Подробнее о Neovim – на neovim.io.

Почему Vim?

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

Текстовый редактор Vim специально создан для суперпроизводительности. Расположение каждой команды продумано до мелочей. Главные клавиши – прямо у вас под пальцами! В каждом режиме редактора собственный набор комбинаций, вам не требуется искривлять пальцы, пытаясь захватить все нужные кнопки разом.

Еще одно достоинство, которое делает Vim лучшим редактором в мире, – это адаптируемость. Его можно идеально настроить "под себя" (или под свою команду).

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

Подытожим цитатой из великолепной книги Практический Vim:

В руках эксперта Vim разрывает текст со скоростью мысли.

Пробуем Vim на вкус

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

Поставьте пальцы правой руки на hjkl . Теперь это ваша основная позиция. Эти клавиши перемещают курсор влево-вниз-вверх-вправо соответственно. Также можно перемещаться между целыми словами, используя:

  • w (word) – к началу следующего слова;
  • e (end) – к концу следующего слова;
  • b – к началу слова;
  • ge – к концу предыдущего слова.

Пользуясь этим клавишами, можно перейти к нужному месту файла и нанести удар высокой точности:

  • daw – удалилось слово (delete aword);
  • das – удалилось целое предложение (sentence);
  • dap – уничтожился абзац (paragraph)!

Вместо разрушения, можно заняться улучшением:

  • caw , cas , cap – изменят слово, предложение или абзац (change);
  • ctx – заменит все до первого символа x в текущей строке (change till x);
  • с$ – все до конца строки;
  • ci( - все между символами скобок;
  • ci" - все между двойными кавычками.

Возьмите простую строку:

и измените ее f'ci'Wat

На человеческом языке это означает: найди (find) следующий символ ', а затем замени (change) все внутри символов ' на WAT. <ESC> выходит из режима вставки в нормальный режим.

редактор Vim

Можно скопировать строку командой yy (от слова yank – vim-жаргон для копирования) и вставить ее ниже командой p (put).

Оператор yank работает точно так же, как d (delete) или c (change). Его можно использовать для копирования слов – yaw или предложений – yas . Двойные операторы ( yy , cc , dd ) действуют на целую строку.

Бессмысленный пример

Выполним уже знакомую команду f'ci'MAN :

Разгоняемся: kJ объединит две линии в одну ( k – подняться, J – объединить).

И полный восторг: c3w+ .

редактор Vim


Все это совершенно бессмысленно, но часть магии Vim мы все-таки увидели.

Для более длинных ходов можно использовать счетчики в формате , например:

  • 5j – спуститься на 5 строк;
  • d2w – удалить 2 слова;
  • c2s – изменить 2 предложения.

Есть более масштабные ходы:

  • H – перейти к верхней части видимой области в редакторе;
  • gg – перейти к верху файла;
  • L и G – нижняя часть видимой области и низ страницы соответственно;
  • < и >– перемещение вперед/назад на целый параграф;
  • % – перемещение между парными скобками.

Новую строку можно начать после текущей ( o ) или перед текущей ( O ).

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

  • . (точка) повторяет изменения;
  • ; – для действий, начатых с t , f , T , F ;
  • n – для повтора поиска.

Можно даже записывать наборы команд с помощью макросов.

Столько мощи, а ведь мы практически не вышли за границы нормального режима и даже не покинули учебный файл! А есть еще разделения (splits), вкладки, регулярные выражения, доступ к внешним инструментам, проверка орфографии, подсчет слов, 6 основных режимов и 6 дополнительных с бесконечными возможностями для настройки и расширения.

Путь Vim

Основа Vim – клавиатура. Все важные команды расположены продуманно и максимально эффективно:

Все операторы осмыслены и легко запоминаются, благодаря мнемоническим зацепкам:

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

Почему редактор Vim такой суровый?

Перейдем к темной стороне Vim, к крутой кривой обучения:

редактор Vim

и к недружелюбности:

редактор Vim

Несмотря на то, что эти проблемы несколько преувеличены, они все-таки существуют. Есть по крайней мере 3 вещи, которые этому способствуют:

  1. Необходимо умение печатать вслепую.
  2. Управление полностью с клавиатуры.
  3. Ужасное первое впечатление.

Слепая печать

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

Управление с клавиатуры

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

Лучший совет – начинайте с основ и постепенно расширяйте словарный запас:

  • справка – :help или просто :h ;
  • перемещение – hjkl ( :h movement или :h motion );
  • перейти в режим вставки текста – i ( :h insert );
  • вернуться в нормальный режим – <ESC> ( :h mode-switching );
  • сохранить файл – :w ( :h write );
  • выйти из редактора – :q ( :h quit );
  • открыть файл – :e ( :h edit ).

Обратите внимание на двоеточие перед большинством команд. Оно вызывает командный режим (ex mode).

Самый простой способ изучить редактор Vim – совместить его с вашим уютным редактором с помощью vim-режима. Так вы не попадете в положение Робинзона Крузо, сохраните все возможности обычного редактора и получите преимущества Vim.

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

  • vimtutor – небольшой встроенный учебник. Просто введите в терминале vimtutor (в neovim – :vimtutor ).
  • "Рогалики" – текстовые 2D RPG, в которых вы перемещаете персонажа с помощью тех же клавиш hjkl и учитесь лучше контролировать клавиатуру. – увлекательная vim-игра.

Плохое первое впечатление

Последний оплот суровости Vim – ужасное первое впечатление. Вы набираете vim (или mvim для Mac GUI, или gvim для Windows, UNIX GUI) – добро пожаловать:

редактор Vim

Вот с этого бледного экрана вы начинаете работу с лучшим в мире редактором. Откройте файл – нет подсветки синтаксиса:

редактор Vim

Очень неуютно, на этом моменте многие в ужасе убегают.

У вас может появиться соблазн использовать предварительно настроенную версию Vim. Безусловно, первое впечатление в этом случае будет лучше, но так вы не поймете, как настроен ваш инструмент, упустите самую суть. Это будет просто черный ящик.

Если вы не чувствуете в себе сил покорять редактор Vim, попробуйте что-нибудь из следующего:

Читайте также: