Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Computer Skills
  2. Terminal
Computers

Основы конфигурации Vim

by
Difficulty:BeginnerLength:MediumLanguages:

Russian (Pусский) translation by Anton Lisovsky (you can also view the original English article)

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

Файл .vimrc

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

Этот файл пустой, так как он ещё не был использован. Данный туториал покажет вам, как им пользоваться.

Комментарии

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

Для файла .vimrc, всё, что находится после двойных кавычек, до конца строки, не используется. Следовательно, вы можете писать таким образом для себя пометки, чтобы вспомнить, что вы делали.

Теперь вы будите всегда знать, что команда set number включает нумерацию строк.

Опции и Переменные

Включить нумерацию строк и сделать её относительной, можно добавив в файл .vimrc:

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

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

Не ставьте оба set'а, которые мы рассматривали в .vimrc. Это включит опцию и тут же её выключит. Скоро, я покажу вам, как делать это более программным путем.

Если вам известно текущее состояние опции, переключение опции, может быть альтернативным вариантом установки необходимой опции. Переключить её можно посредством ! после названия опции. Это включит/выключит опцию:

Если же хочется узнать текущее значение опции, используйте ? после названия опции, например

Это вернёт нам number. Теперь, с этой информацией, вы всегда сможете узнать состоянии интересующей вас опции.

Если вы хотите изменить количество колонок, которое занимает нумерация на экране, вы можете присвоить значение опции numberwidth. Данный пример установит нумерацию в 4 колонки шириной:

Посмотрите сколько места подойдет вам для нумерации и добавьте данную опцию в ваш .vimrc.

Если вам понадобится создать переменную, используйте выражение let. К примеру:

Когда сохраните это в файле .vimrc (используйте свое имя в качестве значения переменной), можно отобразить его в режиме командной стоки с помощью :echo name

Показывает значение переменной

Поставив перед опцией префикс &, с ней можно обращаться, как с переменной. Показать значение опции можно таким образом:

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

echo &numberwidth должно показать значение 5.

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

b: Область видимости буфера—Переменная будет доступна только в текущем буфере
w: Область видимости окна—Доступна только внутри текущего окна
t: Область видимости вкладки—Доступна на текущей вкладке
g: Глобальная область видимости - Доступна везде
I: Локальная область видимости—Переменная доступна локально, для функции в которой была определена
s: Область видимости скрипта—Переменная является локальной, только для текущего скрипта
a: Область видимости аргумента—Переменная будет доступна только внутри функции
v: Глобальная область видимости—Используется для переменных определённых и используемых Vim

Правильное определение переменной в глобальной области видимости, будет выглядеть так:

Получаем информацию

Теперь когда вы знаете, как установить опции и определить переменные, вы, возможно, задаётесь вопросом: «Как найти различные опции?». Поискать в сети, одна из возможностей, но вся нужная информация находится в самом Vim. Напишите:

И Vim покажет все доступные опции в программе. Напечатав :let и нажав enter, покажет все переменные.

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

Функции

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

Для определения функции в VimScript, используйте:

Мне нравится обычная нумерация и относительная нумерация, но бывают моменты, когда относительную нумерация не нужна. Каждый раз печатать полную команду :set norelativenumber или даже :set relativenumber!, утомительно. Нам бы пригодилась функция для включения и выключения.

Вызвать функцию можно командой :call.

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

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

Для передачи параметров функции, вам нужно указать имя переменной внутри скобок. К примеру:

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

Основы настройки клавиш

Одна из самых полезный возможностей файла конфигурации — установить нужные вам действия, при нажатии каких-либо клавиш на клавиатуре. Приведём пример, вы часто переключаете относительную нумерацию строк. Чтобы не печатать :call TRelative каждый раз, использование горячей клавиши будет гораздо быстрее. Для этого нам пригодится команда map

С этой строкой в файле .vimrc, если нажать Control-T, относительная нумерация будет включаться и выключаться. Попробуйте теперь сами, установить клавишу для переключения обычной нумерации.

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

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

Чтобы предотвратить подобного рода ситуацию, вы должны добавить nore после режима и до map. Следовательно, nmap станет nnoremap, vmap станет vnoremap, и imap станет inoremap. Тем самым вы всегда будите ссылаться на сочетание клавиш, которое стоит по умолчанию. Эти команды гораздо безопаснее использовать в конфигурационном файле.

Заключение

В этом уроке я показал вам основы создания конфигурационного файла в Vim. Я показал как: комментировать код в этом файле, включать/выключать опции и определять переменные, создавать функции и настраивать горячие клавиши. Лучше способ запомнить пройденный материал — использовать полученные знания на практике.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.