Пользуюсь vim
-ом уже не первый год, и всё хотелось превратить его в “настощий IDE” – но как-то было лень и руки не доходили.
Т.е., vim
, конечно, прекрасен и сам по себе, но сейчас начал в очередной раз ковырять Golang, и очень напрягает писать функции в ЭтОмВоТдУрАцКоМкЕмЕлСтАйЛе и постоянно shift-тить, а потому начал искать плагин для автодополнения имён.
Заодно – доустановил себе всяких других плагинов, которые давно хотелось. Собственно об этом и пост – установка плагинов, их настройка, полезные плагины для vim
-а вообще.
Внезапно оказалось, что на Stackoverflow даже существует отдельный форум по vi
/vim
– https://vi.stackexchange.com.
Содержание
Установка плагинов
Как правило – плагины устанавливаются в домашний каталог, в папке ~/.vim
:
[simterm]
$ ll ~/.vim total 0
[/simterm]
Путь к ней определяется в vim
параметром runtimepath
, проверить его можно с помощью :set runtimepath?
:
При необходимости его можно изменить, задав в ~.vimrc
:
set runtimepath^=~/other/path
Плагины могут быть представлены в разных вариантах – просто .vim
файл, .vba
(vimball-файл), который содержит все необходимые файлы плагина, или просто набор файлов для различных директорий внутри каталога ~/.vim/
– /plugin/
, /doc/
, /syntax/
и т.д.
Для установки плагина из .vim
файла – его достаточно загрузить в каталог ~/.vim/plugin
.
Кроме ручной установки – существует несколько менеджеров для плагинов, например – vim-plug
, pathogen
, vundle
, которые упрощают установку плагинов, состоящих из нескольких директорий-файлов и их обновление.
Установка vim-plug
Дальнейшие примеры будут с использование менеджера vim-plug
.
Загружаем файл плагина в каталог .vim/autoload
, что бы бы загружался при запуске vim
:
[simterm]
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
[/simterm]
В ~/.vimrc
добавляем:
call plug#begin('~/.vim/plugged') call plug#end()
Между вызовами begin
и end
– будем добавлять плагины для установки их с помощью vim-plug
.
Цветовая схема
Кроме плагинов – vim
поддерживает разные цветовые схемы.
Просмотреть имещиеся можно с помощью :colorscheme
+пробел+Ctrl+D:
Большая коллекция схем тут>>>.
Для установки темы, например flattened
– добавляем её в .vimrc
:
call plug#begin('~/.vim/plugged') " https://github.com/romainl/flattened Plug 'romainl/flattened' call plug#end()
Перечитываем конфиг – выполняем :source .vimrc
:
И вызываем :PlugInstal
:
(vim поддерживает автодополнение команд по TAB, а обновить плагины, установленные с помощью vim-plug можно с помощью PlugUpdate
)
Добавляем тему в .vimrc
:
colorscheme flattened_dark
Перезапускаем vim
:
Полезные плагины
Плагинов для vim
– вагон и маленькая тележка, можно добавить интересные в комментарии. Тут приведу только несколько.
lightline
Первый плагин – lightline, который меняет вид строки состояния при работе с файлами.
Добавляем Plug 'itchyny/lightline.vim'
:
call plug#begin('~/.vim/plugged') " https://github.com/itchyny/lightline.vim Plug 'itchyny/lightline.vim' call plug#end()
Добавляем в .vimrc
параметр laststatus
со значением 2 – `set laststatus=2`, и showmode
в set noshowmode
:
... " https://github.com/itchyny/lightline.vim Plug 'itchyny/lightline.vim' call plug#end() " display lightline set laststatus=2 set noshowmode ...
Повторяем установку – перечитываем .vimrc
, выполняем :PlugInstal
:
Перезапускаем редактор:
NERDTree
Ещё один плагин, который очень упрощает навигацию по каталогам-файлам, не выходя из vim
.
Добавляем его:
" https://github.com/scrooloose/nerdtree Plug 'scrooloose/nerdtree'
Что бы запускать его каждый раз при запуске vim
– добавляем autocmd vimenter * NERDTree
.
Для вызова-скрытия менюшки по комбинации клавиш – добавляем map <C-n> :NERDTreeToggle<CR>
(или меняем Ctrl+n на свою):
Повторяем установку, как в примерах выше, и вызываем меню по Ctrl+n:
Для переключения из окна файлов-каталогов к редактируемому фйлу – используем Ctrl+w+w, для отображения скрытых файлов – Shitf+i:
Либо, что бы для переключения между окнами пользоваться мышкой – добавляем параметр mouse
– set mouse=a
.
Что бы создать файл из NERDTree – вызываем меню клавишей m
:
Клавишей a
– добавляем новый элемент. Если это файл – то просто указываем имя, если директория – добавляем в конце обратный слеш “/
“:
vim-go
Собственно тот плагин, с которого всё началось – автодополнение имён функций при написании кода на Go.
Проверяем $GOPATH
:
[simterm]
$ go env GOPATH /home/setevoy/go
[/simterm]
Проверяем PATH
в ~/.bashrc
– должен включать в себя GOPATH/bin
:
export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
Устанавливаем плагин vim-go
:
... " https://github.com/fatih/vim-go Plug 'fatih/vim-go' ...
Выполняем :source .vimrc
, :PlugInstall
, и вызываем :GoInstallBinaries
:
Запускаем vim
, и проверяем:
Для вызова автоподстановки имени – используем Ctrl+x и Ctrl+o в INSERT режиме.
Кроме автоподстановки vim-go
умеет и многое другое, см. команды тут>>>.
syntastic
Ещё один полезный плагин – проверка синтаксиса.
Устанавливаем:
... " https://vimawesome.com/plugin/syntastic Plug 'vim-syntastic/syntastic' ...
Рекомендуемые опции для него:
" syntastic opts set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0
Пример его работы с Python, вызов проверки – при сохранении файла или командой :SyntasticCheck
:
Но для Go проверка не выполняется.
Проверяем :SyntasticInfo
при открытом на редктирование файле go
:
[simterm]
Syntastic version: 3.9.0-20 (Vim 801, Linux) Info for filetype: go Global mode: active Filetype go is active The current file will be checked automatically Available checkers: go gofmt golint gometalinter govet Currently enabled checkers: -
[/simterm]
Currently enabled checkers: –
Окей, добавляем в .vimrc
:
let g:syntastic_go_checkers=['golint']
Проверяем – взываем :SyntasticCheck
:
В целом на этом пока всё.
Получившийся .vimrc
можно посмотреть в Github.