Найти тему
Vim

VimScript 20 [ Порядок в коде ]

Оглавление

| ч19. Строка статуса {status line} | Содержание | ч21. переменные, регистры let, set, "@... |

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

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

Комментирование

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

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

Будьте осторожны при написании чего-либо, что занимает больше нескольких строк Vimscript. Добавьте комментарий, объясняющий, что он делает, и, если есть соответствующая тема справки, укажите ее в комментарии!

Это не только принесет вам пользу, когда вы попытаетесь поддерживать его месяцы или годы спустя, но и поможет другим людям понять это, если вы поделитесь своим ~/.vimrc файлом на Bitbucket или GitHub (что я настоятельно рекомендую).

Группировка

Наши сопоставления для редактирования [ <leader>ev ] и выполнения [ <leader>sv ]~/.vimrc источников позволили быстро и легко добавлять в него новые элементы "на лету". К сожалению, это также облегчает выход его из-под контроля и затрудняет навигацию.

Один из способов борьбы с этим - использовать возможности свертывания кода Vim и группировать строки в разделы. Если вы никогда не использовали сворачивание Vim, вам следует изучить его как можно скорее. Некоторые люди (включая меня) считают его незаменимым в нашем повседневном программировании.

Сначала нам нужно настроить сворачивание для файлов Vimscript. Добавьте в свой ~/.vimrc файл следующие строки:

augroup filetype_vim
autocmd!
autocmd FileType vim setlocal foldmethod=marker
augroup END

Это подскажет Vim использовать marker - метод сворачивания для любых файлов Vimscript.

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

" Vimscript, настройка, сворачивания кода в vim файлах------- {{{
augroup filetype_vim
autocmd!
autocmd FileType vim setlocal foldmethod=marker
augroup END
" }}}

Вернитесь в обычный режим, наведите курсор на любую из этих строк и введите [ za ]. Vim будет сворачивать строки, начиная с [ {{{ ] и заканчивая [}}}]. Что бы развернуть строки назад нажмите ещё раз [ za ]. PS. Само собой перегрузите вначале ~/.vimrc (:source ~/.vimrc)

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

Однако файлы Vimscript являются особым случаем. Маловероятно, что кто-то, кто не использует Vim, будет читать наш код. Нам же особенно важно четко и продуманно группировать код при написании Vimscript, чтобы нам не сойти с ума.

Поэтому попробуйте эти свертки использовать как можно чаще и возможно, вы полюбите их.

Короткие имена

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

:setlocal wrap
:setl wrap

Я хотел же настоятельно вас предостерегаю от использования этих сокращений. Как в вашем ~/.vimrc, так и в ваших плагинах, которые вы напишете. Vimscript изначально лаконичен и загадочен. Делать его ещё более загадочным..., думаю радости вам это не добавит, а только усложнит его чтение. Даже если вы знаете, что означает определенная короткая команда, кто -то другой, читающий ваш код, может и не знать.

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

Упражнения

Просмотрите весь ваш ~/.vimrc и распределите строки по связанным группам. Некоторые места могут быть названы так: "Основные настройки", "Настройки, зависящие от типа файла", "Сопоставления" и "Строка состояния". Добавьте маркеры свертки с заголовками в каждый раздел.

Узнайте, как заставить Vim автоматически сворачивать всё при первом открытии файла. Посмотрите :help foldlevelstart

Проверьте свой ~/.vimrc на наличие сокращенных команд, измените все их на их полные имена.

Просмотрите свой ~/.vimrc и убедитесь, что в нём нет никакой конфиденциальной информации. Создайте репозиторий git или Mercurial, переместите в него файл и создайте символическую ссылку на этот файл ~/.vimrc.

Разместите его на Bitbucket или GitHub, чтобы другие люди могли его увидеть и получить идеи для себя.

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

| ч19. Строка статуса {status line} | Содержание | ч21. переменные, регистры let, set, "@... |