git + vim + tmux, czyli IDE w terminalu

Pomimo, że tytuł wskazuje, że będziemy budować swoje własne IDE, muszę przyznać że nie lubię tego określenia. Integrated Development Enviorment to określenie gigantycznej krowy, która żre tonę trawy i potrafi robić wszystko – mleko, mięso, nowe krowy, pranie, sprzątanie i web development. Bez większego wkładu swojego właściciela.

Tutaj natomiast opiszemy jak ze zrozumieniem używać zbioru lekkich programów do uproszczenia bardzo złożonych problemów, w celu ich rozwiązania.

przedmowa

Na wstępie muszę Cię uprzedzić – mimo że programowanie w konsoli jest skrajnie efektywne i doświadczonym programistom realizacja złożonych zadań zajmuje tu minimum czasu, nie zawsze jest w stanie w pełni zastąpić rzeczy do których pewnie zdążyłeś już przywyknąć. Używając tego poradnika wkraczasz w nowy świat i będziesz musiał do niego przywyknąć, a zajmie to wiele czasu.

Wszystko tutaj dostosowuje się do ciebie, co nie zawsze musi być zaletą. Możesz szybko wszystko skonfigurować pod siebie, a nawet poświęcić wieczór żeby samemu zaprogramować upragnioną funkcję. Ja już ten czas konfiguracji przeżyłem i moim zdaniem – było warto.

Czego potrzebujesz żeby zrozumieć cały tutorial:

  • Czym jest emulator terminala i powłoka.
  • Podstawy obsługi plików konfiguracyjnych w linuxie, np. .bashrc

Moje pliki konfiguracyjne omówionych programów: (POJAWIĄ SIĘ W NAJBLIŻSZYM CZASIE)

  • .zhsrc
  • .tmux.conf
  • .vimrc

Każdy omówiony element zalecam dokładnie przebadać na własną rękę. Ten wpis jest tylko początkiem wielkiej podróży!

Zaczynijmy od najbardziej zewnętrznego elementu całej składanki:

zsh

powłoka

Nie wymieniony wcześniej, acz bardzo ważny element, to odpowiednia powłoka. W moim doświadczeniu zsh posiada przewagę nad bashem przede wszystkim jeśli chodzi o autouzupełnienia i ogólne odczucie użytkowania. Komendy w zsh po prostu swobodnie płyną spod twoich palców. Gorąco polecam zainstalować do niego grml-zsh-config, możemy to zrobić komendą:

wget -O .zshrc http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc

Uwaga! polecenie to nadpisuje twój .zshrc!

Po zainstalowaniu configa TAB zacznie czynić magię:

[zsh podpowiada nazwy paczek dla aptazsh podpowiada nazwy paczek dla apta

Dodatkowo na screenie widać jednego z ciekawych promptów oferowanych przez grml’a. Jeśli chcesz zobaczyć jakie są do wyboru, wpisz w zsh:

prompt -p

A potem dodaj na koniec .zshrc:

prompt nazwa_motywu

tmux

zarządzanie ekranem, sesjami powłoki

Lub też Terminal MUltipleXer. Pozwala nam on wewnątrz jednej sesji terminala zarządzać wieloma instancjami powłoki. Tmux pozwala nam uruchamiać powłoki w sposób podobny w jaki środowiska graficzne pozwalają nam uruchamiać okienka – możemy wysyłać je w tło, przywołać kiedy i gdzie chcemy, kopiować tekst pomiędzy nimi, lub nawet dzielić ekran na części w ten sposób:

[tmux - zsh i ładny pasek z godziną i listą okien na doletmux – zsh i ładny pasek z godziną i listą okien na dole

[tmux - 4 panele z powłoką zsh w jednym oknietmux – 4 panele z powłoką zsh w jednym oknie

[tmux - 3 okna z różnymi programami (dolny pasek)tmux – 3 okna z różnymi programami (dolny pasek)

Użyty na screenach temat kolorów można uzyskać instalując plik konfiguracyjny podany na początku tutoriala.

vim

po prostu edytor tekstu

Ta sekcja została już zrealizowana w tutorialu VIM – treść ponad formą – cz. 1. Odsyłam po więcej informacji na temat dzielenia ekranu, tym razem wewnątrz edytora tekstu 🙂

git

system kontroli wersji

Jest to najnowsze narzędzie w moim arsenale. Git odpłaca nam parę(naście?) godzin poświęconych na zrozumienie systemu kontroli i wyrobienie nawyku:

hack -> index -> commit -> push -> repeat

…w sposób po prostu nieopisywalny.

Jeśli używasz go dobrze, w każdej chwili będziesz mógł zobaczyć kiedy i o jakiej godzinie jak zmodyfikowałeś swój kod. Znajdziesz tam swoje komentarze dlaczego akurat taki sposób implementacji wybrałeś. Na dodatek będziesz mógł swobodnie synchronizować odpowiednią wersję kodu tam gdzie ci to potrzebne (ja używam go żeby wysłać przetestowane szablony wordpressa do użytku na strony), a także równolegle edytować projekt równolegle z innymi programistami.

Git jest bardzo znany (gdyż został stworzony do koordynacji prac nad rozwojem jądra linux), więc osobiście polecam go poznać nie tylko na użytek własny, ale także innych. Wiele projektów może wymagać znajomości tego właśnie narzędzia.

Niestety jest to zbyt skomplikowany program, żebym opisywał go własnoręcznie, tym bardziej że sam nie jestem jeszcze doświadczonym użytkownikiem. Dam wam natomiast namiary na swoje własne poszukiwania wiedzy:

  • http://www.git-scm.com/
  • https://github.com/
  • https://try.github.io/levels/1/challenges/1
  • http://gitreal.codeschool.com/levels/1/

Przede wszystkim trzeba zrozumieć podstawowe terminy i zrozumieć specyficzny “workflow”.

Powodzenia!

pluginy i motywy

bonusy, smaczki, kolorki

OSTRZEŻENIE – zabawa kolorami i motywami w konsoli może być bardzo bolesna. Żeby uzyskać dobry efekt dla

… solarized’a z powerlinem dla vima wewnątrz tmuxa wewnątrz emulatora terminala …

trzeba zapewnić dobrą konfigurację całej tej piramidzie programów. Głównie trzeba celować w obsługę 256 kolorów i specjalnych czcionek.

PORADA – Większość linków z pluginami do vima kieruje do strony vim awesome. Jeśli mamy pathogena, każdy plugin możemy zainstalować klikając w zakładkę pathogen i kopiując komendy do terminala.

po pierwsze – pathogen

Jest to bardzo prosty acz genialny manager pluginów do VIMa. pozwala nam z łatwością instalować, a przede wszystkim usuwać pluginy jednolinijkowymi komendami. Kochasz go, nawet jeśli jeszcze o tym nie wiesz.

profesjonalne statusbary – powerline

Bardzo ciekawa nakładka graficzna. Screeny przemówią najlepiej same za siebie:

[68747470733a2f2f7261772e6769746875622e636f6d2f4c6f6b616c746f672f706f7765726c696e652f646576656c6f702f646f63732f736f757263652f5f7374617469632f696d672f706c2d6d6f64652d6e6f726d616c2e706e67[68747470733a2f2f7261772e6769746875622e636f6d2f4c6f6b616c746f672f706f7765726c696e652f646576656c6f702f646f63732f736f757263652f5f7374617469632f696d672f706c2d6d6f64652d7265706c6163652e706e67

Powerline jest dostępny zarówno jako plugin do vima, oraz jako wielka biblioteka pythona dająca podobny efekt także w tmuxie, zsh oraz paru innych słynnych programach. Przy porządnej konfiguracji nasze środowisko może w pełni przyjąć ten styl. Dodatkowo wszystkie kolory i formaty napisów można do woli zmieniać, dostępne są też wbudowane tematy.

oczooszczędne kolory – solarized

Zestaw ten jest dostępny dla większości programów których używałem, nie tyczy się tylko i wyłącznie terminala. Używam go w ciemnej dla tmuxa oraz vima.

eby

autoformat zajmie się wcięciami

Plugin jest na tyle wymagający, że używa zewnętrznych silników formatujących różne języki programowania. Jeśli chcemy pełnej listy, musimy z powodzeniem wykonać następujący kod:

sudo apt-get install astyle python-autopep8 tidy npm
sudo npm install -g js-beautify
ln -s /usr/bin/nodejs /usr/bin/node

nerdCommenter zakomentuje

Odsyłam do readme.

fugitive

plugin nad pluginy

MIEJSCE NA ODNOŚNIK DO INNEGO WPISU. W BUDOWIE.

podsumowanie

każdy koniec jest nowym początkiem

Gratulacje i podziękowania dla każdego, komu udało się dobrnąć do końca i wyciągnąć jak najwięcej z powyższych podpowiedzi. Mam nadzieję że to czego się nauczyłeś pomoże ci zawładnąć nad swoją pracą i oszczędzić czas wtedy, kiedy będziesz wtedy tego potrzebować.

Na pożegnanie parę screenów z mojej pracy:

[natan@mint: tmux_007
[natan@mint: tmux_009
[natan@mint: tmux_010