Masaüstü olarak genelde Windows kullanıyorum. Go geliştirme ortamım için LiteIDE , terminal için Cmder ve bilimum go tool’u kullanarak kendi çapımda bir confort zone oluşturdum. (Alternatif Visual Studio Code + delve + vscode-go + Cmder)
Geçtiğimiz aylarda MaestroPanel’in Linux versiyonundan mütevellit X ortamı olamayan minimal bir Debian kullanmaya başlamıştım, e tabi Go ile geliştirdiğim için Windows’daki kadar rahat bir ortam yaratmak için biraz uğraştım. Sonuçta aşağıda detaylarını verdiğim bir yapı çıktı.
Gereksinimler
Minimal kurulmuş güncel bir Debian (8.7)
Son paket güncellemeleri yapılmış.
Aşağıdaki paketlerin kurulum olması gerekiyor.
apt-get install git curl wget build-essential liblua5.1-dev luajit libluajit-5.1-dev libperl-dev python-dev ruby-dev exuberant-ctags sudo
Go
Konu Go olduğu için burası önemli.
Debian’da Go paketine bakmak hiç aklıma gelmedi, muhtemelen son versiyon geliyordur.
Direkt manual kurulumdan aşağıdaki şekilde ilerleyebilirsiniz.
wget https://storage.googleapis.com/golang/go1.7.4.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.7.4.linux-amd64.tar.gz
sistem değişkenini tanımlayalım.
export PATH=$PATH:/usr/local/go/bin
Çalışma alanımızı tanımlayalım. tool’lar, paketler buraya kurulacak varsayılan. (1.8’den sonra kalkacak mış ama)
export GOPATH=$HOME/projects
“go version” dediğinizde düzgün cevap geldiyse mesele yok.
Not: Export değişkenlerin bash’deki ~/.profile dosyasınızın için ekleyin ki tekrar login olduğunuzda çalışsın.
Vim
“apt-get install vim” dediğinizde vim 7 geliyor fakat bana lazım olan Lua desteği ile Vim dolayısıyla source’den derleyeceğiz. Neden Lua desteği? derseniz, Vim’in bazı plug-in’leri Lua’ya gereksinim duyuyor.
Klasörü oluşturun
mkdir /usr/include/lua5.1/include
projeyi clone’layalım
git clone https://github.com/vim/vim --depth 1
“-depth 1″ önemli revision’u kısıtlamak için.
source’e geçelim
cd vim/src
Ortamı temizleyelim.
make distclean
Vim’i –with-lua-prefix ve –with-luajit ile konfigure edelim. Burada ruby, perl, python gibi istemediğiniz entegrasyonlar varsa elemine edebilirsiniz. Benim config aşağıdaki gibi.
./configure --with-features=huge \ --enable-largefile \ --enable-perlinterp \ --enable-luainterp \ --with-luajit \ --enable-fail-if-missing \ --with-lua-prefix=/usr/include/lua5.1 \ --enable-cscope
Kutsal make’i çalıştıralım.
make
install edelim
make install
işlem bittikten sonra “vim” komutunu çalıştırdığınızda editor’ün açılması lazım. Nereye kurulduğunu merak ediyorsanız “whereis vim”
Not: Desktop kullanıyorsanız Neovim üzerinden ilerlemeniz daha mantıklı. Bu senaryom X ortamı olmayan sistem için optimize edildi. Tabi X ortamında da çalışır babalar gibi.
Pathogen
Pathogen vim için bir plug-in manager. Çok basit olarak plug-in dosyasını ilgili klasöre kopyaladığınız zaman direkt sisteme entegre ediyor. Plug-in manager seçmek için çok uğraşmayın patho. iyi.
Kurulum için aşağıdaki komutları uygulayın.
mkdir -p ~/.vim/autoload ~/.vim/bundle curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
~/.vimrc dosyasına aşağıdaki satırı ekleyelim.
call pathogen#infect()
bu aşamadan sonra vim’e kopyaladığınız her plug-in otomatik olarak yüklenecektir.
Vim-Go
Geldik esas oğlana. Vim için Go plug-in’i vim-go.
Biliyorsunuz vim-go‘yu Fatih Arslan yazıyor. Fatih global Go community’sinde çok aktif gerçekten. Go ile ilgileniyorsanız fatih’i örnek alın, takip edin.
Kurulum için aşağıdaki adımları uygulayınç
cd ~/.vim/bundle git clone https://github.com/fatih/vim-go.git
~/.vimrc dosyamızı açıp aşaıdaki direktifleri giriyoruz.
filetype plugin on " Highlight let g:go_disable_autoinstall = 0 let g:go_highlight_functions = 1 let g:go_highlight_methods = 1 let g:go_highlight_structs = 1 let g:go_highlight_operators = 1 let g:go_highlight_build_constraints = 1
Bu adımı bitirdikten sonra Vim’i açıp aşağıdaki komutu çalıştırıyoruz.
:GoInstallBinaries
:GoInstallBinaries Vim-go’nun çalışması için gerekli olan gocode, godef, goimports v.b. araçları (Eskiden teker teker kurmanız gerekiyordu.) otomatik olarak kuruyor.
Neocomplete
Autocomplete elimiz ayağımız. Neocomplete vim’de bunu sağlıyor. Aşağıdaki adımları takip edip aktif edelim.
cd ~/.vim/bundle git clone https://github.com/Shougo/neocomplete.vim.git
~/.vimrc dosyasını açıp aşağıdaki satırı ekleyelim
let g:neocomplete#enable_at_startup = 1
Test için bir go dosyası açıp test edebilirsiniz. Manual çalıştırmak için :NeoCompleteEnable komutu yeterli. Bunu bir map ile tuşa bağlamanız yeğdir.
Tagbar
Üzerinde çalıştığınız dosyaya tam hakimiyet için gerekli olan bir eklenti. Kod dosyası üzerinde hızlı hareket etmenizi sağlıyor. Alışırsanız çok hızlanıyorsunuz.
Kurulum için aşağıdaki adımları uygulayın.
go get -u github.com/jstemmer/gotags cp ~/projects/bin/gotags /usr/local/go/bin/
~/.vimrc dosyasını açın ve aşağıdaki değeri girin.
let g:tagbar_type_go = { \ 'ctagstype' : 'go', \ 'kinds' : [ \ 'p:package', \ 'i:imports:1', \ 'c:constants', \ 'v:variables', \ 't:types', \ 'n:interfaces', \ 'w:fields', \ 'e:embedded', \ 'm:methods', \ 'r:constructor', \ 'f:functions' \ ], \ 'sro' : '.', \ 'kind2scope' : { \ 't' : 'ctype', \ 'n' : 'ntype' \ }, \ 'scope2kind' : { \ 'ctype' : 't', \ 'ntype' : 'n' \ }, \ 'ctagsbin' : 'gotags', \ 'ctagsargs' : '-sort -silent' \ }
ardından,
cd ~/.vim/bundle git clone https://github.com/majutsushi/tagbar.git
test için vim’i açıp :TagbarToggle komutunu çalıştırdığınıza sağ’a açılır.
Not: Bu eklenti debian’ın “exuberant-ctags” paketini kullanır.
Nerdtree
Vim üzerinde dosya gezgini. Aslında ilk başlarda default olan :Explore’ı kullanıyordum fakat Nerdtree’nin bookmark, open split gibi kullanışlı özelliklerini keşfettikten sonra takım çantasına ilave ettim.
Aşağıdaki şekilde kuralım.
cd ~/.vim/bundle git clone https://github.com/scrooloose/nerdtree.git
kopyalama bittikten sonra vim’i açıp :NERDTreeToggle demeniz yeterli. Bunu ~/.vimrc dosyasında bir kısayol tuşuna map yapmanızı öneririm.
Vim-airline
Vim’de status bar için gerekli olan eklenti. Text editorlerde default olur bilirsiniz, hangi satırda hangi column’dasınız, hangi moddasınız gibi bilgileri düzgün bir şekilde veriyor.
Aşağıdaki şekilde kuralım.
cd ~/.vim/bundle git clone https://github.com/bling/vim-airline
status bar’ı görüntülemek için aşağıdaki komutu çalıştırın 1 kapatır 2 açar.
:set laststatus=2
vim-airline’ı temalarıda mevcut. İyi bir tema satusbar için farkındalık yaratıyor. Temaları yüklemek için aşağıdaki komutu çalıştırın.
cd ~/.vim/bundle/vim-airline-themes git clone https://github.com/vim-airline/vim-airline-themes
Vim’i açtıktan sonra ise :AirlineTheme komutu ile tema belirleyebilirsiniz. Örneğin simple teması için
:AirlineTheme simple
Bunu kalıcı olarak ~/.vimrc dosyasına tanımlamak lazım tabi. Solarized kullandığımızdan bunun dark teması aşağıdaki gibi etkin oluyor.
let g:airline_theme='solarized'
tüm temalar için tıklayın.
Syntastic
Bu plug-in baya şenlendiriyor ortamı. Tabi X ortamında popup falan açıyor ama terminal ortamında bir ton uyarı veren status bar’ınız oluyor. Kod asistanı diyelim.
Aşağıdaki şekilde kurulumu gerçekleştirelim.
cd ~/.vim/bundle git clone https://github.com/scrooloose/syntastic
Hemen arkasından ~/vimrc dosyasını açıp aşağıdaki konfigürasyonu ekleyin.
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
Test için “:SyntasticCheck go” komutunu vererek o sayfadaki kod’da nerelerde hata var görebilirsiniz.
Örneğin aşağıda bu komutu çalıştırdıktan sonra gelen çıktı var. Hemen toml paketinin sistemde kurulu olmadığını görebiliyorsunuz.
:SyntasticInfo komutu ile plug-in’in düzgün çalışıp, çalışmadığını kontrol edebilirsiniz. Çıktı aşağıdaki gibi gelir.
Indent Guides
Kod hiyerarşisini diket bir barla gösteren eklenti. Kullanışlı oluyor, özellikle dikey ekran kullanıyorsanız kolay kerteriz alıyorsunuz :)
Aşağıdaki şekilde kuralım
cd ~/.vim/bundle git clone https://github.com/nathanaelkane/vim-indent-guides
Bar biraz kaba oluyor ama alışıyorsunuz, ip gibi inen bir şey istiyorum derseniz alternatif olarak Indentline var.
Tema
Ben X ortamında light kullanıyorum yani arka planı beyaz veya hafif gri renkler ve pastel renkli fontlar.
Dark temaları sevmiyorum. Gözüm daha çabuk yoruluyor. Ayrıca uzun süre dark’a bakıp sonra bir web sayfasının arka planına bakınca bana büyük işkence oluyor.
Vim’de modern bir tema isterseniz Solarized güzel. Denemek için aşağıdaki komutları uygulayın.
mkdir ~/.vim/colors git clone git://github.com/altercation/vim-colors-solarized.git
Ardından ~/.vimrc dosyasına aşağıdaki satırları ekleyin.
syntax enable set background=dark colorscheme solarized
Alternatif olarak gruvbox tavsiyemdir. Dark’ı çok kötü ama Ligh’i iyi.
Aşağıdaki şekilde kurabilirsiniz.
cd ~/.vim/bundle/gruvbox git clone https://github.com/morhetz/gruvbox.git
Gruvbox’ın, airline temasını da var. Aşağıdaki ekran görüntüsü Gruvbox’ın dark teması.
Diğer
Bu işin sonu yok. Development sırasında ihtiyaç bitmiyor. Aşağıdakileri de opsiyonel olarak sisteme ekleyebilirsiniz.
fzf – Fuzzy Finder
cd ~/.vim/bundle git clone https://github.com/junegunn/fzf
command-t – Fast file navigation for VIM
cd ~/.vim/bundle git clone https://github.com/wincent/command-t
tlib – Vim için yardımcı araçlar
cd ~/.vim/bundle git clone https://github.com/tomtom/tlib_vim
Ctrlp – Fuzzy file, buffer, mru, tag, etc finder.
cd ~/.vim/bundle git clone https://github.com/ctrlpvim/ctrlp.vim
Vimrc Dosyam
Kendime Not: Vimrc dosyamı düzenleyip buraya koy
Script
Kendime Not: Bu ortamı otomatik kuran bir script yaz artık.
Meraktan soruyorum neden vagrant box kurup alıştığınız ortamda devam etmediniz?
“comfort zone” olayına dikkat ederim hep dışında kalmak yeğdir ;)
Çok teşekkürler yazı için
selam vimrc dosyanızı paylaşabilir misiniz :)
yazı çok güzel olmuş elinize sağlık