Table of Contents

comfyvim

Не буду в тысячный раз описывать преимущества vim’a, их и так все знают, да и на эту тему есть вагон и маленькая тележка статей и видео.

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

shittyvim shittyvim_with_text

Не очень красиво,правда? И это еще не зашла речь про функциональность и какие-либо плюшки. Уже внешний вид может отпугнуть потенциального пользователя, ведь он хочет удобную и красивую рабочую среду, а не просто кусок терминала с текстом.

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

vimplug go brr

Пишем код красиво!

Ставить плагины очень просто. Давайте поставим какую-нибудь тему,а также бар с полезной информацией. Всё в том же .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

Вот что мы получаем:

beauty

Красота!

Кодировка

Кракозябры нам не нужны,потому, не забудем про настройку кодировок:

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'

autocomplete

Довольно интуитивно, как и в других текстовых редакторах и IDEA.

Markdown Preview

Ставим плагин:

Plug 'suan/vim-instant-markdown', {'for': 'markdown'}

На этом собственно всё. Достаточно будет открыть файлик в формате .md и сразу же откроется окно браузера c отрендеренным контентом на localhost:8000

markdown

Однако же вы можете указать специфичные настройки, где 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, получаем следующий сетап:

wow vim