Используем VIM как редактор golang

Краткая инструкция по настройке VIM в качестве редактора golang-файлов. Не претендует на полноту изложения, но может стать отправной точкой на пути к среде разработки своей мечты. В одну статью явно не вмещается, поэтому не буду и стараться. Сначала рассмотрим установку основных плагинов. потом добавим удобства в работе дополнительными плагинами и настройками, затем остановимся на каких-то интересных моментах подробнее.

Устанавливаем VIM

В интернете можно найти массу инструкций по установке VIM на разные операционные системы. Нет смысла повторяться. Для меня вся установка уместилась в одну консольную команду.

$ sudo apt-get install vim vim-gtk

Если вы пользователь Ubuntu 15.04, то вам, скорее всего, тоже ничего больше не понадобится.

Рекомендую сразу же добавить в VIM какую-нибудь популярную систему управления плагинами, т.к. на первых порах настривать многочисленные плагины придётся часто. Мне нравится Vundle.

Сначала клонируем репозиторий Vundle в папку с настройками VIM.

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 

Затем создаём конфигурационный файл vim

$ touch ~/.vimrc

И добавляем в него следующие строки:

set nocompatible
filetype off

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

Plugin 'VundleVim/Vundle.vim'

call vundle#end() 
           
filetype plugin indent on

Выполняем

$ vim +PluginInstall +qall

Всё, Vundle установлен. Теперь каждый новый плагин нужно будет прописывать в файле настроек перед вызовом vundle#end. А после повторного выполнения PluginInstall новые плагины из файла конфигурации будут установлены в систему.

Настраиваем цвета редактора

Для VIM уже создано бесчисленное множество цветовых схем. Очень странно, если вам не удастся подобрать из всего предложенного многообразия что-то на свой вкус.

Скачиваем какой-нибудь готовый набор цветовых схем. Например, отсюда:

$ git clone https://github.com/flazz/vim-colorschemes.git

Копируем содержимое папки colors из клонированного репозитория в папку ~/.vim/colors. После этого, добавляем в файл .vimrc строку

colorscheme codeschool

Всесто codeschool можно вписать название любой понравившейся схемы. Название темы соотвествует названию файла из папки colors. Перезапускаем VIM - радуемся результату или идём на запись к окулисту. Существует плагин, позволяющий изменять цветовую схему не перегружая VIM, но реального применения я ему так и не нашел. Всё-таки настройка цветовой схемы - операция раховая. Настроил и забыл.

Устанавливаем плагин поддержки golang

Собственно, всё, что нужно, установить плагин vim-go. В .vimrc добавляем строку

Plugin 'fatih/vim-go'

Выполняем команду :PluginInstall. Затем, :GoInstallBinaries. Внимательно читаем результат выполнения этой команды. Скорее всего, для корректной работы плагина придется доставить на компьютер часть стандартных инструментов Go.

Со всеми функциями плагина знакомимся в описании проекта на github’е.

Управляем файлами, не выходя из редактора

Для того, чтобы постоянно не переключаться в какой-либо файловый менеджер для открытия или создания файла, устанавливаем плагин NERDTree. Этот плагин отображает в левой части окна VIM дерево каталогов с возможностью удобной навигации, открытия, создания и удаления файлов.

Выполняем уже привычную операцию. Добавляем в .vimrc строку:

Plugin 'scrooloose/nerdtree'

Добавим также открытие дерева каталогов в “автозапуск” VIM.

autocmd vimenter * NERDTree " Открывать дерево каталогов при запуске VIM

Выполняем команду PluginInstall. Чтобы ознакомиться с командами NERDTree достаточно в его окне нажать ?. В открывшейся справке можно прочитать об основных функциях и горячих клавишах. Для закрытия справки нажимаем ? повторно.

Особое внимание стоит обратить на команду m. Из описания непонятно, что за меню будет вызвано. Но именно из этого меню происходит добавление и удаление файлов и папок.

Небольшой тюнинг окна редактирования

Всесто описания каждой опции приведу небольшой кусок конфигурационного файла с комментариями.

set number " показывать номера строк в редакторе
set colorcolumn=120 " вертикальная линия после 120 символов
set tabstop=4 " ширина табуляции
set softtabstop=4 " ширина таба при использовании всесто него пробелов

Автодополнение кода

Тяжело представить современную IDE без функции автодополнения кода. Конечно, нам тоже хочется быть современными. Устанавливаем плагин neocomplete.vim и сразу добавляем его в автозагрузку.

Plugin 'Shougo/neocomplete'
...
" neocomplete settings
let g:neocomplete#enable_at_startup = 1

Рекомендую внимательно прочитать на странице плагина требования к версии VIM. Есть вариант, что редактор придётся обновить.

VIM-Golang scr.1

Настройки neocomplete - тема отдельной статьи. Пока что оставим всё по умолчанию. Единственное, сразу отключим назойливое окошко в верхней части экрана. Его добавляет не neocomplete, а VIM. В настройках редактора есть “режим завершения”, где указано сразу два режима - menu и preview. Menu оставляем, preview отключаем.

set completeopt-=preview

Горячие клавиши

Есть смысл настроить дополнительные горячие клавиши для наиболее часто используемых операций, типа сохранения файла, копирования, отмены действия и т.п.

" CTRL-s - сохранить файл
noremap <silent> <C-S> :update<CR>
vnoremap <silent> <C-S> <C-C>:update<CR>
inoremap <silent> <C-S> <C-O>:update<CR>

" CTRL-F4 - закрыть окно
noremap <C-F4> <C-w>c
inoremap <C-F4> <C-o><C-w>c
cnoremap <C-F4> <C-c><C-w>
onoremap <C-F4> <C-c><C-w>c

" SHIFT-Del - "вырезание" в системный буфер
vnoremap <S-Del> "+x
" CTRL-Insert - копирование в системный буфер
vnoremap <C-Insert> "+y
" SHIFT-Insert - вставка из системного буфера
map <S-Insert>  "+gP
cmap <S-Insert> <C-R>+

" CTRL-z - отмена действия
noremap <C-z> u
inoremap <C-z> <C-O>u
" CTRL-y - вернуть отменённое назад
noremap <C-y> <C-R>
inoremap <C-y> <C-O><C-R>

" CTRL-d - дублирование текущей строки
imap <C-d> <esc>yypi

Результат сегодняшней работы

Тем, что мы собрали, уже можно пользоваться для программирования на go, но до совершенства, конечно, ещё очень далеко. Хочется быстрой навигации по коду, закладок, отладчика, проверки синтаксиса и т.д. и т.п. А VIM хорош как раз тем, что все эти желания осуществимы. К их осуществлению вернемся в следующих заметках. А после сегоднешней настройки у нас получилось примерно следующее.

VIM-Golang scr.2

Comments

© 2016. All rights reserved.