Как стать автором
Обновить

Настройка стартового экрана Vim

Время на прочтение 3 мин
Количество просмотров 19K

Вступление


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

Установка и базовая настройка


А поможет нам в этом плагин Startify.

Для управления плагинами Vim'а я использую Vundle, поэтому добавил в .vimrc следующий фрагмент:

Plugin 'mhinz/vim-startify'             " Nice start screen

При запуске Vim без указания файлов для открытия данный плагин показывает стартовый экран, на котором перечислены файлы, которые недавно редактировались, а также сессии Vim'а. Также можно указать список файлов, которые всегда будут присутствовать (закладки или bookmarks):

image

Для открытия файла теперь достаточно набрать число, которое расположено рядом с файлом в квадратных собках. Также определен ряд команд, например:
e — создать пустой буфер
i — создать пустой буфер и перейти в Insert-режим
q — выйти из Vim

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

let g:startify_bookmarks = ['~/.vimrc',]

Дополнительные настройки


Плагин позволяет также указать заголовок стартового экрана и подвал (footer). В документации в качестве примера приводится использование фортунок и коровы:

let g:startify_custom_header = map(split(system('fortune | cowsay'), '\n'), '"   ". v:val') + ['','']

image

Однако мне такой вариант не совсем нравится. Во-первых, фортунки иногда могут содержать довольно много строк и, как следствие, занимать почти весь экран. Во-вторых, хочется иметь тематические фортунки с советами по Vim. Поэтому я взял файл vim-фортунок с проекта vimtips-fortune, положил его в ~/.vim/fortunes и сформировал dat-файл:

strfile vimtips

После этого добавил следующую строку в .vimrc
let g:startify_custom_header = 
    \ map(split(system('fortune ~/.vim/fortunes | cowsay -W 60'), '\n'), '"   ". v:val') + ['','']

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

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

Настройка смены рабочего каталога


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

let g:startify_change_to_vcs_root = 1

В настоящий момент поддерживаются: git, hg, bzr, svn.

Такое поведение также не всегда целесообразно. Например, в нескольких моих проектах есть подпроекты, написанные на python. Эти файлы располагаются в отдельных подкаталогах. При открытии таких python-файлов было бы логичнее переключаться именно в этот подкаталог, а не в корневой git'а. Для реализации подобного функционала я использую плагин vim-rooter, который также изменяет рабочий каталог при открытии файла. Плагину можно указать список файлов-маркеров, до которых будет вестись поиск. Так как у меня в python-подкаталогах лежит файлов тегов tags, то я его добавил в список:

let g:rooter_patterns = ['tags', '.git', '.git/']

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

Во мой фрагмент .vimrc с настройками для vim-startify и vim-rooter:

" Startify
let g:startify_change_to_dir = 0
let g:startify_files_number = 8
let g:startify_bookmarks = ['~/.vimrc',]
let g:startify_skiplist = ['vimrc',]
let g:startify_custom_header = map(split(system('fortune ~/.vim/fortunes | cowsay -W 60'), '\n'), '"   ". v:val') + ['','']

" Rooter
let g:rooter_patterns = ['tags', '.git', '.git/']

Надеюсь, кто-то найдет изложенную информацию полезной для себя.
Теги:
Хабы:
+41
Комментарии 17
Комментарии Комментарии 17

Публикации

Истории

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн