Vim в массы
Table of Contents
Не буду в тысячный раз описывать преимущества vim’a, их и так все знают, да и на эту тему есть вагон и маленькая тележка статей и видео.
Предположим,что вы всё же решились. И вот, наконец, вы открыли терминал, через пакетный менеджер провели установку, открывайте программу и видите примерно следующую картину:
Не очень красиво,правда? И это еще не зашла речь про функциональность и какие-либо плюшки. Уже внешний вид может отпугнуть потенциального пользователя, ведь он хочет удобную и красивую рабочую среду, а не просто кусок терминала с текстом.
Usecase
Давайте сразу решим что мы хотим от vim’a. На мой вгляд, большинству необходима адекватная подсветка синтаксиса и автокомплит.Также многие пишут тексты в формате Markdown, а для этого желательно иметь настроенный предпросмотр отрендеренного контента.
Как там с плагинами?
Для vim существует огромное количество плагинов на любой вкус и цвет.
Ставить их можно как вручную(плагины представляют из себя,как правило, файлик vim-script), так и при помощи специальных утилит(менеджеров). Их для vi improved так же предостаточно.
Для себя я выбрал vim-plug. Так давайте его установим!
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
Либо же можно сразу прописать автозагрузку менеджера в конфиг.
vim .vimrc
Прописываем следующее:
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
Пишем код красиво!
Ставить плагины очень просто. Давайте поставим какую-нибудь тему,а также бар с полезной информацией. Всё в том же .vimrc пишем следующее:
call plug#begin('~/.vim/plugged')
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'w0ng/vim-hybrid'
call plug#end()
Между первой и последней строчкой прописываются плагины,которыми мы хотим пользоваться.
Также укажем vim’у использовать 256 цветов,если ваш эмулятор терминала поддерживает это.
set t_Co=256
Также можно указать собственно тему и бэкграунд:
set background=dark
colorscheme hybrid
Тема для бара:
let g:airline_theme='bubblegum'
Если ваша душа изволит прозрачности:
hi Normal guibg=NONE ctermbg=NONE
Вот что мы получаем:
Красота!
Кодировка
Кракозябры нам не нужны,потому, не забудем про настройку кодировок:
set encoding=utf-8
set fileencodings=utf8,cp1251
Файловый браузер
Как правило ваш проект состоит из нескольких файлов и директорий. И чтобы не городить костыли, стоит в боковой панели разместить файловый браузер. На данный момент самым популярным и наверное самым лучшим является NerdTree.
Через vim-plug устанавливаем:
Plug 'preservim/nerdtree'
Далее биндим шорткаты: по Ctrl+N открываем, по Ctrl+T закрываем, по Ctrl+F раскрываем директории. Перемещаемся либо стрелочками(что конечно же не ТруЪ), либо стандартными вимовскими J и K.
nnoremap <leader>n :NERDTreeFocus<CR>
nnoremap <C-n> :NERDTree<CR>
nnoremap <C-t> :NERDTreeToggle<CR>
nnoremap <C-f> :NERDTreeFind<CR>
Автозапуск NerdTree, чтобы не запускать его каждый раз вручную:
let g:neocomplcache_enable_at_startup = 1
Также давайте настроим детект типа файла:
filetype plugin on
Подсветка синтаксиса
Лично я пишу на python и golang, потому поставил следующие пакеты:
Plug 'hdima/python-syntax'
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
Настроим табы. Вы же не используете пробелы,верно?
set showtabline=1
Автокомплит
Достаточно одного плагина:
Plug 'shougo/neocomplcache.vim'
Довольно интуитивно, как и в других текстовых редакторах и IDEA.
Markdown Preview
Ставим плагин:
Plug 'suan/vim-instant-markdown', {'for': 'markdown'}
На этом собственно всё. Достаточно будет открыть файлик в формате .md и сразу же откроется окно браузера c отрендеренным контентом на localhost:8000
Однако же вы можете указать специфичные настройки, где 0 - запретить, 1 - разрешить:
--------------Указываем порт на локалхосте----------
let g:instant_markdown_port = </port>
--------------Разрешаем/запрещаем автоскролл--------
let g:instant_markdown_autoscroll = 0/1
--------------Указываем куда писать логи------------
let g:instant_markdown_logfile = '/path/to/logfile'
--------------Разрешаем/запрещаем статические файлы-
let g:instant_markdown_allow_external_content = 0/1
В одном из режимов vim пищит, а в другом — всё портит
Vim имеет противную особенность пищать,особенно в TTY.
Исправим это:
set t_vb=
set visualbell t_vb=
Последний шаг
Если вы не прописали автозагрузку vim-plug, то установите плагины командой:
:PlugInstall
После перезагрузки vim, получаем следующий сетап: