понеділок, 22 лютого 2016 р.

Vim kung fu

- Ты хочешь научиться кунг-фу?
- Дааааа!
- Тогда Я и есть твой мастер!

из мультфильма "Панда Кунг-Фу"


Так же, как мастер Шифу и панда По обрели новый опыт и новый взгляд на старые вещи, так и Я путем попыток и ошибок изменил в корне свою работу с Vim. И как обычно, начну с краткой предыстории.
Мой рабочий компьютер обычно остаётся включенным несколько месяцев (рекорд uptime - 112 дней), а значит и всё программы, окна, вкладки остаются на месте. И вот наконец настал тот час, когда у меня в vim открыт большой проект, нужно внести изменения в 6 файлов, чтобы реализовать нужную фичу. При этом надо было выключить компьютер, и Я вспомнил, что в vim есть возможность сохранить сессию (команда mksession). Я сохранил, закрыл, проверил - что-то пошло не так. NERDTree вообще не загрузил дерево каталогов, появилось также дополнительные пустые окна, в общем - хаос и ужас. Конечно же, Я сразу начал искать в сети что да и как. Предлагались разные варианты с дописыванием своих функций в конфиге vim. Но, в ходе поиска Я наткнулся на пост человека по имени Josh Davis http://joshldavis.com/2014/04/05/vim-tab-madness-buffers-vs-tabs/.
И вот тут до меня дошло, а ведь действительно - файлы в vim открываются в буферах, всё остальное - это для удобного размещения на экране. Следуя этой статье, ссылкам в ней и поиска в сети с новым ключевым словом - буфер, Я взялся перенастраивать свой Vim и перепрывыкать к работе с файлами (буквально два дня работы с редактором и всё отлично). Теперь табы Я использую крайне редко, соответственно, удалил плагин NERDTreeTabs, оставил только NERDTree.
Итак, приступим к новой настройке моего (если вы это всё же читате, скорее всего и вашего) любимого текстового редактора.
Порядок действий:

1) установить git, если вдруг ещё не поставлен

2) установить плагин для работы с буферами (и не только), как в блоге того Джоша:

На данном этапе у вас должно получится что-то такое:


А чтобы сделать такое красивое, как у Джоша, надо ещё поработать:
3) скачать шрифты для powerline
git clone https://github.com/powerline/fonts.git ~/.fonts

4) регистрируем шрифты в системе:
fc-cache -vf ~/.fonts/

5) выбираем в настройках терминала нужный шрифт (не все подойдут, но можно смело выбирать "Meslo LG S for Powerline")

6) добавляем строчку в .vimrc:
let g:airline_powerline_fonts = 1
Это заполнит словарь символов новым шрифтом.

И теперь у вас должно получится как-то так:


И ещё для полного счастья взгляните на плагин Tagbar https://github.com/majutsushi/tagbar (не забудьте установить exuberant-ctags перед его использованием).
Конечно же, весь этот процесс можно максимально автоматизировать, для чего можно написать скрипт вроде такого:
#!/bin/bash
# Install Pathogen plugin and runtime manager
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

# Install plugins
git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree
git clone https://github.com/ctrlpvim/ctrlp.vim.git ~/.vim/bundle/ctrlp
git clone https://github.com/vim-airline/vim-airline.git ~/.vim/bundle/airline
git clone https://github.com/vim-airline/vim-airline-themes ~/.vim/bundle/airline-themes
git clone https://github.com/majutsushi/tagbar.git ~/.vim/bundle/tagbar

# Get fonts
git clone https://github.com/powerline/fonts.git ~/.fonts
fc-cache -vf ~/.fonts/

# Get vimrc
curl https://raw.githubusercontent.com/MasterSergius/conf_files/master/.vimrc -o ~/.vimrc

Здесь Я использую Vim Pathogen для управления плагинами, а готовый vimrc качаю из своего репозитория конфигурационных файлов (рекомендую и вам завести свой репозиторий). Единственное, что придётся сделать вручную - это выбрать шрифт в Терминале, но и это можно автоматизировать при желании. К примеру, в xfce сессии все настройки графической среды лежат в домашней директории (на момент создания этого поста - директория .xfce4). Там можно найти конфигурацию терминала в обычном текстовом файле, а значит задать шрифт автоматически довольно легко. Также для продвинутого использования плагинов, написания своих скриптов и т.д. рекомендую книгу The VimL Primer - Edit Like a Pro with Vim Plugins and Scripts by Benjamin Klein.
Не забывайте, что вы можете в комментариях писать свои предложения, делиться вашими настройками, плагинами, мыслями и так далее. Чем больше мы будем расшаривать полезную информацию, тем будет легче её найти другим. А другие тоже чем-то поделятся, а значит все выиграют.
Удачного кодинга с Vim!